tcpdump 是否支持通过具有特定 SPI 值的 ESP 流量(proto 50)进行过滤?
它显示了这个值,所以你会认为这是可能的!
21:15:23.143805 IP 64.7.134.1 > 64.7.139.200: ESP(spi=0x0d8f42b8,seq=0x27)
Run Code Online (Sandbox Code Playgroud)
应该可以使用过滤器,例如"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:匹配十六进制值的spi字段0x0d8f42b8仅使用 的简化过滤器可能很诱人ip[20:4]==0x0d8f42b8,但这假定固定大小的 IP 标头,默认 IP 标头大小为 20 字节。我想如果你知道你的 IP 标头肯定是 20 个字节,那么就可以使用,但我认为永远不要做出这种假设会更安全。