2012-06-23 60 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