在 wireshark 中解密 python 请求 https 流量

Decrypting python requests https traffic in wireshark

我已经设置了环境变量 SSLKEYLOGFILE 以使用 wireshark 解密 https 流量。这适用于使用任何浏览器发送的流量,但不适用于 python 请求模块生成的流量。

那么你能不能回答我的这两个问题:

q1。为什么在设置 SSLKEYLOGFILE env 变量后我们能够解密来自任何浏览器的 tls 流量。如果浏览器看到 SSLKEYLOGFILE env var 集,它们会导出密钥吗?

q2。如何解密请求模块生成的 tls 流量?

  1. 是的,浏览器使用一些支持 SSLKEYLOGFILE 环境变量(如果编译支持)的 TLS\SSL 库(如 chrome 和 Boringssl)。该库将转储密钥(称为主密钥),Wireshark 将能够解密流量。

file format<Label> <space> <ClientRandom> <space> <Secret> 其中:

  • Label - 用于协议识别
  • ClientRandom - 是会话 ID (ssl_session)
  • Secret - 是万能钥匙
  1. 对于 python 3.8 使用 SSLContext.keylog_filename