-1

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

4

1 回答 1

1

因为这是(大概)Linux:

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

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

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

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

于 2013-01-30T04:44:18.103 回答