介绍
Lantern Room 举办小型纸灯笼工作坊。其预约应用使用 HTTPS,因此普通抓包显示的是加密流量,而不是预约详情。你已获准分析这个受控训练服务及其合成访客。先阅读正常参考,再发起并抓取一次自己的新访问。
你将交付真实的 PCAPNG 抓包文件和单独的 TLS 密钥日志,供另一位获授权的分析人员重新打开。你需要掌握基本 Wireshark 导航、显示过滤器、简单终端输入和路径;无需编程或证书管理经验。使用 Desktop 中的 Terminal Emulator 和 Wireshark 窗口。本实验独立准备文件和本地服务;时长是作者估计,包含阅读与普通错误处理。
让正常参考记录可读
本步骤将解码一次正常预约,并认识能够确定结果的字段。
从 Desktop 开始,打开左下角 Applications → Terminal Emulator。运行以下完整命令;Wireshark 关闭前,这个终端会一直被占用。
wireshark -C Booking /home/labex/project/booking/input/casebook.pcapng
-C Booking 选择已准备、初始为空的 Booking 配置。配置保存此分析窗口的设置。用标题栏的最大化按钮放大 Wireshark。输入抓包和 input/casebook.keys 都是只读原件;请把成果保存在 output/。
HTTPS 是通过 TLS 传输的 HTTP,TLS 负责加密应用会话。TCP 在端点之间承载 TLS 记录。本记录使用 TLS 1.3 和 HTTP/1.1。本地服务地址为 127.0.0.1:18443;Hazel 的本地测试身份是 127.0.0.21。这些地址共用一个训练容器,不代表不同的物理机器。
在显示过滤栏输入 http,按 Enter。起初没有已解码的 HTTP 行。清空过滤栏,查看 TLS 握手和加密的 Application Data。握手建立会话,Application Data 承载预约消息。仅有抓包并不能得到它们的明文。
TLS 密钥日志包含获授权客户端为特定会话主动记录的秘密。它不是密码清单,也不是服务器证书。服务器证书或 RSA 私钥不能替代这些 TLS 1.3 会话秘密。在实际工作中,把抓包与密钥日志视为敏感材料,只在获授权的分析范围内共享。本练习中的身份、预约与秘密均属于本地实验。
打开 Edit → Preferences。展开 Protocols,点击协议列表并输入 tls,定位 TLS。在 (Pre)-Master-Secret log filename 中输入以下绝对路径。保持 Reassemble TLS records spanning multiple TCP segments 和 Reassemble TLS Application Data spanning multiple TLS records 启用,然后点击 OK。
/home/labex/project/booking/input/casebook.keys
再次应用 http 显示过滤器。应看到一个 POST 请求和一个 HTTP 响应。如果列表仍为空,清空过滤器,核对文件名拼写并返回 TLS 首选项。错误或不相关的密钥日志会导致 Application Data 无法解码;这不代表抓包中没有请求。
选择 POST 请求。HTTP 是请求与响应协议:POST 提交数据,/api/bookings 是标识预约资源的 URI。右击请求,选择 Follow → TLS Stream。Follow TLS Stream 显示解密后的应用字节;Follow TCP Stream 仍显示加密传输字节。阅读请求和响应,必要时滚动。不要根据文字颜色推断发送方,应阅读请求行与响应状态行。
请求正文为 JSON,即用大括号包围的一组命名值。阅读 visitor、attempt、workshop 和 slot。响应回显这些值,并增加 accepted、reason 和 confirmation。Hazel 的正常预约为 accepted: true、reason: "confirmed",确认码属于 hazel-01。JSON 的 true 是布尔值;引号包围文本,null 表示没有值。
HTTP/1.1 200 OK 表示服务器处理了此 HTTP 请求。预约的应用结果仍须由 JSON 字段确定。下一实验将用到这个区别。JSON 后的大段空白是有意添加的训练填充,使真实响应跨越多个 TLS/TCP 分段;它不是另一次预约。

