简介
由于QUIC是基于TLS1.3构建的,所以在用wireshark对quic进行抓包时,经常会出现只能看到部分quic包数据的情况,为了更好的了解和研究quic,我们需要对包进行解密。
未解密quic包:
解密quic包:
经过两图对比,我们能发现不进行解密只能看到很少一部分quic数据。话不多说,开始教程。
操作说明
环境:Ubuntu18.04,火狐(network.http.http3.enabled为true)
1、打开一个命令行,开启抓包,port是服务器的端口号,/home/capture/quic.pcap是抓包文件存放的地址
tcpdump -ni any port 8443 -w /home/capture/quic.pcap
2、另起一个命令行,设置linux环境变量,输出的是密钥记录日志文件,sslkeylog.log。
export SSLKEYLOGFILE=/home/capture/sslkeylog.log
原理:当你配置了”SSLKEYLOGFILE“这个环境变量,这意味着你想知道每次https会话的key记录,浏览器将会在每次https会话结束后,将会话数据解密的key记录到keylog文件中,Wireshark通过访问keylog文件使用里面的key就可以解密自己捕获到的https会话数据流。
3、使用火狐浏览器,访问使用quic的服务器(https://127.0.0.1:8443是我自己配置的quic服务器地址)
firefox https://127.0.0.1:8443
这里有一个关键点就是,浏览器产生的解密密码是不一样的,每一次抓包,每一个会话或者每一个流(这里不确定,知道的大神可以私信告诉我,谢谢!)的密码好像都是随机生成的,不是一成不变的。所以每次想抓到解密的quic包都得严格按照上述步骤流程去做。sslkeylog.log 截图如下:
4、停止抓包,用wireshark打开本次抓到的包
然后打开wireshark 软件设置: [编辑]-[首选项]-[协议]-[TLS]-[(Pre)-Master-Secret log filename] 选中sslkeylog.log ,如下
5、得到解密后的quic包(同一个文件的图,选中的都是21号包,可以和上图比较)
完成。