websocket目前在web端使用廣泛,可以使用websocket來傳輸資料,解決了web端無法跟伺服器維持高效的長鏈結的問題。什麼是websocket呢?websocket是一種瀏覽器與伺服器進行全雙工通訊的應用層協議。它基於 tcp 傳輸協議,並復用 http 的握手通道,可以在瀏覽器裡使用,支援雙向通訊。
本文來講述一下如何通過wireshark來抓取websocket資料,進行協議分析。
要使用wireshark抓取websocket包,需要注意一點,wireshark無法解析https協議,如果你的websocket使用的wss,就需要配置wireshark的tls解析,本文使用的是mac,會基於mac講解如何配置tls解析。
目前chrome和firefox都支援將https的對稱秘鑰儲存到日誌檔案中,前提是需要設定sslkeylogfile系統變數。目前wireshark 1.6.0及更高版本可以使用這些日誌檔案來解密資料報。
建立sslkeylog檔案
設定環境變數sslkeylogfile,開啟.zshrc檔案,新增如下:export sslkeylogfile=~/sslkeylogfile/keylogfile.log
開啟瀏覽器,訪問任意
開啟keylogfile.log,觀察對稱秘鑰是否寫入:
這裡需要注意,我們需要在終端模擬器啟動瀏覽器,否則,我們無法獲取對稱秘鑰,需要我們在.zshrc檔案配置chrome的快捷啟動配置見下:
alias chrome="open -a 'google chrome'"
termial啟動瀏覽器,輸入chrome,就可以啟動瀏覽器了。
開啟wireshark,wireshark->preferences->protocols->tls,見下圖:
參照上圖,配置上前面配置的keylogfile.log檔案
在wireshark的filter中輸入websocket,啟動抓包,會抓取websocket的包
抓包截圖見下:
可以看到我們已經可以正常抓取websocket包了。如果想看到完整的websocket互動,包括連線建立等,可以參照下圖配置:
wireshark如何抓取本機包
在進行通訊開發的過程中,我們往往會把本機既作為客戶端又作為伺服器端來除錯 使得本機自己和自己通訊。但是wireshark此時是無法抓取到資料報的,需要通過簡單的設定才可以。具體方法如下 方法一 1.以管理員身份執行cmd 2.route add 本機ip mask 255.255.255.255 閘...
wireshark如何抓取本機包
在進行通訊開發的過程中,我們往往會把本機既作為客戶端又作為伺服器端來除錯 使得本機自己和自己通訊。但是wireshark此時是無法抓取到資料報的,需要通過簡單的設定才可以。具體方法如下 以管理員身份執行cmd route add 本機ip mask 255.255.255.255 閘道器ip 此時再...
wireshark如何抓取本機包
在進行通訊開發的過程中,我們往往會把本機既作為客戶端又作為伺服器端來除錯 使得本機自己和自己通訊。但是wireshark此時是無法抓取到資料報的,需要通過簡單的設定才可以。具體方法如下 以管理員身份執行cmd route add 本機ip mask 255.255.255.255 閘道器ip 此時再...