如何使用 tcpdump 过滤掉“bad-len 0”数据包?

如何使用 tcpdump 过滤掉“bad-len 0”数据包?

当我在 freebsd 上监听路由器的内部网络接口时,我得到了如下输出

10:36:02.372026 IP 192.168.1.11.8888 > 192.168.1.2.49831: Flags [.], ack 1097, win 65050, length 0
10:36:02.374275 IP 46.163.78.160.123 > 192.168.1.2.32999: NTPv4, Server, length 48
10:36:02.376121 IP bad-len 0

我的目的是用 tcpdump 本身(而不是 grep 等)过滤掉“bad-len 0”数据包。我尝试写入“grep 等”过滤选项,但没有用。

答案1

您可以使用此表达式来过滤 IP 长度标头字段为零的 IP 数据包:

tcpdump -petnvv -i em0 'ip[2:2] = 0'

请参阅 pcap-filter(4) 以了解 tcpdump 表达式语法和 RFC 791 或其他资源,例如这个对于 IP 头结构。

相关内容