我想得到所有捕获的数据包,其中的源或目标ip地址与192.168.0.1不同。为此,我尝试了ip.addr != 192.168.0.1,但是过滤器变成了黄色,而不是绿色,所以一定有问题。
如何(正确)做到这一点?
发布于 2013-09-03 20:19:30
6.4.4.一个常见的错误 警告警告!在组合表达式上使用!=运算符,如: 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。 如果您希望筛选所有包含IP数据报的数据包到IP地址1.2.3.4或从IP地址1.2.3.4过滤,则正确的筛选器是!(ip.addr == 1.2.3.4),因为它是“向我显示不存在值为1.2.3.4的字段ip.addr的所有数据包”,或者换句话说,“过滤掉没有出现值为1.2.3.4的字段ip.addr的所有数据包”。
来源
https://stackoverflow.com/questions/18600692
复制相似问题