抓包过滤器语法和实例
抓包过滤器类型 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
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
4. 端口过滤
显示源主机或者目的主机端口为 80 的数据包列表
tcp.port ==80
只显示 TCP 协议的源主机端口为 80 的数据包列表
tcp.srcport == 80
只显示 TCP 协议的目的主机端口为 80 的数据包列表
tcp.dstport == 80
5. http 模式过滤
只显示 HTTP GET 方法的
http.request.method=="GET"
6. 逻辑运算符为 and/or/not
过滤多个条件组合时,使用 and/or。
比如获取 IP 地址为 192.168.0.104 的 ICMP 数据包表达式为
ip.addr == 192.168.0.104 and icmp
7. 按照数据包内容过滤
假设我要以 ICMP 层中的内容进行过滤,可以单击选中界面中的码流,在下方进行选中数据。
右键单击选中后出现如下界面
选中后在过滤器中显示如下
后面条件表达式就需要自己填写。如下我想过滤出 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"