网络上http已经不常见了,所以解决HTTPS怎么解密。
默认情况下,https的协议是tls。
很不幸,tls流量包裹的加密数据中的HTML/CSS/JS/JSON…我们看不了。
这种情况下,我们有一种简单粗暴的方法看https流量。
就是用浏览器的调试模式。F12。
不幸的是,这种方式可能会导致https的网站用js使我们进入F12后陷入一个死循环,从而得不到有用的数据。我们还是需要除浏览器之外的软件来帮我们解密https。
Fildle,是作为一个代理服务器存在的。如果fq过,它其实就是ssr服务器。
或者可以理解成它是一个中间人,浏览器通过它,向服务器发送请求。服务器通过它,返回信息给浏览器。只不过两边都需要搞https那一套,因此得让浏览器知道它的证书。所以得安装证书到操作系统,就是这么来的。(让浏览器知道公钥麻)。
那么,貌似Finlde仅支持https的,那么像其他比如Mysql的通信协议它就不知道怎么解密了。
还是回到wireshark,看看它怎么解密https。顺便解密其他协议。(原理类似,都是密码学那一套。)
开搞
经过上图我们发现需要wireshark接受一个文件。这个文件里面的内容张这个样子:
就是说全是公钥。
所以啊,这个文件就是说你用浏览器去上https网站,浏览器会拿到https网站的证书,证书里面包含了它的公钥。但是这是浏览器有服务器的公钥,wireshark只是个在网卡门口等着的破抓包的,它没有。所以就需要让浏览器自动把自己的公钥放到某个文件中,由此作为中介,wireshark再读这个文件。然后wireshark就可以解开了。上图的这个文件的来历就是这个。
那这得依靠客户端了,难道我们需要在浏览器上安装插件么?不,主流浏览器可以通过读取你自己设置的SSLKEYLOGFILE
环境变量来写到这个文件。
打开一个终端:
以linux为例:
touch mylog.txt
export SSLKEYLOGFILE=~/mylog.txt
firefox/chromium/edge/somewhat...
然后就ok了。
设置完一定要关闭你要抓包的那个浏览器!!!
。(因为设置环境变量麻,浏览器现在正在跑,才不鸟你的环境变量,只有等你再启动,浏览器才会读取这个环境变量)