使用tcpdump+wireshark抓包分析網路資料包

紫葡萄0發表於2018-12-16

最近和學弟在除錯一個GPRS通訊模組,需求是通過GPRS模組通過http協議傳送資料到伺服器,但是http協議一直失敗,伺服器返回400,通過查詢http狀態碼得知,http400錯誤是請求無效,因為GPRS模組沒有實現http協議的封裝,需要在TCP協議的基礎上,手動拼裝http格式的報文.所以初步猜測是http協議格式錯誤導致的.

這時候,最簡單有效的調錯方式就是通過抓包分析,檢視資料格式,然後修改.但是在GPRS模組上沒法安裝抓包工具,只能在伺服器上抓包,伺服器是centos的,雖然有tcpdump工具,但是沒有介面,沒法具體分析資料包.tcpdump
直接使用tcpdump抓到的資料包,根本沒法分析好不.

在windows上,有wireshark這個工具,可以很方便的分析網路資料包,這個軟體有多牛鼻就不用多說了,所有經過網路卡資料都能抓到,配合圖形介面,可以很方便的檢視分析資料.不知能檢視應用層協議的資料,網路中的五層協議都能檢視.
wireshark
wireshark
有沒有辦法把tcpdump和wireshark這兩個軟體結合起來使用呢???
辦法當然是有的,把tcpdump抓取的資料轉存檔案,然後用wireshark開啟檔案,分析資料.

1.開啟tcpdump抓包,並將結果轉存為檔案
tcpdump tcp -s 0 port 80 -w ./http.cap

說一下這幾個引數
tcp是指定抓取那種協議的資料,因為我們要抓取http協議,但是tcp不能指定http協議,但是http協議是基於TCP協議的,所以抓取TCP協議資料.
-s 0 tcpdump 抓取資料包時預設抓取長度為68位元組。加上-S 0 後可以抓到完整的資料包
port 80 我的伺服器監聽的80埠,所以只抓取80埠的資料.
-w ./http.cap 指定tcpdump轉存資料時的檔案 ./http.cap是當前目錄下的http.cap檔案

  1. 發起請求

在終端中使用 ctrl+c組合鍵結束抓包,然後會在當前目錄下生成一個http.cap檔案
http.cap

3.把檔案下載下來,使用tcpdump分析資料

在wireshark中,通過檔案>開啟 找到從伺服器下載的http.cap檔案,並開啟

到這已經成功開啟了,剩下的就是分析資料包了
wireshark
在協議http的那一行右鍵,選擇追蹤流,然後選擇http
http

到這,整個抓包就完成了,是不是很簡單呢

經過抓包分析,終於解決了http400的問題


相關文章