Wireshark数据包分析(二)——高级过滤语法
过滤器:
过滤器算是高级的设置了,它可以按照设置的要求来捕获数据包,功能十分强大好用。Wireshark提供了两种数据包的过滤规则:
- 捕获过滤:在数据包捕获时,按指定要求捕获相关数据包。
- 显示捕获:Wireshark会捕获所有是数据包流量,可以按照设置条件来显示相关的数据包。
(1)捕获过滤
当处理的数据包较大或者需要捕获指定的数据包时,可以采用这种设置。其设置在上图是Capture Filter里可以设置。
捕获所使用的BPF(Berkeley Packet Filter)语法表达式:
host、net、port | 名字或是数字 |
src、dst | 传输方向 |
ether、ip、tcp、udp、http、ftp | 匹配的协议 |
三种逻辑运算符:
- 与 (&&) 连接运算符
- 或 ( || ) 选择运算符
- 非 (!) 否定运算符
通过BPF限定词与逻辑运算符可以组合出很多高级实用的过滤规则。例如:
- host 192.168.1.23 //捕获所有与192.168.1.23主机的IPV4流量
- host fe80::2ad0:5aff:fe6f:92b0 //捕获所有与fe80::2ad0:5aff:fe6f:92b0主机的IPV6流量
- host server1 //捕获所有与server1主机流量
- ether host 00-8a-23-e3-d2-df //基于MAC地址过滤
- src host 192.168.1.20 && port 80 //捕获来自192.168.1.2的80端口流量
- dst 192.168.1.20 //捕获发送到192.168.1.20的流量
- !port 8080 //捕获非8080端口的流量
- icmp //只捕获ICMP流量
- !ip //只捕获ipv流量,ip6只捕获ipv6流量
(2)显示捕获
显示过滤可以在主菜单下面的过滤框里设置,在右边的“Expression”里列举了所有的协议及其可用的过滤规则,其设置功能十分强大灵。设置成功后会自动给出过滤表达式,对于熟悉的使用者,可以直接使用过滤表达式来筛选。
相关比较操作符:
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
逻辑操作符:
and | 两个条件同时满足 |
or | 其中一个条件满足 |
xor | 有且仅有一个条件满足 |
not | 没有条件满足 |
相关表达式实例:
- ip.addr==192.168.1.10 or ip.addr==192.168.1.11
- !tcp.port==3389
- tcp.flags.syn==1
- !dns
- https
- tcp.port==23 || tcp.port==22
- smtp || pop || imap
当然,对于常用的过滤表达式,可以保存起来一便再次使用,在主菜单的Capture->Capture Filters里有相关设置。
关于过滤器的设置,可以详见wiki上的官方文档http://wiki.wireshark.org/CaptureFilters ,另外有大牛在freebuf也写的一篇文章:WireShark Filter应用简介
【上一篇】抉 择【下一篇】Wireshark数据包分析(一)——使用入门