天天看點

linux抓包 tls,TLS包抓取後如何解密,手把手帶你!

這裡記錄一般情況,對于開發人員是一個向導。在具體的項目中可以自己調整。

第一步

下載下傳openssl源碼包

$git clone -b OpenSSL_1_1_1c https://github.com/openssl/openssl.git --single-branch --depth=1

第二步

編譯openssl

$cd openssl

$./config

$./make

第三步

打開wireshark 抓包

第四步

運作

$cd apps

$LD_LIBRARY_PATH=../ ./openssl s_client -keylogfile ~/Desktop/www.baidu.com.keylog -connect www.baidu.com:443

。。。//ssl握手過程輸出列印略過

---

GET / HTTP/1.1 //此行為輸入

Host: www.baidu.com //此行為輸入

//此行為輸入,一個回車

。。。//伺服器傳回内容略過

keylog檔案形如:

# SSL/TLS secrets log file, generated by OpenSSL

CLIENT_RANDOM 57e8f86bbc34007d9fd70ac8dd69739789bc7f943731458ae8c1ec209527f75b ff978d80a734a42325ce729582050d5395f1116c8d8aec7734ba79bae508bb24e023e7b791d53997e4a04264834ed00d

CLIENT_RANDOM f12f776fe28aef0e2668d7adb3108769acab0b5c49ab88f0070e3e3dcbd400b7 6d686b82138079c4cb190ab8be8c60dc953fcdd8a53afa60843de8c43664cd82aecaa71965fb5ebc8fd7354064113381

第五步

将log檔案交給wireshark:

步驟:

edit:->preferences->protocols->ssl(或tls)->(Pre)-Master-Secret log filename:~/Desktop/www.baidu.com.keylog->OK

傳回檢視抓到的封包,出現了解密之後的明文。

分析與總結

openssl 1.1.1c 已經支援将ssl握手時的keylog導出,wirkshark也支援直接讀取openssl導出的keylog。

在開發人員寫代碼時可以參考:

openssl/apps/s_client.c裡的set_keylog_file()函數,和SSL_CTX_set_keylog_callback()函數,如果找不到這兩個函數就需要從高版本的openssl合入這個功能。

再抓到加密包後将keylog檔案一并取回,就可以解密了。