Wireshark是一款开源的网络协议分析器,用于实时捕获和分析网络流量。它支持多种操作系统,并且具有丰富的功能和灵活的过滤器语法。下面将详细介绍Wireshark的过滤器语法,并通过案例进行说明。
一、Wireshark过滤器类型
Wireshark提供了两种类型的过滤器:捕获过滤器(Capture Filter)和显示过滤器(Display Filter)。
1. 捕获过滤器(Capture Filter)
捕获过滤器用于在捕获网络流量时过滤掉不需要的数据包,以减少数据量和提高分析效率。它的语法基于BPF(Berkeley Packet Filter)语法。
2. 显示过滤器(Display Filter)
显示过滤器用于在捕获完成后对数据包进行过滤,只显示符合特定条件的数据包。它的语法更加灵活和强大,支持多种协议和字段的过滤。
二、捕获过滤器语法
捕获过滤器的语法基于BPF语法,以下是一些常用的操作符和示例:
1. 类型操作符
-
host
:指定主机名或IP地址。 -
net
:指定网络地址和子网掩码。 -
port
:指定端口号。
2. 协议操作符
-
proto
:指定协议类型,如tcp
、udp
等。
3. 方向操作符
-
src
:指定源地址或端口。 -
dst
:指定目的地址或端口。
4. 逻辑操作符
-
and
、&&
:逻辑与。 -
or
、||
:逻辑或。 -
not
、!
:逻辑非。
5. 示例
- 捕获来自IP地址为192.168.1.1的所有TCP数据包:
tcp src host 192.168.1.1
- 捕获目标端口为80的所有数据包:
port 80
- 捕获所有HTTP请求数据包:
tcp port 80 and http.request
三、显示过滤器语法
显示过滤器的语法更加灵活和强大,以下是一些常用的操作符和示例:
1. 协议操作符
-
tcp
、udp
、http
等:指定协议类型。
2. 字段操作符
-
src
、dst
:指定源地址或目的地址。 -
port
:指定端口号。 -
len
:指定数据包长度。 -
ip.addr
、ip.srcaddr
、ip.dstaddr
:指定IP地址。
3. 比较操作符
-
==
:等于。 -
!=
:不等于。 -
>
、<
、>=
、<=
:大于、小于、大于等于、小于等于。
4. 逻辑操作符
-
and
、&&
:逻辑与。 -
or
、||
:逻辑或。 -
not
、!
:逻辑非。
5. 字符串操作符
-
contains
:包含指定字符串。 -
matches
:正则表达式匹配。
6. 示例
- 显示所有HTTP GET请求数据包:
http.request.method == "GET"
- 显示长度大于1000字节的所有TCP数据包:
tcp and greater 1000
- 显示包含特定关键词的HTTP响应数据包:
http contains "Keyword"
四、案例说明
案例1:捕获特定主机的所有TCP数据包
假设我们需要捕获来自IP地址为192.168.1.100的所有TCP数据包,可以按照以下步骤操作:
- 打开Wireshark,选择捕获接口。
- 在捕获过滤器输入框中输入:
tcp src host 192.168.1.100
- 点击开始捕获按钮,等待数据包捕获完成。
- 使用显示过滤器进一步过滤数据包,如只显示HTTP请求数据包:
http.request
案例2:分析HTTP请求和响应数据包
假设我们需要分析某个HTTP请求和响应数据包的内容,可以按照以下步骤操作:
- 打开Wireshark,选择捕获接口。
- 开始捕获数据包,直到捕获到所需的HTTP请求和响应数据包。
- 在数据包列表中找到HTTP请求和响应数据包,点击其中一个数据包。
- 在数据包详情窗口中查看数据包的内容,如请求头、请求体、响应头等。
- 使用显示过滤器进一步过滤数据包,以便更好地分析数据包内容,如只显示HTTP GET请求数据包:`http
- 在过滤后的数据包列表中,你可以看到所有的HTTP数据包。HTTP请求通常显示为"HTTP Request"或"TCP Previous segment not captured",而HTTP响应通常显示为"HTTP Response"或"TCP Segment of a reassembled PDU"。
- 为了分析某个具体的HTTP请求和响应,你可以双击数据包列表中的某个HTTP数据包,Wireshark将显示该数据包的详细信息。在详细信息窗口中,你可以看到HTTP请求的方法(GET、POST等)、URL、请求头以及请求体(如果有的话)。对于HTTP响应,你可以看到响应状态码(如200 OK)、响应头以及响应体。
- 为了更好地理解HTTP请求和响应之间的关系,你可以使用Wireshark的"Follow"功能来跟踪HTTP会话。选择菜单栏的"Analyze" -> "Follow" -> "TCP Stream",然后选择你感兴趣的HTTP请求或响应数据包。Wireshark将显示一个会话窗口,其中包含了该HTTP会话的所有数据包,按时间顺序排列。
- 除了查看基本的HTTP请求和响应信息外,你还可以深入分析数据包的其他方面,如TCP层的信息(如序列号、确认号、窗口大小等)、SSL/TLS加密信息(如果HTTP通信使用了加密)等。