【发布时间】:2016-04-03 09:08:31
【问题描述】:
我已经实现了一个 Java 网络数据包嗅探器,类似于 http://www.freeproject.co.in/source/Network-Packet-Sniffer.aspx?pf=Java&t=web 或 http://packetsnifferusingjpcap.blogspot.it/
现在我想解密来自 https 的数据流,为此我设置了变量 SSLKEYLOGFILE,这样浏览器会将用于生成 TLS 会话密钥的值写入由指示的文件这个变量见https://isc.sans.edu/forums/diary/Psst+Your+Browser+Knows+All+Your+Secrets/16415/
正如https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format中解释的那样
SSLKEYLOGFILE 指示的文件是一系列行。注释行以尖字符 ('#') 开头。否则,该行采用这些格式之一。
RSA <space> <16 bytes of hex encoded encrypted pre master secret> <space> <96 bytes of hex encoded pre master secret>
CLIENT_RANDOM <space> <64 bytes of hex encoded client_random> <space> <96 bytes of hex encoded master secret>
如何使用 SSL / TLS 机密日志文件来解密 java 代码中的网络包?
【问题讨论】:
-
如果您可以控制网络(安装代理)和客户端计算机(安装您自己的 CA 证书),最好尝试 MITM 攻击。
-
@user1516873 你能解释一下怎么做吗?环境是:1)我的浏览器连接到使用 ssl 协议传输数据的站点,尽管在 443 以外的端口上 2)我有一个嗅探器,可以拦截所有未加密的流量 可以在加密数据之间放置一个代理(浏览器)和嗅探器,以便嗅探器接收解密数据?附:使用wireshark我可以解密数据
-
Wireshark 似乎不太可能通过 tls 解密数据,除非我对 tls 工作原理的理解存在缺陷。
-
@Sam Sun 看到这个:isc.sans.edu/forums/diary/…
-
@famedoro MITM - 中间人,您将自己伪装成服务器并解密客户端发送的所有数据。但是您需要 1) 像代理一样行事 2) 在客户端浏览器中插入您自己的根 CA 证书。例如 - 提琴手en.wikipedia.org/wiki/Fiddler_%28software%29
标签: java ssl encryption packet-sniffers tls1.2