1. Wireshark抓取HTTPS明文报文的配置与操作流程
原理:通过获取HTTPS会话的TLS预主密钥,Wireshark可解密流量。需配置浏览器/系统导出密钥日志文件。
步骤:
-
设置环境变量(导出密钥日志),二选一
- Windows (CMD/PowerShell):
set SSLKEYLOGFILE=D:\Program\WiresharkPortable64\sslkey.log
- Windows (图形界面操作):
- Windows (CMD/PowerShell):
-
配置浏览器使用该环境变量
- Firefox:启动时自动读取环境变量。
- Chrome/Edge:需从配置了环境变量的终端启动:
如果通过图形界面设置的环境变量,重启Chrome浏览器即可。# Linux/macOS google-chrome # Windows(在已设置环境变量的CMD中启动) start chrome.exe
检查文件D:\Program\WiresharkPortable64\sslkey.log中已经存储了TLS秘钥信息。
-
配置Wireshark解析密钥
- 打开Wireshark → Edit → Preferences → Protocols → TLS:
- 在 “(Pre)-Master-Secret log filename” 中填入
sslkey.log
的完整路径。
- 在 “(Pre)-Master-Secret log filename” 中填入
- 打开Wireshark → Edit → Preferences → Protocols → TLS:
-
抓包与验证
- 开始抓包 → 访问HTTPS网站(如
https://www.baidu.com
)。 - 若配置成功,HTTPS流量(如
TLSv1.2/1.3
)将被自动解密,显示为HTTP
协议。 - 关键检查:
- 数据包详情中协议是否为
HTTP
而非TLS
。 - 右键数据包 → Follow → HTTP Stream 可看到明文请求/响应。
- 数据包详情中协议是否为
- 开始抓包 → 访问HTTPS网站(如
2. 提取Wireshark数据包中的PNG资源的方法
方法一:使用Wireshark内置功能(推荐)
适用场景:完整传输的PNG、JPEG等文件(通过HTTP等明文协议传输)。
操作流程:
- 过滤HTTP流量:
http.content_type contains "image/png"
- 定位携带文件的响应包(
HTTP 200 OK
)。 - 右键该数据包 → Follow → HTTP Stream。
- 在弹出窗口中:
- 查看右侧**“Show and save data as”** → 选择 “Raw”。
- 点击 “Save as…” → 保存为
.png
文件。
方法二:手动导出TCP流重组文件
适用场景:非HTTP协议传输的图片(如WebSocket、自定义TCP)。
操作流程:
- 定位包含图片数据的TCP包(可通过
tcp.payload contains "\x89PNG"
过滤PNG头)。 - 右键该包 → Follow → TCP Stream。
- 设置显示格式为 “Raw” → 点击 “Save as…” → 保存为
.bin
。 - 重命名文件后缀为
.png
。
方法三:VSCode十六进制编辑(原始数据包提取)
适用场景:需精确提取碎片化传输的图片数据。
操作流程:
- 在Wireshark中找到包含图片数据的应用层数据包(如HTTP包)。
- 展开数据包详情 → 选中应用层载荷(如
Media Type: image/png
)。 - 右键 → Export Packet Bytes → 保存为
raw.bin
。 - 用VSCode安装十六进制编辑器插件(如Hex Editor)。
- 打开
raw.bin
→ 检查文件头/尾:- PNG头:
89 50 4E 47 0D 0A 1A 0A
- PNG尾:
00 00 00 00 49 45 4E 44 AE 42 60 82
- PNG头:
- 删除多余字节(如HTTP头部),仅保留从
89PNG
到IEND
的数据。 - 保存为
.png
文件。
注意事项
- HTTPS解密前提:
- 必须捕获到完整的TLS握手过程(ClientHello, ServerHello等)。
- 浏览器需全程使用同一
sslkey.log
(重启浏览器需重新抓包)。
- 资源提取技巧:
-
使用Wireshark的 “Export Objects → HTTP” 可批量提取所有传输的文件(包括图片)。
-
-
碎片化传输的图片需手动拼接TCP流。
-
加密流量(如HTTPS未解密)无法直接提取资源。
-
提示:对非PNG文件(如JPEG),替换文件头尾标识:
- JPEG头:
FF D8 FF
,尾:FF D9
- 方法二/三同样适用。