1.简介
Wireshark是一款强大的网络分析工具,它可以捕获和显示网络上的数据包,并提供多种过滤功能,让用户可以快速地找到自己感兴趣的数据包。
Wireshark的过滤功能分为两种:捕获过滤和显示过滤。
- 捕获过滤是在数据包进入Wireshark之前就对其进行筛选,只保留符合条件的数据包,从而减少捕获的数据量。
- 显示过滤是在数据包已经进入Wireshark之后,对其进行再次筛选,只显示符合条件的数据包,从而方便用户分析。
Wireshark的过滤语法有两种:BPF语法和Wireshark语法。
- BPF语法是一种通用的数据包过滤语言,它可以用于多种网络分析工具,如tcpdump、libpcap等。
- Wireshark语法是一种专门为Wireshark设计的过滤语言,它可以利用Wireshark的协议解析能力,对数据包的各个层次和字段进行过滤。
本文是Wireshark部分的第一节,介绍两种过滤语法的基本写法。
2.BPF语法
BPF语法的基本格式是:
类型 方向 协议 地址 端口
其中,
- 类型-表示数据包的类型,可以是host、net、port、portrange等;
- 方向-表示数据包的方向,可以是src、dst、src and dst、src or dst等;
- 协议-表示数据包的协议,可以是ip、tcp、udp、icmp等;
- 地址-表示数据包的主机地址,可以是IP地址或域名;
- 端口-表示数据包的端口号,可以是数字或服务名。
BPF语法的一些示例如下:
-
host 192.168.1.1
:过滤所有与192.168.1.1相关的数据包,无论是源地址还是目的地址。 -
tcp port 80
:过滤所有使用TCP协议并且端口号为80的数据包,无论是源端口还是目的端口。 -
ip src 10.0.0.1 and udp dst port 53
:过滤所有使用IP协议,源地址为10.0.0.1,目的端口为53的UDP数据包。 -
net 172.16.0.0/16
:过滤所有属于172.16.0.0/16网段的数据包。
3.Wireshark语法
Wireshark语法的基本格式是:
字段 运算符 值
字段-表示数据包的字段,可以是协议名、字段名或别名;
运算符-表示比较运算符,可以是==、!=、>、<、>=、<=、contains、matches等;
值-表示字段的值,可以是数字、字符串、布尔值等。
Wireshark基础语法的一些示例如下:
-
ip.addr == 192.168.1.1
:过滤所有IP地址等于192.168.1.1的数据包,无论是源地址还是目的地址。 -
tcp.port == 80
:过滤所有TCP端口等于80的数据包,无论是源端口还是目的端口。 -
udp.srcport == 53 and dns.flags.response == 0
:过滤所有源端口为53,且DNS标志位为请求的UDP数据包。 -
http.request.method == "GET"
:过滤所有HTTP请求方法为GET的数据包。 -
ssl.handshake.type == 1
:过滤所有SSL握手类型为Client Hello的数据包。 -
ip.addr matches "10\.0\.\d+\.\d+"
:过滤所有IP地址符合正则表达式10.0.\d+.\d+的数据包。