2012-06-23 26 views
0

我正在致力於Eddie Kohler爲我的研究創建Click快速原型路由器api。 我很難用RAW IP ENCAP生成tcpdump文件。我知道我的鏈接類型不允許在RAW IP鏈接類型中捕獲,因爲在鍵入tcpdump -i(interface)-L時唯一的鏈接類型列表是EN10MB,沒有別的。使用原始IP生成tcpdump encap

這只是不引人注目。是否有方法在tcpdump或tshark中捕獲原始IP數據包(轉儲數據包應該從IP頭開始並跳過鏈接級別頭)?

回答

1

tcpdump和tshark都不能任意選擇設備的鏈接層頭類型,因爲設備和libpcap/WinPcap不允許選擇任意鏈接層頭類型(如tcpdump -i {interface} -L通知您) 。

大多數網絡接口不支持「原始IP」作爲鏈路層報頭類型;我不確定是否有,如果有的話。如果你想要一個捕獲文件充滿封裝的數據包,最簡單的方法是編寫一個程序從接口捕獲,丟棄所有非IP數據包,並將鏈路層頭從IP數據包中剝離並寫出來。例如,如果您在DLT_值爲DLT_EN10MB(以太網)的設備上捕獲,則只需丟棄所有沒有0x0800或0x86DD作爲以太網類型值的數據包,然後剝離前14個字節的數據包確實具有這些以太網類型值,並將結果數據包寫入一個DLT_值爲DLT_RAW的pcap文件中。

+0

當然。謝謝哈里斯。我正在考慮這樣做。沒有任何努力,我貪婪地得到一個原始的IP。 – Vaidsu