显示过滤器表达式的作用是在Wireshark抓包工具捕获数据包之后,从已捕获的所有数据包中显示出符合条件的数据包,隐藏不符合条件的数据包。显示过滤器的表达式区分大小写。
筛选分为协议筛选和表达式筛选。
协议筛选根据通信协议筛选数据包,如HTTP、FTP等。常用的协议有UDP、TCP、ARP、ICMP、SMTP、POP、DNS、IP、Telnet、SSH、RDP、RIP、OSPF等。
表达式筛选分为基本过滤表达式和复合过滤表达式。
一条基本的表达式由过滤项、过滤关系、过滤值3项组成。
例如,在ip.addr == 192.168.1.1这条表达式中,ip.addr是过滤项、==是过滤关系、192.168.1.1是过滤值。这条表达式的意思是找出所有IP中源或目标IP地址等于192.168.1.1的数据包。
1.过滤项
初学者往往会感觉过滤表达式比较复杂,最主要的原因就是过滤项:一是不知道有哪些过滤项,二是不知道过滤项该怎么写。
这两个问题有一个共同的答案,Wireshark的过滤项是“协议+ . +协议字段”的模式。以端口为例,端口出现在TCP中,那么有端口这个过滤项的写法就是tcp.port。
推广到其他协议,如ETH、IP、HTTP、Telnet、FTP、ICMP、SNMP等都是这个书写思路。当然,出于缩减长度的原因,有些字段没有使用协议规定的名称,而是使用简写(例如,Destination Port在Wireshark中写为dstport),又加了一些协议中没有的字段(例如,TCP只有源端口和目标端口字段,为了简便,使用Wireshark增加了tcp.port字段来同时代表源端口和目标端口),但总的思路没有变。而且在实际使用时输入“协议+ . ”,Wireshark就会有支持的字段提示,看一下名称就大概知道要用哪个字段了。
2.过滤关系
过滤关系就是大于、小于、等于等几种等式关系,我们可以直接参照官方给出的表,如表1所示。注意,其中有“English”和“C-like”两个字段,“English”和“C-like”这两种写法在Wireshark中是等价的,都是可用的。
表1 基本过滤关系
3.过滤值
过滤值就是设定的过滤项应该满足过滤关系的标准,如500、5000、50000等。过滤值的写法一般已经被过滤项和过滤关系设定好了,只需要填写期望值即可。