PCAPdroid 中文文档 下载 App

TLS 主密钥与 Pcapng — 在 Wireshark 中查看解密后的流量

两种导出方式

TLS 解密后如果同时开启了 PCAP 文件 dump mode,停止抓包时会有两种情况:

免费版 .pcap付费版 pcapng
密钥存储单独 .keylog 文件直接嵌入 pcapng 文件
Wireshark 打开需手动配置 SSLKEYLOGFILE 路径直接打开 pcapng,自动识别
流量方向信息可能丢失保留完整方向

方式一:.keylog 文件(免费版)

PCAPdroid 停止抓包后,在 PCAP 文件同目录下、同文件名但扩展名改为 .keylog 的文件就是 SSLKEYLOGFILE。在 Wireshark 中:

  1. 菜单 Edit → Preferences → Protocols → TLS
  2. 找到 (Pre)-Master-Secret log filename 选项
  3. 填入那个 .keylog 文件的完整路径
  4. 打开 .pcap 文件

Wireshark 会自动识别 keylog 里的 TLS 主密钥,把解密后的明文 HTTP 流量显示出来。

方式二:Pcapng 格式(付费版)

购买 Pcapng 格式功能后,在 PCAPdroid 设置里启用 Pcapng,停止抓包时:

在 Wireshark 中验证解密成功

打开 PCAP/PCAPNG 后:

  1. 在 Protocol Hierarchy 面板或直接在过滤条输入 http,应该能过滤出所有明文 HTTP 帧
  2. 点进某个 HTTP 帧,Frame 面板里能看到完整的 HTTP request/response
  3. 如果 http 过滤器查不到任何结果,说明 keylog 没配置对或密钥不是这次抓包的

实时 Wireshark + TCP 导出器 + TLS 解密

三个功能可以组合使用:

  1. 手机上开 TCP 导出器 + TLS 解密 + Full payload
  2. 电脑上 nc -lvp 1234 | wireshark -k -i -
  3. PCAPdroid 停止抓包后同时保存 PCAP 文件和 keylog
  4. 实时 Wireshark 里看到的是加密流量(密钥只在文件里),但可以实时观察哪些连接发生了
  5. 事后把 keylog 配到 Wireshark 设置里重新打开 PCAP 文件就能看到解密后的流量