您好,我主要使用十六进制格式来调试我的程序的流量,因此在 wireshark 中,我也想使用十六进制值过滤 ip.addr,而不是这样,ip.addr == 0x7f000001
这ip.addr == 127.0.0.1
可能吗?
答案1
这wireshark 过滤器手册页解释了切片运算符的正确用法,特别相关:
切片总是与字符串或字节序列进行比较。特殊情况下,当切片只有 1 个字节宽时,您可以将其与 0xff 或更小的十六进制整数进行比较(这意味着它适合一个字节)。对于大于一个字节的字节序列,这是不允许的,因为这样就需要指定多字节整数的字节顺序。此外,对于十进制数,这也是不允许的,因为它们会与已经允许作为字节字符串的十六进制数混淆。
下面的例子应该可以工作:
ip[12:4]==7f:00:00:01 || ip[16:4]==7f:00:00:01
请注意,此处源 IP 地址和目标 IP 地址的正确偏移量分别为 12 和 16。偏移量是从 IP 标头的开头指定的,因为这是您要从那里进行切片的位置。