https双向加密的,如果需要解密数据,除非知道 客户端/服务器 任何一方私钥!否则无法解密,常用手段:
(1)基于vpn协议做中间人攻击抓包
这类工具诸如 fiddler ,实现的是中间人代理,它不需要客户端/服务器一方私钥,而是将客户端私钥改为fiddler自己的,这样每次通信都使用自己的私钥加密,服务器就可以通过公钥解密了。。而且只能抓http/https包。。。。
(2)基于网卡tcp抓包
要知道fiddler抓包是基于应用层协议抓包!所以数据更接近真实得到的。而wireshark基于网络层抓包。所以抓到的都是一些基于网卡发来的tcp/ip协议的包:
列表首先能看到的就是双方的ip,也就是tcp/ip包。然后就是应用层协议,有http/ack/tls等等。如果协议是公开的,就可以直接显示数据的。https协议由于不知道客户端/服务器私钥,所以无法解密!
(2.1)好在chrome强大,再https通信过程中,如果设置环境变量:
SSLKEYLOGFILE C:\Users\xx\sslkey.log
chrome就会自动把每次https通信的客户端私钥/服务器端公钥记录到上面的文件中!为什么会有很多行呢????客户端每次通信的时候都会随机生成一个私钥和服务器通信的!
(2.2)wireshark配置
wireshark可以利用 sslkey.log 解密所有数据了。只需要
编辑-------首选项------protocols-------tls:
请注意, 编辑-------首选项------protocols-------tls ,原来老版本的(2019年前的)是ssl。所以别说找不到了。。
(2.3)删除sslkey.log
必须得强调一下 C:\Users\xx\sslkey.log 文件抓包前需要删除!否则可能会抓包卡死!
博客地址:http://blog.yoqi.me/?p=15975