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

当我在freebsd上监听路由器的内部networking接口时,我得到这样的输出

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”数据包。我尝试写入“更大的0”filter选项,但是它不工作。

你可以使用这个expression式来过滤ip长度为header fe的零包:

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

有关tcpdumpexpression式语法和RFC 791或其他资源,请参阅pcap-filter(4), 例如,用于ip头结构。