一、遇到的問題
本學期的計算機網絡課程需要使用到Wireshark抓包工具進行網絡抓包實驗,原本可以看到在該軟件中捕獲到的數據包都被按照各個協議進行分類好了,例如ARP包,TCP報文段,UDP數據報等等。但是當我想要抓取訪問某網站時傳輸的數據,例如訪問bilibili時,我先使用ping命令得到bilibili的IP地址:

得到的ip地址為:120.240.78.230
而當我使用這個ip地址在Wireshark中進行抓包篩選時卻發現什么http的請求都找不到:

經查找資料發現現在互聯網使用的HTTP協議基本都是HTTP2.0以上的了,因而數據包都是加密之后再在網絡中進行傳輸,保證了信息的安全性。因而我們收到的HTTP請求在Wireshark中只能看到一個個的TLS包,這些TLS包在使用秘鑰解密之后可以得到正確的HTTP報文。

二、解決方案
1. 動態獲取對稱加密秘鑰
以下解決方案是針對使用Chrome瀏覽器的。(也許Edge等瀏覽器也可以?)
首先我們需要通過Chrome瀏覽器生成一個包含加密秘鑰信息的文件,方法是給瀏覽器添加以下的啟動參數:
--ssl-key-log-file=D:\sslkey.log
這個只是一個范例,后面填寫的目錄可以是任意的位置。
為了方便起見,在windows系統下可以右鍵點擊Chrome瀏覽器的快捷方式進行設置:

添加上參數后,我們使用該快捷方式啟動Chrome就會發現在上面設置的目錄下生成了對應的sslkey.log文件:

2. Wireshark配置
然后打開Wireshark,依次點擊:編輯 -> 首選項 -> Protocols:

老版本的Wireshark中可以看到SSL的選項,而新版本中則變成了TLS。我們打開相應的選項(SSL或TLS),然后將sslkey.log文件的路徑配置到(Pre)-Master-Secret log filename
項中即可:

至此配置完成。
3. 最終效果
此時再次訪問b站首頁,可以在Wireshark中看到許多http2請求報文了,這些都是原先的TLS包解密后得到的結果:
