TLS 主密钥与 Pcapng — 在 Wireshark 中查看解密后的流量
两种导出方式
TLS 解密后如果同时开启了 PCAP 文件 dump mode,停止抓包时会有两种情况:
| 免费版 .pcap | 付费版 pcapng | |
|---|---|---|
| 密钥存储 | 单独 .keylog 文件 | 直接嵌入 pcapng 文件 |
| Wireshark 打开 | 需手动配置 SSLKEYLOGFILE 路径 | 直接打开 pcapng,自动识别 |
| 流量方向信息 | 可能丢失 | 保留完整方向 |
方式一:.keylog 文件(免费版)
PCAPdroid 停止抓包后,在 PCAP 文件同目录下、同文件名但扩展名改为 .keylog 的文件就是 SSLKEYLOGFILE。在 Wireshark 中:
- 菜单 Edit → Preferences → Protocols → TLS
- 找到 (Pre)-Master-Secret log filename 选项
- 填入那个 .keylog 文件的完整路径
- 打开 .pcap 文件
Wireshark 会自动识别 keylog 里的 TLS 主密钥,把解密后的明文 HTTP 流量显示出来。
方式二:Pcapng 格式(付费版)
购买 Pcapng 格式功能后,在 PCAPdroid 设置里启用 Pcapng,停止抓包时:
- 只生成一个
.pcapng文件,不需要额外 keylog - TLS 主密钥以 pcapng 自定义块的形式嵌入在文件内部
- Wireshark 打开 pcapng 时自动识别密钥,直接看到解密后的明文
在 Wireshark 中验证解密成功
打开 PCAP/PCAPNG 后:
- 在 Protocol Hierarchy 面板或直接在过滤条输入
http,应该能过滤出所有明文 HTTP 帧 - 点进某个 HTTP 帧,Frame 面板里能看到完整的 HTTP request/response
- 如果
http过滤器查不到任何结果,说明 keylog 没配置对或密钥不是这次抓包的
实时 Wireshark + TCP 导出器 + TLS 解密
三个功能可以组合使用:
- 手机上开 TCP 导出器 + TLS 解密 + Full payload
- 电脑上
nc -lvp 1234 | wireshark -k -i - - PCAPdroid 停止抓包后同时保存 PCAP 文件和 keylog
- 实时 Wireshark 里看到的是加密流量(密钥只在文件里),但可以实时观察哪些连接发生了
- 事后把 keylog 配到 Wireshark 设置里重新打开 PCAP 文件就能看到解密后的流量