Wireshark != 不再像 3.6 版之前那样工作

Wireshark != 不再像 3.6 版之前那样工作

我使用过滤器ip.addr != 10.0.0.0/8 && !(ip.addr == 224.0.0.0/3)来识别我们网络与外部之间的任何流量(并排除 D 类地址空间)。此过滤器不再起作用。

如果我把它写成这样,它确实可以工作ip && (!(ip.src == 10.0.0.0/8) || !(ip.dst == 10.0.0.0/8)) && !(ip.addr == 224.0.0.0/3),但我需要添加ip并明确考虑源和目标。

答案1

ip.addr是一个多值字段,相当于ip.src || ip.dst

在 3.6 版之前,ip.addr != 10.0.0.0/8将被解释为(ip.src != 10.0.0.0/8 || ip.dst != 10.0.0.0/8)

3.6 版将!=to重新命名为~=,并将 to 的含义改为!=now !(field == value)。这意味着ip.addr != 10.0.0.0/8 now 变成了!(ip.addr == 10.0.0.0/8)

此更改有效地将逻辑从“或”更改为“与”:!(ip.src == 10.0.0.0/8) && !(ip.dst == 10.0.0.0/8)[布尔逻辑:!(A + B)=!A *!B]

对于 3.6 或更新版本,请使用~=代替。!=

从版本 4.0.0 开始生效:

运算符“~=”已弃用,并将在将来的版本中删除。请使用“!==”,其含义相同。

因此,使用:

  • !=(最高版本 3.6)
  • ~= (版本 3.6 至版本 4.0)
  • !==(版本 4.0 或更高版本)

相关内容