Networking 为什么Bpf允许乙醚[0:2]和乙醚[0:4],但不允许乙醚[0:3]?
为什么Berkeley数据包筛选器允许对以太[0:2]和以太[0:4]进行筛选,但不允许对供应商以太[0:3]进行筛选?Networking 为什么Bpf允许乙醚[0:2]和乙醚[0:4],但不允许乙醚[0:3]?,networking,wireshark,packet-sniffers,bpf,Networking,Wireshark,Packet Sniffers,Bpf,为什么Berkeley数据包筛选器允许对以太[0:2]和以太[0:4]进行筛选,但不允许对供应商以太[0:3]进行筛选?tcpdump'ether[0:3]=0x000000'返回 tcpdump:数据大小必须为1、2或4手册页(搜索“字节偏移量”)确认了这一点,但手册页也没有提供其他信息 我猜libpcap需要创建一个一次比较三个字节的程序,因为它生成的经典BPF程序直接支持这种比较。它可以将一个字节、一个半字(两个字节)或一个字(四个字节)加载到其中一个寄存器中,并将其与一个值进行比较,但不
tcpdump'ether[0:3]=0x000000'
返回
tcpdump:数据大小必须为1、2或4
手册页(搜索“字节偏移量”)确认了这一点,但手册页也没有提供其他信息
我猜libpcap需要创建一个一次比较三个字节的程序,因为它生成的经典BPF程序直接支持这种比较。它可以将一个字节、一个半字(两个字节)或一个字(四个字节)加载到其中一个寄存器中,并将其与一个值进行比较,但不能处理三字节长的值
我认为解决方法是分两步比较值,ether[0:2]
然后ether[2]