在Wireshark运行过程中选择搜索(Ctrl-F),第一个默认的搜索选项就是显示过滤器。
显示过滤器用于捕获文件,用来告诉Wireshark只显示那些符合过滤条件的数据包。
显示过滤器比捕获过滤器更加常用,是因为它可以让你对数据包进行过滤,却并不省略掉捕获文件中的其他数据。也就是说如果你想回到原先的捕获文件,你仅仅需要清空显示过滤表达式。
你可能需要使用显示过滤器,来清理过滤文件中不相关的广播流量,比如清理掉Packet List面板中与当前的分析问题无关的ARP广播,但是那些ARP广播之后可能会有用,所以最好暂时把他们过滤掉,而不是删除他们。
如果想要过滤掉不惑窗口中所有的ARP数据包,将你的鼠标放到Packet List面板上方的Filter文本框中,然后输入“!ARP”,就可以从Packet List面板中去掉所有的ARP数据包了,如下图。
过滤器表达式语法结构
你会经常用到捕获或者显示过滤器来对某一个协议进行过滤。举例来说,如果你在解决一个TCP问题,那么你就只希望看到捕获文件中的TCP流量。一个简单的tcp过滤器就可以解决这个问题。
加入为了解决你的TCP问题,你使用了恨过ping功能,所以也就产生了很多ICMP流量,你可以通过“!icmp”这个过滤器表达式,将你捕获文件中的ICMP流量屏蔽掉。
比较操作符可以让你进行值的比较。举例来说,当你检查一个TCP/IP网络中的问题时,你可能经常需要检查和某一个IP地址相关的数据包。等于操作符可以让你创建一个只显示192.168.0.1这个IP地址相关数据包的过滤器。
ip.addr==192.168.0.1
现在假设你只需要查看哪些长度小于128字节的数据包,你可以使用“小于或等于”操作符,来完成这个要求,其过滤器表达式如下。
frame.len<=128
Wireshark过滤器表达式的比较操作符
操作符 | 说明 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑运算符可以让你将多个过滤器表达式合并到一个语句中,从而极大提高过滤器的效率。举例来说,如果我们只想显示两个IP地址上的数据包,我们可以使用or操作符来创建一个表达式,只显示这两个IP地址的数据包,如下所示。
ip.addr==192.168.0.1 or ip.addr==192.168.0.2
Wireshark的逻辑操作符
操作符 | 说明 |
---|---|
and | 两个条件需同时满足 |
or | 其中一个条件被满足 |
xor | 有且仅有一个条件被满足 |
not | 没有条件被满足 |
显示过滤器表达式实例
常用显示过滤器
过滤器 | 说明 |
---|---|
!tcp.port==3389 | 排除RDP流量 |
tcp.flag.syn==1 | 具有SYN标志位的TCP数据包 |
tcp.flag.rst==1 | 具有RST标志位的TCP数据包 |
!arp | 排除ARP流量 |
http | 所有HTTP流量 |
tcp.port23 || tcp.port21 | 文本管理流量(Telnet或FTP) |
smtp || pop || imap | 文本email流量(SMTP、POP或IMAP) |