干货,Wireshark使用技巧-过滤规则

时间:2023-03-09 19:25:58
干货,Wireshark使用技巧-过滤规则

过滤规则使用

在抓取报文时使用的规则,称为过滤规则,Wireshark底层是基于Winpcap,因此过滤规则是Winpcap定义的规则,设置过滤规则后,抓到的报文仅包含符合规则的报文,其它报文则被丢弃。

Wireshark的过滤规则,与Linux下tcpdump的过滤规则基本相同,二者可相互参考。

干货,Wireshark使用技巧-过滤规则

在抓包选项内填写过滤规则,然后点开始即可使用过滤规则进行抓包。

过滤规则与协议相关,对wireshark过滤规则,只要了解相应协议(例如UDP、TCP),理解基本语法,都不算复杂。

当前版本的Wireshark已经支持了部分简单的过滤规则,大大地简化了使用难度:

干货,Wireshark使用技巧-过滤规则

过滤规则例子

本节通过一些例子,来说明其用法。

1、仅抓取80端口的TCP报文

tcp port 80

这个规则是比较通用的仅抓取HTTP协议的规则,因为通常情况下,HTTP协议都是走TCP 80端口,这样设置抓包,可以满足大部分场景。

2、抓取80端口和8080端口的TCP报文

tcp port 80 or tcp port 8080

按第一条规则,虽然能满足大部分情况,但大家应该了解,HTTP协议可以设置走任意端口,如比较通用的8080端口,为更完整地抓包,则抓包规则中需要加入8080端口,因此我们使用or将tcp port 80和 tcp port 8080两个条件连接,则能抓取所有80端口和8080端口的TCP报文。

除了or,还有and和not可以用在过滤规则中。

3、抓取IP为192.168.0.1的80端口的TCP报文

tcp port 80 and host 192.168.0.1

and 连接符表示两个条件必须为真,结果才为真,符合连接的两个条件的报文才被抓取。

4、抓取除ip为192.168.0.1并且端口为80的报文外的所有报文

not (tcp port 80 and host 192.168.0.1)

not连接符表示非,则符合not修饰的规则的报文将不被抓取。

()将规则包含,来确定规则的优先级。

5、抓取ip报文

ether proto 0x0800

以太网头部有很多种协议,如果只想抓取一种协议,如IP协议,则按这条规则抓取。ether及proto为固定字段,表示以太头的proto字段,而0x0800为以太头部的IP协议类型值。如果要抓取ARP协议,则将值0x0800改为0x0806即可。

6、抓取IP负载长度大于100字节的报文

ip[2:2] > 100

[]表示偏移,IP协议头部偏移值为2,规则含义为ip数据段内偏移2字节的2字节内容的值大于100,而该内容如果熟悉IP协议的话,可知其为ip.total_length,对ether/tcp/udp这些常用协议,都可采用类似方法取值,当然,优先采用更简便的方法。

过滤规则适用于在抓包之前就设置好了条件,已经了解需要抓取那些报文,丢弃哪些报文的情景,如果需要在抓包之后进一步对报文进行分析,就必须使用显示规则,显示规则将在后续文章中介绍,敬请关注。

如果在过滤规则使用上有不懂的地方,可以关注我进行了解,免费的。

干货,Wireshark使用技巧-过滤规则

长按进行关注。