我想获取所有捕获的数据包,其中源或目标IP地址与192.168.0.1不同。为此我尝试了ip.addr!= 192.168.0.1,但是过滤器变黄了,而不是绿色,所以一定是错的。
怎样才能(正确地)完成?
答案 0 :(得分:5)
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地址等于1.2.3.4。原因是, 是表达式ip.addr!= 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.addr的字段,值为1.2.3.4“。