Appearance
Appearance
抓包过滤器(Capture Filter)用于在开始抓包之前限制 Wireshark 实际写入抓包文件的数据包。
它适合用来减少无关流量、控制抓包文件大小,或者在高流量环境中降低后续分析压力。抓包开始后,抓包过滤器不能直接修改;如果要换条件,通常需要停止当前抓包并重新开始。
关键判断:抓包过滤器决定“抓哪些包”;显示过滤器决定“已抓到的包里显示哪些”。
两者语法不同,不能混用。
| 对比项 | 抓包过滤器 | 显示过滤器 |
|---|---|---|
| 使用阶段 | 抓包之前 | 抓包之后 |
| 作用 | 决定哪些数据包会被捕获并写入文件 | 在已抓到的数据包中筛选显示内容 |
| 典型语法 | tcp port 80 | tcp.port == 80 |
| 是否影响抓包文件大小 | 会影响 | 不影响 |
| 是否可随时修改 | 抓包开始后不能直接修改 | 可以随时修改 |
| 语法来源 | libpcap / BPF 语法 | Wireshark display filter 语法 |
如果你只是想在已经抓好的文件里查找某类流量,请使用显示过滤器。
如果你确定某些流量完全不需要保存,才使用抓包过滤器。
只抓取发往或来自某个 IP 的流量:
host 172.18.5.4只抓取某个网段内的流量:
net 192.168.0.0/24等价写法:
net 192.168.0.0 mask 255.255.255.0只抓取来自某个网段的流量:
src net 192.168.0.0/24只抓取发往某个网段的流量:
dst net 192.168.0.0/24只抓取 DNS 流量:
port 53抓取某个端口范围内的 TCP 流量:
tcp portrange 1501-1549在旧版本 libpcap 中,也可能需要使用更底层的字节偏移写法:
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)抓取某台服务器上非 HTTP、非 SMTP 的流量:
host www.example.com and not (port 80 or port 25)等价写法:
host www.example.com and not port 80 and not port 25抓取除 ARP 和 DNS 之外的流量:
port not 53 and not arp只抓取 EAPOL 流量:
ether proto 0x888e排除发往 LLDP 组播地址的以太网帧:
not ether dst 01:80:c2:00:00:0e只抓取 IPv4 流量,排除 ARP、STP 等低层协议:
ip只抓取单播流量,减少广播和组播噪声:
not broadcast and not multicast抓取 IPv6 all-nodes 组播流量,可用于观察路由器公告和邻居发现:
dst host ff02::1下面的过滤器查找 TCP payload 开头的 GET 字节序列:
port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420这类过滤器依赖 TCP 头长度计算,适合明确知道要匹配的字节位置时使用。
Blaster 蠕虫示例:
dst port 135 and tcp port 135 and ip[2:2] == 48Welchia 蠕虫示例:
icmp[icmptype] == icmp-echo and ip[2:2] == 92 and icmp[8:4] == 0xAAAAAAAA查找从本地网段发起、目标为常见传播端口的 SYN 数据包:
(dst port 135 or dst port 445 or dst port 1433) and tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack = 0 and src net 192.168.0.0/24Heartbleed exploit 相关流量示例:
tcp src port 443 and (tcp[((tcp[12] & 0xF0) >> 4) * 4] = 0x18) and (tcp[((tcp[12] & 0xF0) >> 4) * 4 + 1] = 0x03) and (tcp[((tcp[12] & 0xF0) >> 4) * 4 + 2] < 0x04) and ((ip[2:2] - 4 * (ip[0] & 0x0F) - 4 * ((tcp[12] & 0xF0) >> 4)) > 69)当 Wireshark 判断自己正在通过 SSH、Remote Desktop 等方式远程运行时,会尝试自动设置默认抓包过滤器,以避免把远程控制会话本身抓进来。
| 环境变量 | 默认过滤器含义 |
|---|---|
SSH_CONNECTION | 排除当前 SSH 连接两端主机和端口 |
SSH_CLIENT | 排除当前 SSH 客户端连接 |
REMOTEHOST | 排除远程主机流量 |
DISPLAY | 排除图形显示相关远程主机流量 |
CLIENTNAME | 排除 RDP 常用端口 3389 |
其中 addr_family 会根据地址类型替换为 ip 或 ip6。
Imported from https://wiki.wireshark.org/CaptureFilters on 2020-08-11 23:12:05 UTC