🔍 Wireshark 过滤器类型

特性 捕获过滤器 (Capture Filter) 显示过滤器 (Display Filter)
作用阶段 数据包捕获前过滤 数据包捕获后显示过滤
语法基础 BPF (Berkeley Packet Filter) Wireshark 专用表达式语言
性能影响 ✅ 降低内存 /CPU 占用 ❌ 仅影响显示,不减少内存占用
灵活性 基础协议 / 地址过滤 支持深度包解析和复杂逻辑

📥 捕获过滤器语法

捕获过滤器的语法基于 BPF 语法,以下是一些常用的操作符和示例:

核心操作符

host 192.168.1.1    # 主机IP(源或目标)
net 192.168.1.0/24  # 网段过滤
port 80             # 端口过滤
tcp, udp, icmp      # 协议类型

方向控制

src host 10.0.0.1   # 源地址
dst port 443        # 目标端口

逻辑组合

tcp and port 80              # TCP且端口80
udp or icmp                  # UDP或ICMP
!(arp or dns)                # 排除ARP/DNS

高级过滤

len <= 1500                  # 包长度≤1500字节
broadcast                    # 广播包

⚠️ 注意:

捕获过滤器不支持协议字段过滤(如 HTTP 方法)显示过滤器语法

🖥 显示过滤器

显示过滤器的语法更加灵活和强大,以下是一些常用的操作符和示例:

协议字段过滤

http.request.method == "GET"   # HTTP GET请求
tcp.flags.syn == 1             # TCP SYN包
dns.qry.name contains "google" # DNS查询域名

复合条件

(ip.src == 192.168.1.1 and tcp.port == 8080) or http
!ssl and frame.len > 1000      # 非SSL且长度>1000

高级操作符

tcp.port in {80 443 8080}     # 端口列表匹配
ip.addr == 10.0.0.1/24        # CIDR匹配
http matches "(?i)login"      # 正则匹配(忽略大小写)

实用技巧

tcp.analysis.retransmission    # 重传包检测
tcp.time_delta > 1             # TCP响应时间>1秒

💡 高效使用技巧

协议分层过滤

tcp.port == 8080 && http    # 8080端口的HTTP流量

自动补全

输入协议名后按 Ctrl+Space 触发字段建议(如输入 http. 显示所有 HTTP 字段)

保存常用过滤

右键过滤器栏 → Save Filter → 命名保存

语法校验

  • ✅ 绿色背景:语法正确

  • ❌ 红色背景:存在错误

🧸 参考文献

原文链接:Wireshark 详细语法内容教程与案例