对于Wireshark中的过滤器,!(ip.addr == 192.0.2.1)和(ip.addr != 192.0.2.1)的区别是什么?当检查结果时,结果不一样,我不知道为什么.
另外,当我应用过滤器(ip.addr != 192.0.2.1)时,滤镜(黄色)中的背景颜色会有所不同。图像
有人能帮我吗?提前谢谢。
发布于 2018-02-20 21:34:48
在布尔逻辑中,A not equals B和not A equals B是相同的测试。
但是,由Jürgen Thelen链接的WireShark文档的相关部分解释说,在WireShark中,ip.addr涵盖源字段和目标字段,因此测试更像是:
not ((A or B) equals C)它过滤源或目标匹配的数据包,然后隐藏它们(正确)。
与之相比:
(A or B) not equals C它过滤源或目的地都不是C的数据包,这是每个数据包,所以它显示了每个数据包。
6.4.6.在组合表达式(如eth.addr、ip.addr、tcp.port和udp.port )上使用!=运算符的常见错误可能不会像预期的那样工作。 人们通常使用过滤器字符串来显示类似于ip.addr == 1.2.3.4的内容,这将显示包含IP地址1.2.3.4的所有数据包。 然后,他们使用ip.addr != 1.2.3.4来查看其中不包含IP地址1.2.3.4的所有数据包。不幸的是,这并没有达到预期的效果。 相反,对于源IP地址或目标IP地址等于1.2.3.4的数据包,该表达式甚至都是正确的。原因是表达式ip.addr != 1.2.3.4必须读取为“数据包包含一个名为ip.addr的字段,其值与1.2.3.4不同”。由于IP数据报同时包含源地址和目标地址,因此当两个地址中至少有一个与1.2.3.4不同时,表达式将计算为true。
使用黄色背景的原因是由于这种潜在的令人惊讶的行为,并且在状态栏底部有一个匹配的警告,建议查看用户指南以获得更多详细信息:

发布于 2018-02-20 19:21:34
假设我们想过滤掉10.43.54.65之间的任何通信量。我们可以尝试以下方法:
ip.addr != 10.43.54.65。这意味着“传递除源IPv4地址为10.43.54.65和目标IPv4地址为10.43.54.65的通信量以外的所有通信量”。! ( ip.addr == 10.43.54.65 )。这意味着“传递任何通信量,除非源IPv4地址为10.43.54.65或目标IPv4地址为10.43.54.65”。
您可以在Wireshark: DisplayFilters上看到更多信息。
https://stackoverflow.com/questions/48892578
复制相似问题