iptables删除hexstringudp

00:00:40.283608 IP (tos 0x0, ttl 116, id 49680, offset 0, flags [none], proto UDP (17), length 32) ip > ip: UDP, length 4 0x0000: 4500 0020 c21a 0000 6f11 1a1e 902b 4cdb E.......o....+L. 0x0010: ------ 000c c12f 0870 ac49 .....0.(.../.pI 0x0020: 0000 0000 0000 0000 0000 **2664 94d4** ..........&d.. 

如何使用iptables“2664 94d4”丢弃数据包?

 -I INPUT -p udp --dport 7777 -m string --algo bm --from 28 --hex-string 266494d4 -j DROP 

不起作用。

这是有道理的,iptables不会过滤这些字节,因为它们不是IP数据包的一部分。

该数据包比以太网的最小帧长度短。 所以需要14个字节的填充来形成一个有效的以太网帧。 序列0000 0000 0000 0000 0000 2664 94d4是填充。 在iptables开始对其进行过滤之前,将这部分内容从数据包中剥离出来似乎是合理的。

UDP有效负载只有4个字节,输出也是如此。 有效载荷是0870 ac49

我不知道该标准是否指定以太网帧如何填充。 我会期望填充是所有NUL字节。 但是填充的最后四个字节不是NUL。 设备上实际上可能存在信息泄漏,正在发送该以太网帧。