Wireshark的世界里有2种过滤器,分别是采集过滤器和显示过滤器,采用恰当的过滤器,不但能提高数据分析的灵活性,而且能让分析者更快看到自己想要的分析对象。
使用Wireshark采集数据包时,可能有诸多原因会使用到采集过滤器,比如减少采集的数据包大小来节省磁盘空间,加速问题和目标分析,提高软件自身工作速率等等。本节介绍如何使用采集过滤器,以及常见的采集过滤器的特征和表达方式,另外罗列出常用的采集过滤器表达式供参考。
为什么要使用抓包过滤器
当网络中数据流的规模相当庞大时,只抓取满足某些条件的流量就显得十分重要了。如果用户需要在生产环境中进行流量分析,那他一定迟早会需要使用到抓包过器。用户要在开始抓包之前使用抓包过滤器。总之,Wireshark抓取的每个数据包都会提交给抓包引擎,再由抓包引擎将抓取的数据包转换成人类可以读懂的格式。但是,如果用户应用了抓包过滤器,那么Wireshark就会丢弃与用户需求不符的那些数据包。Wireshark不会将这些丢弃的数据包交给抓包引擎进行转换。相比之下,显示过器就要具体和强大得多了。在使用抓包过滤器时,用户一定要谨慎,因为如果有些数据包因为与用户定义的规则不符可能被丢弃,这些丢弃的数据包是无法恢复的。
创建过源器时要使用伯克利数据包过器(BPF)语法,还有很多协议分析软件使用的也是这种语法,因为这种语法是行业标准。这种语法很容易学习和使用,使用基本的格式来构建用户的过滤标准就行了。
如何使用抓包过滤器
最简单直接的使用方式如下图,在Wireshark主体界面,直接输入抓捕过滤器表达即可。
也可以选择已有的过滤器名称,直接使用。如下图。
如何管理过滤器
管理过滤器的目的是提前定义常用的过滤器,在使用的使用直接使用,以避免再去查找语法或书写规范等操作。
选择捕获——捕获过滤器,即可打开捕获过滤器管理窗口。
在捕获过滤器窗口,你可以定义自己想要的过滤器并保存,下次使用的使用,直接从下拉菜单选择就行。
在定义捕获过滤器时,有个小技巧,就是多用复制功能,这种先通过复制形似的过滤器,然后再调整修改的方式能够加快过滤器的定义速度,提高定义过滤器的准确性。
抓包过滤器语法规则
捕获过滤器应用于Winpcap,并使用 Berkeley Packet Filter(BPF)语法。这个语法被广泛用于多种数据包抓包软件,主要因为大部分数据包抓包软件都依赖于使用BPF的libpcap/Winpcap库。
掌握BPF语法对你在数据包层级更深入地探索网络来说是非常关键的。使用BPF语法创建的过滤器被称为表达式,并且每个表达式包含一个或多个原语。每个原语包含一个或多个限定词,然后跟着一个ID名字或者数字,如下图是对限定词的介绍。
下图是一个完整的抓包过滤器示例。
在这个给定表达式的组成部分中,一个src限定词和192.168.0.10组成了一个原语。这个原语本身就是表达式,可以用它只捕获那些源IP地址是192.168.0.10的流量。
你可以使用以下3种逻辑运算符,对原语进行组合,从而创建更高级的表达式。
- 连接运算符与(&&)
- 选择运算符或(II)
- 否定运算符非(!)
举例来说,下面的这个表达式只对源地址是192.168.0.10和源端口或目标端口是80的流量进行捕获。
src 1921680.108 && port 80
常见抓包过滤器列表
以下是常见的抓包过滤器,供参考。
过滤器 |
过滤器 |
host 192.168.1.1 |
所有与主机192.168.1.1相关的流量 |
port 8080 |
所有与8080端口相关的流量 |
src host 192.168.1.1 |
所有从主机192.168.1.1始发的流量 |
dst host 192. 168.1.1 |
所有去往主机192.168.1.1的流量 |
src port 53 |
所有由53端口发出的流量 |
dst port 21 |
所有去往21端口的流量 |
src 192.168.1.1 and tcp port21 |
所有从19216811且与tcp端口21相关的流量 |
dst 192.168.1.1 or dst 192.168.1.2 |
所有去往192.168.1.1或者去往192.168.1.2的流量 |
not port 80 |
所有与80端口不相关的流量 |
not src host 192.168.1.1 |
所有非主机192.168.1.1发出的流量 |
not port 21 and not port 22 |
所有既与21端口无关,也与22端口无关的流量 |
tcp |
所有tcp流量 |