Wireshark 过滤 - 试图过滤掉我自己的本地 ip

chr*_*ris 7 http wireshark filtering

我正在尝试过滤掉我本地机器的 IP 地址192.168.5.22

我用过ip.src != 192.168.5.22|| ip.dst !=192.168.5.22,我一直看到我的地址弹出。

And*_*zek 8

米奇是对的。对于像您这样的否定匹配,您需要两个条件都为真才能过滤掉您的 IP,因此and而不是or。你也可以这样写:

not (ip.addr == 192.168.5.22)
Run Code Online (Sandbox Code Playgroud)

将它写为 似乎更合乎逻辑ip.addr != 192.168.5.22,但虽然这是一个有效的表达式,但它会匹配连接的另一端,因为它不是特定的 ip,并且仍然是真实的。例如,当从 192.168.5.22 连接到 192.168.5.254 时,ip.addr != 192.168.5.22不匹配 *.22 IP,它匹配 *.254,因此数据包匹配过滤器表达式。下面是一个过滤 http 的完整示例:

not ip.addr == 192.168.5.22 and not tcp.dstport == 80
Run Code Online (Sandbox Code Playgroud)

tcp.dstport != 80 也有类似的问题;拥有 tcp.dstport != 80 原来意味着“仅匹配 tcp 流量,但仅匹配不是 dstport == 80 的 tcp”

虽然严格来说不是您的问题,但我更喜欢在捕获过滤器中进行过滤(双击捕获选项对话框中的接口名称),其语法与 tcpdump 完全相同。通过避免捕获您告诉它忽略的数据包,它使捕获占用更少的内存和磁盘。缺点是如果您以后想要检查这些数据包,则不会捕获这些数据包,并且您无法在捕获会话期间更改以这种方式选择的过滤器。例如,为了避免捕获进出任何主机的 http 和 ssh 流量以及进出 192.168.5.22 的任何数据包,

not host 192.168.5.22 and not port 80 and not port 22
Run Code Online (Sandbox Code Playgroud)

如果您只想过滤进出该主机的 http 流量,您可以这样做:

not (host 192.168.5.22 and port 80)
Run Code Online (Sandbox Code Playgroud)


Mit*_*tch 3

你的or应该是一个and

ip.src != 1.2.3.4 && ip.dst != 1.2.3.4
Run Code Online (Sandbox Code Playgroud)