介绍
Grove 活动团队需要一份可靠样例,说明访客如何打开 Night Garden Walk 的详情。你将使用真实录制的 HTTP 流量找到目标访问,为请求配对响应,并准备一份其他分析人员可以重新打开的抓包文件。
你应已能够打开文件、输入简单终端命令和应用基本 Wireshark 显示过滤器。无需编程。本实验始终使用 Desktop;其中的终端、Wireshark 和文本编辑器共用这个训练容器。这些是受控录制数据,并非实时访客流量。本实验独立初始化,预计时长包含阅读和普通操作错误。
隔离一次完整访问
本步骤将找到 Cedar 的正常访问并导出完整会话。从 Desktop 开始,在左下角桌面菜单打开 Applications → Terminal Emulator。准备好的抓包是输入文件,请保持不变。执行以下命令启动 Wireshark 并打开它。Wireshark 运行时终端仍被占用;后续在 Wireshark 窗口中操作。
wireshark /home/labex/project/event-page/input/casebook.pcapng
使用标题栏的最大化按钮放大窗口。顶部窗格列出数据包,中间窗格解释所选数据包,底部窗格显示字节。这个文件记录了对本地活动服务的三次独立访问。服务地址为 127.0.0.1;客户端地址是不同的本地测试身份,并非物理机器。
| 访问 | 客户端 | 本实验中的用途 |
|---|---|---|
| cedar | 127.0.0.2 | 需要交接的正常访问 |
| willow | 127.0.0.3 | 其他访客,不在本次交接范围内 |
| birch | 127.0.0.4 | 其他访客,不在本次交接范围内 |
点击数据包列表上方的显示过滤栏,输入以下表达式并按 Enter。ip.addr 匹配任一端点,因此保留两个方向。== 表示相等。显示过滤器只改变视图,不会从输入文件删除数据包。
ip.addr == 127.0.0.2
打开 Statistics → Conversations,选择 TCP 标签页,必要时启用 Limit to display filter。TCP 会话包含双方地址和双方端口。其 Duration 包含空闲时间,因此不能衡量单个 HTTP 响应。确认选中的会话连接 Cedar 与活动服务,然后关闭对话框。
选择 Info 以 GET 开头的请求包。HTTP 是应用使用的请求响应协议。URI 标识请求的资源:这里 view 的值选择 list、details 或 programme。右键点击请求,选择 Follow → TCP Stream。阅读会话两个方向的内容,必要时滚动。Cedar 在同一连接上请求了两次详情。因此,相同 URI 和流不能唯一确定一个请求。
使用 Close 关闭 Follow 窗口。Wireshark 会保留一个流过滤器。保持它:这个视图包含连接的 TCP 分段,而不只是标记为 HTTP 的包。如果误选了其他访问,将过滤器替换为 Cedar 地址表达式,再对 Cedar 请求执行 Follow。
选择 File → Export Specified Packets。保存为 /home/labex/project/event-page/output/evidence.pcapng,格式选 pcapng,数据包范围选 Displayed,并在显示集合中选 All packets。与输入文件分开保存。输出名称错误时,按所需名称重新导出。不要使用 Export Packet Dissections,它生成摘要而非可复用的抓包。

保存前,核对对话框中的 Displayed 列和 All packets 选项。示例显示 Cedar 的 30 个包。
选择 File → Open,打开新的 evidence.pcapng。在显示过滤栏应用 http。预期有四个 GET 请求和四个 HTTP 响应;既要核对数量,也要检查内容。一个响应可能跨越多个 TCP 分段。即使原窗口能显示完整响应,仅导出标记为 HTTP 的行也可能丢失前面的分段。重新打开导出文件可以发现这种错误。
如果响应缺失或无法重组,重新打开原始输入,恢复 Cedar 地址过滤器,再导出完整连接。不要通过在其他文件中输入文字补齐缺失的响应内容。
为请求找到实际对应的响应
本步骤将区分两次详情请求,并记录全部四组正确配对。从 Desktop 开始,保持 Wireshark 打开。使用 File → Open 返回 /home/labex/project/event-page/input/casebook.pcapng。下表所有帧号均引用原始输入,而非重新编号后的导出文件。
使用 && 组合两个条件,表示两者都必须匹配。http 选择已解码的 HTTP 消息。
ip.addr == 127.0.0.2 && http
选择第一个 GET。在中间窗格点击三角形展开 Hypertext Transfer Protocol,也可以选中该行并按 Right Arrow。阅读 URI 和 X-Request 请求头。这个合成应用为每个请求分配独立标识,例如 cedar-01。
找到 Response in frame。右键该字段,选择 Go to Linked Packet。响应 HTTP 部分的 Request in frame 指回原请求。两个方向的链接都很重要:流中的最后一个响应并不一定对应第一个请求。
展开响应的 JavaScript Object Notation → Object → Member: title 部分,必要时滚动中间窗格;也可以使用 Follow → TCP Stream 阅读完整应用会话。活动标题为 Night Garden Walk。JSON 表示带标签的应用值;title 是标签,后面的引号内容是值。读取实际值,不能只看 200 响应码。如果 JSON 部分不在可见范围,滚动中间窗格。
对每个 Cedar 请求重复操作,包括两次详情请求。在这份固定录制中,应得到以下配对:
| 输入中的请求帧 | 对应响应 | 活动标题 |
|---|---|---|
| 4 | 10 | Night Garden Walk |
| 12 | 16 | Night Garden Walk |
| 17 | 21 | Night Garden Walk |
| 23 | 27 | Night Garden Walk |
为了方便比较响应链接,在请求的 Response in frame 上右键并选择 Apply as Column。响应行的这一列为空是正常的,因为它们具有 Request in frame 字段。这列只是辅助,不是必须的配置设置。用它核对重复的详情请求指向不同响应。

读取左侧原始帧号及旁边的 Response in frame。两次详情请求分别指向帧 16 和 27。
在图形文本编辑器中创建简短交接表。再次打开 Applications → Terminal Emulator,在 Desktop 中创建另一个终端。mousepad 启动已提供的文本编辑器;绝对路径指定输出文件。
mousepad /home/labex/project/event-page/output/pairs.csv
输入以下完整 CSV。CSV 使用逗号分隔字段,每行一条记录。表头给出列名。这些标题不含逗号,因此无需额外引号。
request_frame,response_frame,title
4,10,Night Garden Walk
12,16,Night Garden Walk
17,21,Night Garden Walk
23,27,Night Garden Walk
按 Ctrl+S 保存。如果出现保存对话框,确认准确的输出目录和 pairs.csv 文件名。通过窗口或底部面板按钮返回 Wireshark。将每一行 CSV 与输入中的实际请求响应链接比较。表格记录调查过程,但不能代替完整的 evidence.pcapng。
总结
你使用 Wireshark 会话统计和 Follow TCP Stream 隔离了一次访问,重新打开完整导出的抓包,并为重复 HTTP 请求找到了各自的响应。原始输入保持不变;导出的数据包和简短配对表可以独立核对。


