Wireshark 提示和技巧 | 显示过滤之 a 不等于 b 逻辑更新

背景

一般常用软件的自动更新推送,我习惯上是来者不拒,但很少关注软件版本更新说明。前两天也是第一时间更新了 Wireshark Version 3.6.0 ,同样没注意有什么变动,还是朋友聊天提醒说是更新版本 3.6.0,并发来一堆发布说明,仔细瞅了瞅,看到了以下一条说明:

The expression “a != b” now always has the same meaning as “!(a == b)”. In particular this means filter expressions with multi-value fields like “ip.addr != 1.1.1.1” will work as expected (the result is the same as typing “ip.src != 1.1.1.1 and ip.dst != 1.1.1.1”). This avoids the contradiction (a == b and a != b) being true.

之前个人专栏也写过一篇文章 《Wireshark 提示和技巧 | 显示过滤之 a 不等于 b​》

Wireshark Version 3.6.0 终于把这个 != 的显示过滤逻辑给更新了。(🤣 估计吐槽太多 )

另本文标题原为:《Wireshark 提示和技巧 | !(ip.addr == x.x.x.x) 和 (ip.addr != x.x.x.x) 再无区别》,CSDN 标题禁止词 ! 🤣


说明

版本 3.6.0 之前 “a != b”不完全等同于“!(a == b)”

在具有多值字段的显示过滤表达式中,譬如 ip.addr != 1.2.3.4,并不会显示所有不包含 IP 地址 1.2.3.4 的数据包,因为 IP 数据包包含源和目的 IP 地址,当两个地址中至少有一个与 1.2.3.4 不同时,表达式的值将为 True 。在显示过滤器栏中为 黄色显示(正确的应为 绿色显示 ),表示过滤表达式被接受,但可能无法按预期工作 !
而 !(ip.addr == 1.2.3.4) ,才是正确显示所有不包含 IP 地址 1.2.3.4 数据包的过滤表达式。

版本 3.6.0 之后 “a != b”完全等同于“!(a == b)”

在具有多值字段的显示过滤表达式中,譬如 ip.addr != 1.2.3.4,等同于 ip.src != 1.2.3.4 and ip.dst != 1.2.3.4 ,等同于 !(ip.addr == 1.2.3.4) ,均显示所有不包含 IP 地址 1.2.3.4 的数据包。当两个地址中都与 1.2.3.4 不同时,表达式的值将为 True 。在显示过滤器栏中为正确的 绿色显示 !


实例

仍以 TCP 三次握手的数据包做一个简单实例演示,如下:
ab-01

显示过滤器中应用 ip.addr == 10.0.0.1 ,正确过滤所需数据包。
ab-02

绿色显示,表达式被接受,正常过滤。

显示过滤器中应用 !(ip.addr == 10.0.0.1) ,正确过滤所需数据包。
ab-03

显示过滤器中应用 ip.addr != 10.0.0.1Version 3.6.0 确实能正确过滤所需数据包。
ab-04

对比 Version 3.6.0 之前的版本,未能按预期过滤所需数据包,仍然存在 IP 地址为 10.0.0.1 的数据包。
ab-05

黄色显示,表达式被接受,但可能无法按预期过滤。


扩展

那么在新版本之后,是否仍然有方法达到之前版本中具有多值字段下的 != 过滤效果呢,如下说明:

It is possible to use the syntax “a ~= b” or “a any_ne b” to recover the previous (inconsistent with “==”) logic for not equal.

可以使用 ~=any_ne

显示过滤器中应用 ip.proto ~= tcp ,不等于效果,正确过滤所需数据包。
ab-06

而在具有多值字段的情况下,应用 ip.addr ~= 10.0.0.1ip.addr any_ne 10.0.0.1 ,仍是存在 IP 地址为 10.0.0.1 的数据包,结果和之前版本保持一致。
ab-07
ab-08
即在具有多值字段的情况下,只要有一个值字段不匹配,表达式的值将为 True 。



感谢阅读,更多技术文章可关注个人公众号:Echo Reply ,谢谢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值