Wireshark捕获过滤器和显示过滤器

本文介绍了Wireshark的捕获过滤器和显示过滤器,解释了两者区别和应用场景。捕获过滤器使用BPF语法,用于在捕获阶段筛选数据,而显示过滤器在分析阶段过滤已捕获的报文,更加强大。文章提供了相关原语和运算符示例,并分享了实用的过滤技巧。
摘要由CSDN通过智能技术生成

wireshark过滤器分为两种,显示过滤器和捕获过滤器。显示过滤器指的是针对已经捕获的报文,使用过滤器语法过滤出符合规则的报文。捕获过滤器指的是提前设置好过滤规则,只捕获符合过滤规则的报文。显示过滤器和捕获过滤器在报文分析的过程中经常使用到,因此非常的实用。往往初次接触wireshark,可能会分不清这两种过滤规则,本文就先简单介绍一下这两种过滤器。

为什么wireshark使用两套过滤器规则呢?原因在于wireshark使用winpcap或者libpcap第三方的报文捕获库来对网卡的报文进行捕获,事实上其他很多软件都有使用libpcap进行报文捕获。因此捕获过滤器就沿用了这些第三方库提供的捕获过滤规则。但是对于已经捕获报文的解析和处理,wireshark本身构建了一套新的过滤规则,即显示过滤器,要更加的复杂和强大。

为什么要使用捕获过滤器呢?因为在有些场景下,网卡上的流量可能很大,每秒几个G很甚至更多。而很多的流量并不是我们关心的数据,这个时候就需要使用捕获过滤器捕获指定的数据。无用的数据一方面会干扰分析,另一方面浪费存储空间以及拷贝时间。

图1就是wireshark捕获->选项中设置捕获过滤器的地方:
在这里插入图片描述
图1
我在图中设置了主机的IP地址以及端口两个过滤规则,表示捕获地址为192.168.0.115同时端口为53的报文,从直观上来说是很容易理解的,我在此通过一些示例做概括性的介绍。

捕获过滤规则使用BPF语法,主要提供以下三类原语,这几类原语可以通过运算符组合成为复杂的过滤规则。常见的运算符包括逻辑运算符and or not ,即与或非,以及比较运算符> < 等。
1,类型原语,包括地址原语 host 和net、端口原语 port port range:

host含义比较广泛,既可以表示以太网层的主机地址,也可以是IP层主机地址,也可以是是域名。因此可以使用如三种表达式:

ether host 00:00:5e:00:53:00
host 192.168.0.115
host www.example.com 

net可以用于过滤多个IP地址,当然当www.example.com 对应着多个IP地址的时候,也相当于过滤多个IP。

net 192.168.0.0/24
port 53 过滤单个端口
portrange 1-1024 过滤一组端口

2,方向原语,主要是src和dst:

src host 192.168.0.115 源IP地址192.168.0.115
dst host 192.168.0.116 目的IP地址192.168.0.116

3,协议原语,包括常见的ether,arp,rarp,ip,ip6,tcp,udp。如果想要确认是否支持该协议的捕获过滤,在图1中输入该协议的名称,如果过滤规则变绿说明支持,如果为红则不支持。

not arp and port not 53 非ARP以及非53号端口报文
ip[2:2] > 100 IP协议第三个字节开始取两个字节表示的长度(也就是IP协议的length值)大于100个字节

其实也不必去强行背下来这些原语,对于常见捕获过滤规则,wireshark也是提供示例的,对照着写应该是可以满足日常使用需求,如图2:
在这里插入图片描述
图2
如果有更为复杂的捕获条件编写需求,可以参考这里。但是由于捕获过滤器相对来说支持的协议还是很少,远小于wireshark支持的协议数量,因此只能够做到初步的过滤,分析时候需要进一步的使用显示过滤器。

