我們?nèi)粘S胔ttps訪問(wèn)網(wǎng)站的時(shí)候,和網(wǎng)站交互的數(shù)據(jù)是加密的,所用的協(xié)議就是SSL/TLS。所以即使我們截獲了這些數(shù)據(jù)包,我們也不能看到加密的內(nèi)容。
比如我們隨便打開(kāi)百度的網(wǎng)址,用wireshark抓一下https的數(shù)據(jù)包。
首先獲取百度服務(wù)器地址:
開(kāi)始抓包:
注意到通信的數(shù)據(jù)都是以二進(jìn)制的形式表現(xiàn)出來(lái)的:
那我們?cè)趺床拍塬@得明文信息呢?
SSL采用的是對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密相結(jié)合的方式進(jìn)行通信。加密數(shù)據(jù)的過(guò)程是對(duì)稱(chēng)加密,也就是客戶端和服務(wù)器的報(bào)文都是由一把鑰匙進(jìn)行加密的。那么只要我們能獲取到這把鑰匙,就能對(duì)上面的報(bào)文進(jìn)行解密。
chrome和Firefox瀏覽器都可以記錄這個(gè)密鑰,前提是需要設(shè)置系統(tǒng)的環(huán)境變量SSLKEYLOGFILE,當(dāng)用chrome和Firefox瀏覽器訪問(wèn)網(wǎng)頁(yè)的時(shí)候,瀏覽器會(huì)檢查這個(gè)環(huán)境變量,存在的話會(huì)向指定的文件里寫(xiě)入這個(gè)密鑰。
配置環(huán)境變量:
可以看到文件里被寫(xiě)入了很多密鑰信息:
在wireshark中進(jìn)入進(jìn)入首選項(xiàng)
選擇協(xié)議TLS或者SSL,將pre-master-secret log設(shè)置為記錄密鑰的log路徑
點(diǎn)擊確認(rèn)后,就能對(duì)TLS流量進(jìn)行解密了:






