通过 Wireshark 抓取 HTTPS 解密包

正常情况下,Wireshark 无法抓取 HTTPS 数据包。但通过开启各软件约定的环境变量设定,即可导出相关通讯密钥 key。将其导入 Wireshark 中即可实现抓取解密包。

环境变量设定

持久方式

写入环境变量

  • Windows,新建 SSLKEYLOGFILE,值为一个具体文件,比如 %USERPROFILE%\Desktop\keylogfile.txt

  • Linux/MacOS,在 .bashrc 中加入

    export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt

绿色方式

构建批处理文件或脚本文件来调用

  • Windows,新建 firefox_ssl.bat/chrome_ssl.bat

    @echo off
    set SSLKEYLOGFILE=%USERPROFILE%\Desktop\keylogfile.txt
    start firefox
    rem start chrome
  • Linux,新建 firefox_ssl.sh/chrome_ssl.sh

    export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt
    firefox&
    # chrome&
  • MacOS,新建 firefox_ssl.sh/chrome_ssl.sh

    export SSLKEYLOGFILE=$HOME/Desktop/keylogfile.txt
    open -a firefox
    # open -a chrome

Wireshark 配置

配置路径

Edit -> Preferences -> Protocols -> TLS -> (Pre)-Master-Secret log filename

配置完毕后即可正常抓取 HTTPS 数据包,正常解密

使用

正常使用软件,相关的 key 会写入先前指定的文件

当前已知支持的软件:

  • Firefox
  • Chrome
  • Chromium
  • Electron
  • curl

参考资料