过滤器
过滤器用来在捕获流量或查看流量时对特定流量进行筛选
捕获过滤器
捕获过滤器用与在捕获时过滤特定流量不在过滤范围内的数据包将会被丢弃
通过捕获过滤器可以选择性地捕获某些特定的数据包, 减轻分析的压力
捕获过滤器语法
基本形式:
操作符:
连接运算符 与 (&&)
选择运算符 或 (||)
否定运算符 非 (!)
限定词 | 说明 |
---|---|
src | 源地址 |
dst | 目标地址 |
host | 地址 |
port | 端口 |
主机名和地址过滤器
使用host过滤特定主机的流量
通过ipv4地址
通过ipv6地址
通过主机名
加入ether过滤主机mac地址
加入src过滤来自特定主机的流量
加入dst过滤发往特定主机的流量
端口过滤器
使用port过滤特定端口流量
排除特定端口, 捕获其他的所有流量
同样可以使用src和dst过滤来自和发往特定端口的流量
协议过滤器
通过协议过滤器过滤特定协议的流量
只看IP协议的流量
只看icmp协议的流量
......等等
协议域过滤器
通过协议域过滤器可以匹配一个数据包中某一个特定位置开始的特定数量的字节
在icmp协议中数据包开头偏移量为0的字节代表一些特定信息,
例如想要过滤代表目标不可达信息的icmp数据包(开头字节为3)
只检查echo请求(类型8)或echo回复(类型0)的数据包
加上:
可以限定数据字节的长度
例如捕获icmp目标主机不可达, 目标不可访问的数据包(类型3, 代码1)
加上&
限定特定字节的某个比特位
例如在tcp数据包中, 标志位在第13个字节, 但这个字节的每一个比特位都是一个标志
过滤RST标志为4的数据包(在第13个字节的第4个比特位)
常用过滤器表达式
过滤器 | 含义 |
---|---|
tcp[13]&32 == 32 | 设置了URG位的tcp数据包 |
tcp[13]&16 == 16 | 设置了ACK位的tcp数据包 |
tcp[13]&8 == 8 | 设置了PSH位的tcp数据包 |
tcp[13]&4 == 4 | 设置了RST位的tcp数据包 |
tcp[13]&2 == 2 | 设置了SYN位的tcp数据包 |
tcp[13]&1 == 1 | 设置了FIN位的tcp数据包 |
tcp[13] == 18 | TCP SYN-ACK数据包 |
ether host 00:00:00:00:00:00 | 流入或流出特定mac地址的流量 |
!ether host 00:00:00:00:00:00 | 不流入或流出特定mac地址的流量 |
broadcast | 广播流量 |
icmp | icmp流量 |
icmp[0:2] | ICMP目标不可达, 主机不可达 |
ip | ipv4流量 |
ip6 | ipv6流量 |
udp | udp流量 |
显示过滤器
显示过滤器用于在已经捕获到的数据包中过滤查看特定的数据包
显示过滤器的语法基本以协议为中心并且遵从protocol.feature.subfeature的格式
查看IP地址为127.0.0.1的流量
查看长度小于128字节的数据包
比较操作符
操作符 | 说明 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
常用显示过滤器
过滤器 | 说明 |
---|---|
!tcp.port == 3389 | 排除RDP流量 |
tcp.flags.syn == 1 | 具有SYN标志位的TCP数据包 |
tcp.flags.rst == 1 | 具有RST标志位的TCP数据包 |
!arp | 排除ARP流量 |
http | 查看http流量 |
tcp.port == 23 \|\| tcp.port == 21 | 文本管理流量(Telnet或FTP) |
smtp \|\| pop \|\| imap | 文本email流量(SMTP, POP或IMAP) |
小技巧:
在输入显示过滤器的输入框右边的加号, 可以手动添加自己常用的显示过滤器:

在手动输入显示过滤器后保存为常用的显示过滤器固定在输入框的最右边, 以便于快速应用
直接应用过滤器
当对某个协议不熟悉或完全不清楚时, 可以直接在解析视图中找到想要的部分, 右键将其直接作为过滤器应用:
如rdp协议中的按键按下事件, 直接右键EventHeaderCode
部分选择 作为过滤器应用->选中
就可以直接将其作为过滤器来进行过滤

这里自动生成了过滤器:
对于不熟悉的协议或者内容都可以这样进行过滤