“tcpdump”捕獲最後的資料包

“tcpdump”捕獲最後的資料包

我正在監視某個端口,因為我的應用程式使用該端口,似乎連接會隨機斷開,我想查看連接斷開之前通過的最後一個資料包是什麼:我使用了這一行

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

但為了讓它工作,我必須啟動另一個終端並發出問題

sudo killall tcpdump

有更好的方法嗎? EDIT1:僅捕獲最後一個資料包很重要,因為我不希望檔案膨脹,因為有足夠的流量來快速填充磁碟空間。

答案1

好吧,我想我找到了解決方案:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

這將每 10 秒將輸出檔案輪換為一個名為tcpamir-<unixtimestamp>.txt

如果您擔心掛起的文件大小,您也可以修改輸出文件,因此它每天都會覆寫自身。欲了解更多信息,請閱讀man 3 strftime

我想到類似的東西

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

其中%R給出了 24 小時制時間(例如 12:40)。

讀取相關輸出文件

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

第二種解決方案:

將其拆分為更多命令並將其儲存為腳本/函數:

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

答案2

如果您只想寫入捕獲的所有流量,則只需將 -w 新增至刪除行'|尾 >> tcpamir.txt'

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

如果您要在wireshark中分析捕獲,則擴展名必須是.cap當您確保捕獲完成時,您可以使用以下命令殺死它Ctrl + C

注意:-w [filename.cap] 將捕獲寫入文件

相關內容