Wireshark的世界里有2种过滤器,分别是采集过滤器和显示过滤器,采用恰当的过滤器,不但能提高数据分析的灵活性,而且能让分析者更快看到自己想要的分析对象。

使用Wireshark采集数据包时,可能有诸多原因会使用到采集过滤器,比如减少采集的数据包大小来节省磁盘空间,加速问题和目标分析,提高软件自身工作速率等等。本节介绍如何使用采集过滤器,以及常见的采集过滤器的特征和表达方式,另外罗列出常用的采集过滤器表达式供参考。

为什么要使用抓包过滤器

当网络中数据流的规模相当庞大时,只抓取满足某些条件的流量就显得十分重要了。如果用户需要在生产环境中进行流量分析,那他一定迟早会需要使用到抓包过器。用户要在开始抓包之前使用抓包过滤器。总之,Wireshark抓取的每个数据包都会提交给抓包引擎,再由抓包引擎将抓取的数据包转换成人类可以读懂的格式。但是,如果用户应用了抓包过滤器,那么Wireshark就会丢弃与用户需求不符的那些数据包。Wireshark不会将这些丢弃的数据包交给抓包引擎进行转换。相比之下,显示过器就要具体和强大得多了。在使用抓包过滤器时,用户一定要谨慎,因为如果有些数据包因为与用户定义的规则不符可能被丢弃,这些丢弃的数据包是无法恢复的。

创建过源器时要使用伯克利数据包过器(BPF)语法,还有很多协议分析软件使用的也是这种语法,因为这种语法是行业标准。这种语法很容易学习和使用,使用基本的格式来构建用户的过滤标准就行了。

 如何使用抓包过滤器

最简单直接的使用方式如下图,在Wireshark主体界面,直接输入抓捕过滤器表达即可。

网络分析 NetInside Wireshark网络分析器

也可以选择已有的过滤器名称,直接使用。如下图。

网深科技 NetInside 网络分析 Wireshark网络分析器

如何管理过滤器

管理过滤器的目的是提前定义常用的过滤器,在使用的使用直接使用,以避免再去查找语法或书写规范等操作。

选择捕获——捕获过滤器,即可打开捕获过滤器管理窗口。

网深科技 NetInside 网络分析 Wireshark管理过滤器

在捕获过滤器窗口,你可以定义自己想要的过滤器并保存,下次使用的使用,直接从下拉菜单选择就行。

在定义捕获过滤器时,有个小技巧,就是多用复制功能,这种先通过复制形似的过滤器,然后再调整修改的方式能够加快过滤器的定义速度,提高定义过滤器的准确性。

网深科技 NetInside 网络分析 Wireshark捕获过滤器

抓包过滤器语法规则

捕获过滤器应用于Winpcap,并使用 Berkeley Packet Filter(BPF)语法。这个语法被广泛用于多种数据包抓包软件,主要因为大部分数据包抓包软件都依赖于使用BPFlibpcap/Winpcap库。

掌握BPF语法对你在数据包层级更深入地探索网络来说是非常关键的。使用BPF语法创建的过滤器被称为表达式,并且每个表达式包含一个或多个原语。每个原语包含一个或多个限定词,然后跟着一个ID名字或者数字,如下图是对限定词的介绍。

网深科技 NetInside 网络分析 Wireshark 抓包过滤器语法规则

下图是一个完整的抓包过滤器示例。

网深科技 NetInside 网络分析 Wireshark 抓包过滤器完整示例

在这个给定表达式的组成部分中,一个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流量