嗅探IPV6 SYN - ACK数据包的问题

时间:2017-12-19 00:36:59

标签: tcpdump libpcap

我正在使用以下过滤器表达式来嗅探IPv4 / IPv6 SYN / ACK / FIN / RST数据包。使用tcpdump for IPv4可以正常工作,但对于IPv6,我看不到任何事情

tcp端口80和(tcp [tcpflags]&(tcp-syn | tcp-ack | tcp-fin | tcp-rst)!= 0)

1 个答案:

答案 0 :(得分:1)

目前,TCPDump(和Wireshark)不支持IPv6下的嵌入式协议BPF过滤器。为了找到这些数据包,您必须使用BPF偏移和掩码。

例如:

 ip6 proto tcp and ip6[13+40]&0x17!=0

这里我们检查TCP是否是IPv6标头中的嵌入式协议。从那里开始,我们将13个字节输入TCP标头并添加40个字节,因为我们从ip6标头的开头引用它。我假设您已经知道0x17将是与您所写内容匹配的掩码(SYN | ACK | FIN | RST)。

虽然有一个protochain选项可以在协议链的任何地方找到TCP,但使用BPF跟踪哪个“Next Header”包含TCP(它应该是最后一个)实际上是不切实际的。

要将端口添加到上面,您只需添加:

  and ip6[(40+2):2]=80