抓包过滤器语法和实例

抓包过滤器类型 Type(host、net、port)、方向 Dir(src、dst)、协议 Proto(ether、ip、tcp、udp、http、icmp、ftp 等)、逻辑运算符(&&与、|| 或、!非)

1.  协议过滤

比较简单,直接在抓包过滤框中直接输入协议名即可。

只显示 TCP 协议的数据包列表

tcp

只查看 HTTP 协议的数据包列表

http

只显示 ICMP 协议的数据包列表

icmp
2.  IP 过滤

过滤主机为 192.168.1.104 的数据包

host 192.168.1.104

过滤源主机为 192.168.1.104 的数据包

src host 192.168.1.104

过滤目的主机为 192.168.1.104 的数据包

dst host 192.168.1.104
3.  端口过滤

过滤端口为 80 的数据包

port 80

过滤源端口为 80 的数据包

src port 80

过滤目的端口为 80 的数据包

dst port 80
4.  逻辑运算符 &&与、|| 或、!非

抓取主机地址为 192.168.1.80、目的端口为 80 的数据包

src host 192.168.1.104 && dst port 80

抓取主机为 192.168.1.104 或者 192.168.1.102 的数据包

host 192.168.1.104 || host 192.168.1.102

不抓取广播数据包

!broadcast
3.2 显示过滤器语法和实例
1.  比较操作符

比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于

2.  协议过滤

比较简单,直接在 Filter 框中直接输入协议名即可。注意:协议名称需要输入小写。

只显示 TCP 协议的数据包列表

tcp

只查看 HTTP 协议的数据包列表

http

只显示 ICMP 协议的数据包列表

icmp

Wireshark 常用过滤器表达式汇总_Wireshark

3.  ip 过滤

显示源地址为 112.53.42.42 的数据包列表

ip.src ==112.53.42.42

显示目标地址为 112.53.42.42 的数据包列表

ip.dst==112.53.42.42

 显示源 IP 地址或目标 IP 地址为 112.53.42.42 的数据包列表

ip.addr == 112.53.42.42

Wireshark 常用过滤器表达式汇总_Wireshark_02

4.  端口过滤

 显示源主机或者目的主机端口为 80 的数据包列表

tcp.port ==80

只显示 TCP 协议的源主机端口为 80 的数据包列表

tcp.srcport == 80

只显示 TCP 协议的目的主机端口为 80 的数据包列表

tcp.dstport == 80

Wireshark 常用过滤器表达式汇总_Wireshark_03

5.  http 模式过滤

  只显示 HTTP GET 方法的

http.request.method=="GET"

Wireshark 常用过滤器表达式汇总_Wireshark_04

6.  逻辑运算符为 and/or/not

过滤多个条件组合时,使用 and/or。

比如获取 IP 地址为 192.168.0.104 的 ICMP 数据包表达式为

ip.addr == 192.168.0.104 and icmp

Wireshark 常用过滤器表达式汇总_Wireshark_05

7.  按照数据包内容过滤

假设我要以 ICMP 层中的内容进行过滤,可以单击选中界面中的码流,在下方进行选中数据。

Wireshark 常用过滤器表达式汇总_Wireshark_06

右键单击选中后出现如下界面

Wireshark 常用过滤器表达式汇总_Wireshark_07

选中后在过滤器中显示如下

Wireshark 常用过滤器表达式汇总_Wireshark_08

后面条件表达式就需要自己填写。如下我想过滤出 data 数据包中包含"abcd"内容的数据流。关键词是 contains,完整条件表达式为

data contains "abcd"
3.3 常见用显示过滤需求及其对应表达式
1.  数据链路层

筛选 mac 地址为 04:f9:38:ad:13:26 的数据包

eth.src == 04:f9:38:ad:13:26

筛选源 mac 地址为 04:f9:38:ad:13:26 的数据包-

eth.src == 04:f9:38:ad:13:26
2.  网络层

筛选 ip 地址为 192.168.1.1 的数据包

ip.addr == 192.168.1.1

筛选 192.168.1.0 网段的数据

ip contains "192.168.1"
3.  传输层

筛选端口为 80 的数据包

tcp.port == 80

筛选 12345 端口和 80 端口之间的数据包

tcp.port == 12345 && tcp.port == 80

筛选从 12345 端口到 80 端口的数据包

tcp.srcport == 12345 && tcp.dstport == 80
4.  应用层

特别说明: http 中 http.request 表示请求头中的第一行(如 GET index.jsp HTTP/1.1) http.response 表示响应头中的第一行(如 HTTP/1.1 200 OK),其他头部都用 http.header_name 形式。

筛选 url 中包含.php 的 http 数据包

http.request.uri contains ".php"

筛选内容包含 username 的 http 数据包

http contains "username"