在 wireshark 中解密 python 请求 https 流量
Decrypting python requests https traffic in wireshark
我已经设置了环境变量 SSLKEYLOGFILE 以使用 wireshark 解密 https 流量。这适用于使用任何浏览器发送的流量,但不适用于 python 请求模块生成的流量。
那么你能不能回答我的这两个问题:
q1。为什么在设置 SSLKEYLOGFILE env 变量后我们能够解密来自任何浏览器的 tls 流量。如果浏览器看到 SSLKEYLOGFILE env var 集,它们会导出密钥吗?
q2。如何解密请求模块生成的 tls 流量?
- 是的,浏览器使用一些支持 SSLKEYLOGFILE 环境变量(如果编译支持)的 TLS\SSL 库(如 chrome 和 Boringssl)。该库将转储密钥(称为主密钥),Wireshark 将能够解密流量。
file format 是 <Label> <space> <ClientRandom> <space> <Secret>
其中:
Label
- 用于协议识别
ClientRandom
- 是会话 ID (ssl_session)
Secret
- 是万能钥匙
- 对于 python 3.8 使用 SSLContext.keylog_filename
我已经设置了环境变量 SSLKEYLOGFILE 以使用 wireshark 解密 https 流量。这适用于使用任何浏览器发送的流量,但不适用于 python 请求模块生成的流量。
那么你能不能回答我的这两个问题:
q1。为什么在设置 SSLKEYLOGFILE env 变量后我们能够解密来自任何浏览器的 tls 流量。如果浏览器看到 SSLKEYLOGFILE env var 集,它们会导出密钥吗?
q2。如何解密请求模块生成的 tls 流量?
- 是的,浏览器使用一些支持 SSLKEYLOGFILE 环境变量(如果编译支持)的 TLS\SSL 库(如 chrome 和 Boringssl)。该库将转储密钥(称为主密钥),Wireshark 将能够解密流量。
file format 是 <Label> <space> <ClientRandom> <space> <Secret>
其中:
Label
- 用于协议识别ClientRandom
- 是会话 ID (ssl_session)Secret
- 是万能钥匙
- 对于 python 3.8 使用 SSLContext.keylog_filename