我有一个IP数据包,接口上有x字节的自定义标头
有没有办法告诉tcpdump或tshark忽略前x个字节并解码并显示IP数据包?
我要做的最后一件事就是写一个自定义解剖器。
答案 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不会知道它,并将回到“熟模式”捕获。