阅读响应回显的 attempt 以及 accepted、reason、confirmation 字段。仅凭 HTTP 状态不足以判断结果。
点击 Close 关闭 Follow 窗口。Wireshark 会留下 tcp.stream eq ... 过滤器,显示选定的整条 TCP 连接,包括握手和分段。显示过滤器只改变视图。关闭 Wireshark 主窗口,以保存配置设置并释放终端。当 Booking 配置能够解码完整参考请求与响应时,参考设置就完成了。
抓取并重新打开你自己的访问
本步骤将抓取一次新的获授权访问,并独立重新打开实际保存的数据包。
从 Desktop 开始,使用关闭参考窗口后恢复提示符的 Terminal Emulator。参考记录的密钥日志不能解锁另一条 TLS 会话。你将抓取新访问,并把它自己的秘密与抓包保存在一起。
运行已准备的抓包启动器:
python3 /opt/labex/booking/capture.py
它在独立的 BookingLive 配置中启动真实 Wireshark 实时抓包界面。固定的数据包输入只抓取回环接口上课程端口 18443 的 TCP 流量,限制为 15 分钟和 4 MB。它使用管道,即向 Wireshark 输入实时字节的通道,并非回放。它不会授予通用抓包权限,也不会改变登录设置。保持此终端和 Wireshark 打开。发送流量前,等待终端出现 Live packet feed ready,且抓包窗口处于活动状态。
通过 Applications → Terminal Emulator 打开第二个 Terminal Emulator。底部面板可以切换两个终端和 Wireshark。在新终端运行获授权客户端:
python3 /opt/labex/booking/booking.py client
已准备的客户端会验证本地服务的证书和主机名,发送一个真实预约请求,并把新会话秘密写入 /home/labex/project/booking/output/live.keys。它会打印访问完成,但不打印答案。每次运行产生的全新 attempt 值都不同。your-visit 客户端使用 127.0.0.26。
通过底部面板返回 Wireshark。等数据包实际可见,包括最后一个结束 TCP 连接的数据包,再点击工具栏红色 Stop 方块。客户端结束不代表抓包界面已收到每个数据包。应能看到握手、加密应用流量以及关闭连接的 FIN 或 RST 包。FIN 关闭 TCP 的一个方向;RST 立即结束连接。这个受控客户端的关闭 RST 并不是应用预约结果。
选择 File → Save As,或对未保存抓包按 Ctrl+S,保持 pcapng 格式,保存到:
/home/labex/project/booking/output/live.pcapng
保存实际抓包,而不是数据包列表文本或截图。密钥日志须单独保留;不要使用 Inject TLS Secrets。保存后关闭抓包主窗口。第一个终端中的启动器应以 native dumpcap status: 0 结束并恢复提示符。关闭窗口也会关闭课程数据包输入;重新连接终端不会重置预约服务。
在任一终端中,用初始为空的审阅配置打开已保存文件:
wireshark -C BookingReview /home/labex/project/booking/output/live.pcapng
应用 http:起初同样为空。在 Edit → Preferences → Protocols → TLS 中,先用步骤 1 的完整绝对路径尝试参考密钥日志 input/casebook.keys,点击 OK 应用。它仍然无法解码新会话。现在把该设置替换为匹配的新密钥日志:
/home/labex/project/booking/output/live.keys
点击 OK 并应用 http。现在应能看到一个 POST 及其响应。右击 POST,选择 Follow → TLS Stream。阅读新 attempt,检查响应是否回显它,并核对 accepted、reason 及其自己的 confirmation。有效结果是已确认的 paper-lantern 预约,场次为 sat-14。关闭 Follow 和主窗口。你已独立重新打开实际保存的抓包,没有借用参考会话的秘密。

请求和响应显示同一个全新 attempt。你的生成值会与示例不同,重要的是匹配关系。
如果过早停止,请在重试前保留不完整的尝试。仅在之前两个输出文件都存在时,在终端运行以下两条命令。mv 重命名各文件。这些路径不含空格,因此无需引号。两条命令都不会改变输入文件或服务。
mv /home/labex/project/booking/output/live.pcapng /home/labex/project/booking/output/live-previous.pcapng
mv /home/labex/project/booking/output/live.keys /home/labex/project/booking/output/live-previous.keys
然后重复“抓包启动器 → 第二终端客户端 → 可见最终数据包 → Stop → Save → Close → 重新打开”的顺序。如果已有 live-previous 文件,先选择另一个未使用的备份名。客户端会故意拒绝覆盖 live.keys,防止抓包失去匹配秘密。保存路径错误可通过 File → Save As 修正,无需再次访问。过滤器输错时,清空并重新输入 http,不要重置环境。
总结
你用 Wireshark 解密了获授权的参考记录,抓取一次真实的新 HTTPS 访问,并用该访问自己的密钥日志重新打开保存的 PCAPNG。错误的参考秘密无法解锁新会话。可复用的成果是 output/live.pcapng 与 output/live.keys。
你还区分了 HTTP 状态与预约结果,并阅读响应回显的 attempt。下一实验将在同一条持久连接的失败预约与重试中应用这个区别。



