可以tcpdump跳过标题

时间:2013-01-29 22:14:06

标签: linux wireshark tcpdump

我有一个IP数据包,接口上有x字节的自定义标头 有没有办法告诉tcpdump或tshark忽略前x个字节并解码并显示IP数据包?
我要做的最后一件事就是写一个自定义解剖器。

1 个答案:

答案 0 :(得分:1)

因为这是(推测)Linux:

接口的驱动程序必须提供ARPHRD_值以指定链路层标头的类型(所有Linux网络接口驱动程序必须如此)。

如果该ARPHRD_值对于该链接层标头类型是正确的,并且libpcap知道ARPHRD_值,则会将其映射到相应的DLT_值,并且tcpdump / *鲨鱼,如果他们理解DLT_值,将能够处理数据包。 (如果没有,则必须添加支持 - 但我认为tcpdump和* shark支持libpcap可以为传输IP的接口提供的所有DLT_值。)

如果ARPHRD_值对于该链接层标头类型是正确的,并且libpcap 知道ARPHRD_值,它将执行“熟”捕获,这意味着自定义标头将不会提供给libpcap(假设驱动程序在skbuff中设置了正确的字段;如果没有,驱动程序是错误的),libpcap将使用DLT_LINUX_SLL并将插入“Linux熟模式捕获“标题。 Tcpdump和* shark处理DLT_LINUX_SLL的“Linux cooked-mode capture”标题。

如果Linux尚未为该自定义标头定义ARPHRD_值,则可能必须定义自己的标头; libpcap不会知道它,并将回到“熟模式”捕获。