对于Wireshark显示过滤器,wireshark在其使用手册中也是做了较为详细的说明的,详见这里。通常来说这类的文档总是面面俱到,读起来并不容易。就像你可能要了解HTTP协议,但是当你阅读RFC2616(HTTP协议规范文档)的时候,需要反复的研读几遍,但是于多数人来说,不如读一本《图解HTTP》有用。因此我这里面简单的说明几点,使得你能够在使用wireshark这款软件的时候做到最大程度的方便易用,而不是去查看令人头大的文档,效果反而不佳。

图3是通过点击wireshark右上角的表达式,显示出的wireshark 所有显示过滤器的列表
在这里插入图片描述
图3
可以看到wireshark支持eth协议,因此提供了关于eth协议字段的过滤条件,对图3做如下说明:

  • 1,红框1便是wireshark解析eth协议所能够提供对于eth协议字段以及wireshark拓展的一些字段名称。
  • 2,点击eth.type可以看到红框2,所表示的是eth.type该字段能够使用的一些关系运算符。
  • 3,红框3表示的是一些eth.type的预定义值,可以看到涵盖了所有eth.type的可能值。例如过滤条件eth.type ==
    0x800。

事实上wireshark针对所支持所有协议的字段都提供了形如红框2以及红框3所表示的运算符以及预定义值,可以说非常的友好。因此在编写特定过滤规则的时候,按照前述的几个步骤编写,应该问题不大。但是对于有的协议wireshark提供了很多字段的过滤,一一的查看比较耗时。同时有的字段的过滤条件十分的接近,使用者在使用的时候也无法区分其含义,例如图4中显示的certificate type的过滤规则估计很多人是难以区分:
在这里插入图片描述
图4
还有的情况是并没有特别明确的过滤目标,只想过滤类似某一片报文的数据,这个时候该怎么办呢?我在实际在分析报文的过程中是如图5操作:
在这里插入图片描述
选中想要过滤的报文中的一个字段,右击->作为过滤器应用->选中,这个时候,过滤器那一栏就会出现想要的过滤规则,在此基础上就行按照图3中红框2和红框3中的提示修改即可。可以看到我们并不需要去查看wireshark提供的那个复杂的英文手册,基本上也能够满足常见的分析要求,这就是比较实用的技巧。

上述就是对于显示过滤器和捕获过滤器的简单说明,希望本小节的学习对你在分析报文时候能够有一定帮助。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Wireshark是一个开源的网络数据包分析工具,它可以用于捕获、分析和显示网络数据包。在Wireshark中,有两种类型的过滤器捕获过滤器显示过滤器。 1. 捕获过滤器(Capture Filters): 捕获过滤器用于在捕获数据包时过滤出我们感兴趣的数据包。它们在捕获数据包之前应用,以减少需要处理的数据包数量,从而节省系统资源。捕获过滤器使用一种特定的语法来指定过滤条件,只有符合条件的数据包才会被捕获。 一些常见的捕获过滤器语法示例: - host 192.168.0.1:只捕获源或目标IP地址为192.168.0.1的数据包。 - port 80:只捕获目标或源端口为80的数据包。 - tcp:只捕获TCP协议的数据包。 - udp and src host 192.168.0.1:只捕获源IP地址为192.168.0.1且协议为UDP的数据包。 2. 显示过滤器(Display Filters): 显示过滤器用于在Wireshark显示我们感兴趣的数据包。它们在捕获数据包后应用,可以根据特定的条件过滤和显示数据包。显示过滤器使用一种类似于捕获过滤器的语法来指定过滤条件。 一些常见的显示过滤器语法示例: - ip.addr == 192.168.0.1:只显示源或目标IP地址为192.168.0.1的数据包。 - tcp.port == 80:只显示目标或源端口为80的数据包。 - http:只显示HTTP协议的数据包。 - ip.addr == 192.168.0.1 and tcp.port == 80:只显示源IP地址为192.168.0.1且目标或源端口为80的数据包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值