Wireshark抓取HTTPS明文并提取其资源内容的配置和操作流程

1. Wireshark抓取HTTPS明文报文的配置与操作流程

原理:通过获取HTTPS会话的TLS预主密钥,Wireshark可解密流量。需配置浏览器/系统导出密钥日志文件。

步骤:
  1. 设置环境变量(导出密钥日志),二选一

    • Windows (CMD/PowerShell)
      set SSLKEYLOGFILE=D:\Program\WiresharkPortable64\sslkey.log
      
    • Windows (图形界面操作)
      配置环境变量
  2. 配置浏览器使用该环境变量

    • Firefox:启动时自动读取环境变量。
    • Chrome/Edge:需从配置了环境变量的终端启动:
      # Linux/macOS
      google-chrome
      # Windows(在已设置环境变量的CMD中启动)
      start chrome.exe
      
      如果通过图形界面设置的环境变量,重启Chrome浏览器即可。
      检查文件D:\Program\WiresharkPortable64\sslkey.log中已经存储了TLS秘钥信息。
      sslkey文件中报错的秘钥信息
  3. 配置Wireshark解析密钥

    • 打开Wireshark → Edit → Preferences → Protocols → TLS
      • “(Pre)-Master-Secret log filename” 中填入sslkey.log的完整路径。
        (Pre)-Master-Secret log filename设置
  4. 抓包与验证

    • 开始抓包 → 访问HTTPS网站(如https://www.baidu.com)。
    • 若配置成功,HTTPS流量(如TLSv1.2/1.3)将被自动解密,显示为HTTP协议。
    • 关键检查
      • 数据包详情中协议是否为HTTP而非TLS
      • 右键数据包 → Follow → HTTP Stream 可看到明文请求/响应。

2. 提取Wireshark数据包中的PNG资源的方法

方法一:使用Wireshark内置功能(推荐)

适用场景:完整传输的PNG、JPEG等文件(通过HTTP等明文协议传输)。
操作流程

  1. 过滤HTTP流量:http.content_type contains "image/png"
  2. 定位携带文件的响应包(HTTP 200 OK)。
  3. 右键该数据包 → Follow → HTTP Stream
  4. 在弹出窗口中:
    • 查看右侧**“Show and save data as”** → 选择 “Raw”
    • 点击 “Save as…” → 保存为.png文件。
方法二:手动导出TCP流重组文件

适用场景:非HTTP协议传输的图片(如WebSocket、自定义TCP)。
操作流程

  1. 定位包含图片数据的TCP包(可通过tcp.payload contains "\x89PNG"过滤PNG头)。
  2. 右键该包 → Follow → TCP Stream
  3. 设置显示格式为 “Raw” → 点击 “Save as…” → 保存为.bin
  4. 重命名文件后缀为.png
方法三:VSCode十六进制编辑(原始数据包提取)

适用场景:需精确提取碎片化传输的图片数据。
操作流程

  1. 在Wireshark中找到包含图片数据的应用层数据包(如HTTP包)。
  2. 展开数据包详情 → 选中应用层载荷(如Media Type: image/png)。
  3. 右键 → Export Packet Bytes → 保存为raw.bin
  4. VSCode安装十六进制编辑器插件(如Hex Editor)。
  5. 打开raw.bin → 检查文件头/尾:
    • PNG头89 50 4E 47 0D 0A 1A 0A
    • PNG尾00 00 00 00 49 45 4E 44 AE 42 60 82
  6. 删除多余字节(如HTTP头部),仅保留从89PNGIEND的数据。
  7. 保存为.png文件。

注意事项

  • HTTPS解密前提
    • 必须捕获到完整的TLS握手过程(ClientHello, ServerHello等)。
    • 浏览器需全程使用同一sslkey.log(重启浏览器需重新抓包)。
  • 资源提取技巧
    • 使用Wireshark的 “Export Objects → HTTP” 可批量提取所有传输的文件(包括图片)。

    • 到处资源文件

    • 碎片化传输的图片需手动拼接TCP流。

    • 加密流量(如HTTPS未解密)无法直接提取资源。

提示:对非PNG文件(如JPEG),替换文件头尾标识:

  • JPEG头:FF D8 FF,尾:FF D9
  • 方法二/三同样适用。
### 使用 Wireshark 抓取 HTTPS 数据包 HTTPS 数据包由于采用了 SSL/TLS 加密,在默认情况下无法直接查看具体内容。为了能够解析这些加密的数据包,需要让浏览器记录 TLS 握手过程中的预主密钥(pre-master secret),将这个信息提供给 Wireshark 进行解密。 #### 设置环境变量 首先,需设置一个名为 `SSLKEYLOGFILE` 的环境变量[^4]。此变量指向一个日志文件的位置,用于保存由支持的应用程序(如 Chrome 浏览器)导出的 pre-master 密钥材料。具体操作是在系统的环境变量中新增一项,名称设为 `SSLKEYLOGFILE`,而值则应填写所选的日志文件全路径,比如 `D:\sslkey.log`。 #### 启动浏览器与验证 完成上述配置之后,关闭重新启动 Chrome 浏览器以使新的环境变量生效。此时,当访问 HTTPS 网站时,Chrome 就会自动向指定的日志文件写入必要的密钥资料。可以通过检查目标目录确认是否成功生成了预期的日志文件;如果未找到,则可能需要重启计算机来确保更改被正确加载。 #### 配置 Wireshark 接下来,在 Wireshark 中也需要做一些相应的调整以便读取之前提到的日志文件。进入菜单栏的选择【编辑】> 【首选项】> 【Protocols】> 【TLS】,在这里定位到选项 “(Pre)-Master-Secret log filename”,将其设定为我们先前定义的那个日志文件地址。 #### 开始抓包 现在可以准备开始捕捉流量了。建议在此之前先开启 Wireshark 设置合适的过滤条件(例如仅监听 TCP 端口 443),然后再去刷新网页或者执行其他涉及 HTTPS 请求的操作。如此一来,Wireshark 才能接收到完整的握手消息以及后续传输的内容借助预先获得的秘密参数对其进行解码展示[^5]。 ```bash tcp.port == 443 ``` 通过以上步骤,便可以在 Wireshark 中观察到原本经过加密保护的 HTTP(S) 应用层负载内容了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值