1. 程式人生 > >tcpdump抓包及tshark解包方法介紹

tcpdump抓包及tshark解包方法介紹

tshark是wireshark的命令列工具,通過shell命令抓取、解析報文。tcpdump是Linux系統下的抓包工具。wireshark和tcpdump都共同使用 libpcap作為其底層抓包的庫,tshark也可以抓取報文。 有時候需要在linux系統或者ARM開發板中進行抓包,使用tcpdump抓包更加方便,在這種場景下,一般使用tcpdump進行抓包,然後在Windows中使用wireshark來分析生成的包檔案,在自動化分析或者自動化測試中,可以使用tshark來進行包解析。本文介紹使用tcpdump抓取報文後使用tshark進行報文解析。 # 安裝 wireshark下載安裝 wireshark官網:[https://www.wireshark.org/download.html](https://www.wireshark.org/download.html) ```bash # linux yum -y install wireshark yum -y install tcpdump ``` # tcpdump抓包 tcpdump官方文件:[https://www.tcpdump.org/index.html#documentation](https://www.tcpdump.org/index.html#documentation) ## 抓包 抓取eth1網絡卡資料包,資料寫入檔案/tmp/packet.pcap ```shell tcpdump -i eth1 -w /tmp/packet.pcap >/dev/null 2>&1 & ``` 其中 - \>/dev/null:將標準輸出(控制檯輸出)重定向到/dev/null中,/dev/null代表 linux 的空裝置檔案。表示不輸出內容 - 2>&1:重定向繫結,錯誤輸出(2)和標準輸出(1)輸出到同一個地方 - \>/dev/null 2>&1的作用就是丟棄標準輸出和錯誤輸出,不會輸出任何資訊到控制檯。 也可以只抓取特定協議的報文,比如過濾tcp報文: ```shell tcpdump -i eth1 tcp -w /tmp/packet.pcap >/dev/null 2>&1 & ``` ## 停止抓包 如果沒有限制 tcpdump 抓包的數量(-c 引數),tcpdump 會持續抓包。可以通過 Ctrl+C 來停止抓包,或者殺掉tcpdump程序: ```shell killall -9 tcpdump ``` 殺掉tcpdump程序後會停止抓包。 # tshark命令解析資料包 抓包完成後對資料包進行解析,下面介紹使用tshark解析資料包。 ## tshark工具介紹 tshark參考文件:[https://www.wireshark.org/docs/man-pages/tshark.html](https://www.wireshark.org/docs/man-pages/tshark.html) 如果要在windows命令列視窗使用tshark需要將Wireshark安裝路徑 C:\Program Files\Wireshark 新增到環境變數。 ![](https://img2020.cnblogs.com/blog/2229336/202101/2229336-20210116233546748-1895654316.png) Linux系統和windows系統tshark使用方法一樣 ## tshark命令解析資料包 常用引數: * -r:指定需要解析的資料包 * -T:指定資料包解析輸出格式,支援格式見[解碼所有資料](#解碼所有資料),這裡介紹 `-T fields`,一般與`-e` 選項連用。 * -e:指定過濾的欄位 * -E:可用於指定分隔符:` separator=,`:預設分隔符為縮排(\t) * -Y:過濾指定報文 ```shell tshark [