tcpdump是否支持使用具有特定SPI值的ESP流量(proto 50)进行过滤?
它会显示此值,因此您认为这是可能的!
21:15:23.143805 IP 64.7.134.1 > 64.7.139.200: ESP(spi=0x0d8f42b8,seq=0x27)
答案 0 :(得分:2)
应该可以使用"ip proto 50 and ip[((ip[0]&0x0f)<<2):4]==0x0d8f42b8"
......分解为:
ip proto 50
:所有ESP数据包。 (注意,对于较新版本的tcpdump
,显然可以指定ip proto esp
。)和也匹配特定的spi
ip[0]&0x0f
:IP标头的32位字数((ip[0]&0x0f)<<2)
:ESP有效负载和spi字段的偏移量ip[((ip[0]&0x0f)<<2):4]
:包含spi字段的4个字节ip[((ip[0]&0x0f)<<2):4]==0x0d8f42b8
:与十六进制值0x0d8f42b8
匹配的spi字段使用ip[20:4]==0x0d8f42b8
的简化过滤器可能很诱人,但假设固定大小的IP标头,默认IP标头大小为20字节。我想如果你知道你的IP头肯定是20个字节,那么它可以使用,但我认为从来没有做过这样的假设更安全。