說到抓包分析,最簡單的辦法莫過於在客戶端直接安裝一個Wireshark或者Fiddler了,但是有時候由於客戶端開發人員(可能是第三方)知識欠缺或者其它一些原因,無法順利的在客戶端進行抓包分析,這種情況下怎麼辦呢?
本文中,我們將給大家介紹在服務端進行抓包分析的方法,使用tcpdump抓包,配合Wireshark對HTTP請求進行分析,非常簡單有效。
本文將會持續修正和更新,最新內容請參考我的 GITHUB 上的 程序猿成長計劃 項目,歡迎 Star,更多精彩內容請 follow me。
使用tcpdump在服務器抓包
在服務端進行抓包分析,使用tcpdump
tcpdump -tttt -s0 -X -vv tcp port 8080 -w captcha.cap
這裏的參數是這樣的
- -tttt 輸出最大程度可讀的時間戳
- -s0 指定每一個包捕獲的長度,單位是byte,使用-s0可以捕獲整個包的內容
- -X 以hex和ASCII兩種形式顯示包的內容
- -vv 顯示更加多的包信息
- tcp 指我們只捕獲tcp流量
- port 8080 指我們只捕獲端口8080的流量
- -w captcha.cap 指定捕獲的流量結果輸出到captcha.cap文件,便於分析使用
關於tcpdump更加高級的用法,可以參考 tcpdump簡明教程
上述命令會保持運行,並將結果輸出到 captcha.cap 文件中,在這個過程中,所有訪問 8080 端口的 TCP 流量都會被捕獲。當請求結束之後,我們可以使用 Ctrl+C
中斷該命令的執行,這時候在當前目錄下就可以看到生成了一個名爲 captcha.cap 的文件。
使用Wireshark分析
接下來我們從服務器上下載這個captcha.cap文件到自己電腦上,使用 Wireshark 打開
最簡單的下載方法當然是使用scp了
scp account[@ip](https://my.oschina.net/u/3749391):/path/to/captcha.cap .
因爲我們需要分析http包,直接打開看顯然無法區分我們需要的內容,因此,可以在filter欄中添加過濾規則 http
,這樣就可以只展示http流量了
當請求比較多的時候,我們還是無法快速區分出哪個是指定客戶端的訪問請求,好在強大的filter可以組合使用
http and ip.src == 192.168.0.65
上面這個filter將會過濾出所有來自客戶端 192.168.0.65 的http流量。
找到我們需要分析的http請求了,那麼怎麼查看請求響應的內容呢?也很簡單,只需要選中這個請求,右鍵 Follow - HTTP Stream:
在新開的窗口中,我們就可以看到這個請求的所有內容了
總結
tcpdump和wireshark都是非常強大的網絡分析工具,其使用用途不僅僅侷限於http請求抓包,藉助這兩個工具,我們可以對所有的網絡流量,網絡協議進行分析。本文只是針對最常見的http請求抓包方法做了一個簡單的講解,實際上配合wireshark強大的filter規則,我們可以更加精準的對流量進行過濾,分析。
本文將會持續修正和更新,最新內容請參考我的 GITHUB 上的 程序猿成長計劃 項目,歡迎 Star,更多精彩內容請 follow me。