本文最后更新于 2026年5月3日 下午
Wireshark 过滤器笔记
1. 核心概念:捕获过滤器 vs 显示过滤器
| 过滤器类型 |
作用时机 |
语法体系 |
核心用途 |
关键注意事项 |
| 捕获过滤器 |
抓包开始前预先设置 |
BPF 伯克利包过滤语法 |
直接丢弃无关流量,缩减抓包文件体积、节省系统内存与磁盘开销 |
语法与显示过滤器完全不互通,不可直接照搬复用 |
| 显示过滤器 |
抓包过程中或抓包结束后使用 |
Wireshark 专属增强语法 |
仅在界面隐藏无关报文,原始流量完整保留,适用于精细化二次筛选与协议分析 |
支持字段匹配、正则匹配、多条件逻辑组合,功能远强于捕获过滤器 |
经典语法对照(通用必记)
- 显示过滤器:
tcp.port == 80
- 捕获过滤器:
tcp port 80
2. 显示过滤器(协议分析最常用)
2.1 语法基础
1
| 协议.字段 比较运算符 值 [逻辑运算符 拼接其他条件]
|
- 输入框颜色校验规则:
- 绿色:语法格式完全正确
- 红色:存在语法错误,无法生效
- 黄色:语法合法但逻辑存在歧义,可能不符合预期匹配效果
2.2 比较运算符
| 符号写法 |
英文关键字 |
含义说明 |
== |
eq |
等于 |
!= |
ne |
不等于 |
> |
gt |
大于 |
< |
lt |
小于 |
>= |
ge |
大于等于 |
<= |
le |
小于等于 |
| — |
contains |
字段或载荷包含指定字符串,多用于HTTP域名、报文内容筛选 |
| — |
matches |
支持正则表达式模糊匹配 |
| — |
in |
匹配指定集合内的多个值 |
2.3 逻辑运算符
&& / and:逻辑与
|| / or:逻辑或
! / not:逻辑非
- 运算优先级:
not > and > or
- 规范建议:复杂组合表达式需用英文小括号
() 划分逻辑层级,避免优先级歧义
2.4 常用过滤示例(整合TCP/HTTP/ICMP协议知识点)
按 IP 地址筛选
1 2 3 4
| ip.src == 192.168.1.53 ip.dst == 220.181.38.148 ip.addr == 192.168.1.100 !(ip.addr == 10.0.0.0/24)
|
按基础协议筛选
按端口筛选
1 2 3 4 5
| tcp.port == 80 tcp.port == 443 tcp.dstport == 443 tcp.port in {80 443 8080} udp.port == 53
|
按 HTTP 业务特征筛选
适配curl请求、网页交互等应用层场景:
1 2 3 4
| http.request.method == "GET" http.request.method == "HEAD" http.response.code == 200 http.host contains "baidu.com"
|
按 TCP 标志位筛选(整合三次握手、四次挥手、PSH、ACK核心知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| tcp.flags.syn == 1 && tcp.flags.ack == 0
tcp.flags.syn == 1 && tcp.flags.ack == 1
tcp.flags.fin == 1
tcp.flags.push == 1
tcp.flags.ack == 1 && tcp.len == 0
tcp.flags.reset == 1
tcp.analysis.retransmission
|
补充说明:
tcp.len == 0 标识无应用层载荷,仅为TCP内核确认报文;
tcp.flags.push == 1 对应协议栈PSH标志位,用于标记完整逻辑业务数据。
按MAC地址、包长度、DNS筛选
1 2 3 4
| eth.addr == 00:0c:29:c6:27:59 eth.src == 00:0c:29:c6:27:59 frame.len > 1000 dns.qry.name contains "baidu"
|
3. 捕获过滤器(BPF语法,抓包前流量限流)
3.1 语法结构
- 方向关键字:
src 源地址、dst 目的地址、src or dst 默认可省略,匹配双向流量
- 匹配类型:
host 单主机IP、net 网段、port 单一端口、portrange 端口区间
3.2 常用捕获过滤器示例
| 过滤目的 |
BPF 表达式 |
| 抓取单主机全部流量 |
host 192.168.1.100 |
| 抓取指定网段流量 |
net 192.168.1.0 mask 255.255.255.0 |
| 仅抓取HTTP 80端口流量 |
tcp port 80 |
| 限定源主机访问目标443端口 |
src host 192.168.1.53 and dst port 443 |
| 过滤排除ARP冗余报文 |
not arp |
| 抓取网段内TCP/UDP 1-1024端口流量 |
(tcp or udp) and net 192.168.1.0/24 and portrange 1-1024 |
易错规范:捕获过滤器不支持 ==、contains、正则匹配等语法,仅适用于简单流量粗筛,精细化协议分析需使用显示过滤器。
4. 实用操作技巧
- 右键快速生成过滤器
选中报文任意协议字段,右键选择「作为过滤器应用」「准备为过滤器」,可自动生成标准过滤表达式,无需手动编写。
- 图形化表达式构建工具
通过菜单栏「分析 → 显示过滤器表达式」,可视化浏览所有协议层级与字段,可视化组合生成过滤规则。
- 输入自动补全功能
过滤器输入框支持协议名、字段名自动补全,降低记忆成本。
- 常用过滤器保存管理
在「分析 → 显示过滤器」中,可自定义保存TCP握手、四次挥手、PSH报文、HTTP、ICMP等常用规则,便于后续快速调用。
- 协议分析适配用法
可通过标志位过滤器单独筛选三次握手、四次挥手报文;利用 tcp.len 区分空ACK与带数据PSH报文;通过ICMP过滤器分析ping报文TTL,辅助初步判别远端操作系统类型。
5. 常用协议速查表(网络分层整理)
链路层
arp stp eth
网络层
ip ipv6 icmp icmpv6 igmp
传输层
tcp(涵盖握手、挥手、PSH、ACK、重传异常分析)
udp(适用于DNS、DHCP等无连接业务)
应用层
- 网页加密类:
http http2 tls/ssl dns
- 运维基础类:
dhcp ntp snmp lldp
- 文件共享类:
ftp smb/smb2
- 其他业务类:
ssdp rtp modbus