本文已参与「新人创作礼」活动,一起开启掘金创作之路。
显示过滤之 !=
关于 Wireshark 显示过滤中 != 的使用事项,简要说明如下:
ip.addr == 1.2.3.4
显示所有包含 IP 地址 1.2.3.4 的数据包。
!(ip.addr == 1.2.3.4)
等同于
!ip.addr == 1.2.3.4
显示所有不包含 IP 地址 1.2.3.4 的数据包。
(ip.addr != 1.2.3.4)
等同于
ip.addr != 1.2.3.4
显示所有不包含 IP 地址 1.2.3.4 的数据包?不是。
显示过滤器栏中为 黄色显示(正确的应为 绿色显示 ),表示过滤表达式被接受,但可能无法按预期工作 !!!
因为 ip.addr != 1.2.3.4 表达式被理解为 “the packet contains a field named ip.addr with a value different from 1.2.3.4”,而 IP 数据包包含源和目的 IP 地址,当两个地址中至少有一个与 1.2.3.4 不同时,表达式的值将为 True 。
实例演示
以 TCP 三次握手的数据包做一个简单实例演示,如下:
显示过滤器中应用 ip.addr == 10.0.0.1
,正确过滤所需数据包。
绿色显示,表达式被接受,正常过滤。
显示过滤器中应用 !(ip.addr == 10.0.0.1)
,正确过滤所需数据包。
显示过滤器中应用 ip.addr != 10.0.0.1
,未能按预期过滤所需数据包,仍然存在 IP 地址为 10.0.0.1 的数据包。
黄色显示,表达式被接受,但可能无法按预期过滤。
总结
- 显示过滤中的黄色提示,需根据实际场景区分,像是其他个别场景黄色显示也能正常工作;
- 表达式的语法,包括符号的使用,注意规范书写;
- 数据包字段,有可能因为多个字段同名(像是 ip.addr,或是数据包多层封装的原因),需注意精准过滤。