一、前言 ↶
用 Wireshark 练习抓包,发现怎么抓也抓不到我想要的 http 包而且抓到的 http 都很少,连页面的 HTML 包都抓不到。
浏览器都能抓到这么多 http 包,强大的 Wireshark 怎么会抓不到 http 包呢,一度认为自己的 Wireshark 或者 网卡 坏掉了。上网查找这个现象竟然没有适合我的情况的解答。
后来直到我看见了这条讨论 Mac 电脑, wireshark 很多 http 包抓不到!,点进去一看。哇!简直跟我情况一模一样,一条条翻下去。原来如此,是我傻了,我抓的服务器都是 https 加密的链接,Wireshark 没有再次设置的情况下是没有办法抓到包的 https 的数据包。那些 HTML 数据包也是靠 https 传输的,怪不得我抓不到网站的数据包,差点以为我的 Wireshark 或者 网卡 坏掉了。。
因此,我把这次遭遇记录在我的博客里,o(╥﹏╥)o。
二、简单分析 ↶
经过一阵子的资料查找,基本上找到了如何让 Wireshark 抓取 https 数据包的方法。网上通用的方法都是,在任意一个盘符下,建立以下文件目录,例如:C:\ssl_key\sslog.log,在系统变量中添加一行,变量名为 SSLKEYLOGFILE,而变量值为 C:\ssl_key\sslog.log
可以达到这种目的的原因,经过我整理如下:
(1)Wireshark 不知道不知道客户端/服务器私钥,所以无法解密 https 传输的数据包。
(2)某些浏览器如 Firefox 和 Chrome 支持将 TLS 会话中使用的客户端私钥/服务器端公钥用日记文件的方式记录下来,这样就可供 Wireshark 加密/解密使用,
(3)为什么 log 文件会有很多行呢?客户端每次通信的时候都会随机生成一个私钥和服务器通信的!