Wireshark系列之4 捕获过滤器

2018年8月4日17:36:19 发表评论 617 views

Wireshark中往往会抓到很多数据,这时我们就需要用到过滤器Filter来筛选出我们所关心的数据包。

Wireshark提供了两种过滤器:

  • 捕获过滤器:在抓包之前就设定好过滤条件,然后只抓取符合条件的数据包。
  • 显示过滤器:在已捕获的数据包集合中设置过滤条件,隐藏不想显示的数据包,只显示符合条件的数据包。

需要注意的是,这两种过滤器所使用的语法是完全不同的,在本篇博文中将介绍捕获过滤器。


使用捕获过滤器的主要原因就是性能。如果你知道并不需要分析某个类型的流量,那么可以简单地使用捕获过滤器过滤掉它,从而节省那些会被用来捕获这些数据包的处理器资源。当处理大量数据的时候,使用捕获过滤器是相当好用的。

新版Wireshark的初始界面非常简洁,主要就提供了两项功能:先设置捕获过滤器,然后再选择负责抓包的网卡。由此可见捕获过滤器的重要性。

比如我们希望只抓取与80端口之间的通信,那么可以设置过滤规则“port 80”。

Wireshark系列之4 捕获过滤器

捕获过滤器应用于Winpcap,并使用Berkeley Packet Filter(BPF)语法,其语法规则如下:

协议 方向 类型 数据
  • 协议,可能的值:ether、ip、arp、tcp、udp、http、ftp……,如果没有特别指明是什么协议,则默认使用所有支持的协议。
  • 方向,可能的值:src、dst,如果没有特别指明来源或目的地,则默认使用“src or dst”作为关键字。例如,“host 10.2.2.2”与“src or dst host 10.2.2.2”是一样的。
  • 类型,可能的值:net、port、host,如果没有指定此值,则默认使用”host”关键字。例如,“src 10.1.1.1”与“src host 10.1.1.1”相同。

我们还可以使用以下三种逻辑运算符,对表达式进行组合,从而创建更高级的表达式。

逻辑与&&,逻辑或||,逻辑非!

比如下面这个表达式,只捕获源地址是192.168.0.10并且源端口或目的端口是80的数据包。

src 192.168.0.10 && port 80

应用示例

如果我们希望抓取某台特定主机或设备的数据包,那么可以根据设备的IP地址或MAC地址来设置过滤规则。

比如只抓取IP地址为192.168.0.10的数据包。

host 192.168.0.10

如果考虑到主机的IP地址可能会变化,那么可以指定MAC地址进行过滤。

ether host 00-50-56-C0-00-01

也可以根据数据的流向来过滤:

 

src host 192.168.0.10 //从192.168.0.10发出的数据包

dst host 192.168.0.10 //发往192.168.0.10的数据包

ether src host 00-50-56-C0-00-01 //从00-50-56-C0-00-01发出的数据包

ether dst host 00-50-56-C0-00-01 //发往00-50-56-C0-00-01的数据包

需要注意的是,host在表达式中是默认选项,因而上面的这几个表达式无论是否加上host都是表达相同含义。

再比如通过端口进行过滤:

 

port 8080 //只捕获8080端口的流量

!port 8080 //捕获8080端口外的所有流量

dst port 8080 //只捕获前往8080端口的流量

通过协议或通信方式进行过滤:

 

icmp //只捕获ICMP流量

!broadcast //不要抓取广播包

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: