点击上方网络技术干货圈,选择设为星标
优质文章,及时送达
转载请注明以下内容:
来源:公众号【网络技术干货圈】
作者:圈圈
ID:wljsghq
Wireshark 提供了两种过滤机制:捕获过滤(Capture Filter)和显示过滤(Display Filter)。这两种过滤各司其职,分别在数据包捕获和分析阶段发挥作用。
捕获过滤
"
数据抓取的第一道防线
捕获过滤在数据包进入 Wireshark 之前生效,决定了哪些数据包会被记录。它的核心优势是减少捕获的数据量,降低系统资源消耗,尤其在高流量网络环境中至关重要。捕获过滤使用的是 Berkeley Packet Filter(BPF) 语法,这种语法在 tcpdump 和 Wireshark 中通用。
常用捕获过滤语法:
-
• 基于主机: host 192.168.1.1
(捕获与指定 IP 相关的流量)。 -
• 基于端口: port 80
(捕获指定端口的流量,如 HTTP)。 -
• 基于协议: tcp
或udp
(捕获特定协议的流量)。 -
• 组合逻辑: host 192.168.1.1 and port 80
(捕获特定主机和端口的流量)。 -
• 排除流量: not port 22
(排除 SSH 流量)。
假设你需要监控一台服务器(IP 为 192.168.1.100)上的 HTTP 流量,可以设置捕获过滤为 host 192.168.1.100 and port 80
。这样,Wireshark 只会捕获与该服务器相关的 HTTP 数据包,极大减少无关数据干扰。
显示过滤
"
从海量数据中挖掘真相
显示过滤在数据包捕获后生效,用于从已捕获的数据中筛选出符合条件的内容。相比捕获过滤,显示过滤的语法更强大、更灵活,能够深入协议字段进行精确匹配。显示过滤使用 Wireshark 专有的语法,基于协议、字段和值的组合。
显示过滤的核心结构:协议.字段 运算符 值
。例如,http.request.method == "GET"
表示筛选 HTTP GET 请求。
基本运算符:
-
• 比较运算: ==
(等于)、!=
(不等于)、>
、<
、>=
、<=
。 -
• 逻辑运算: and
、or
、not
。 -
• 包含匹配: contains
(字符串包含)、matches
(正则表达式匹配)。
如果你想分析某个网站(域名 example.com)的 HTTPS 流量,可以使用显示过滤 ssl.handshake.extensions_server_name contains "example.com"
,快速定位 TLS 握手中的服务器名称。
捕获过滤语法
捕获过滤的语法基于 BPF,结构简洁但功能强大。
1. 基于 IP 和主机
-
• 单 IP: host 192.168.1.1
(捕获与该 IP 相关的所有流量)。 -
• IP 范围: net 192.168.1.0/24
(捕获整个子网的流量)。 -
• 源或目标 IP: src host 192.168.1.1
(仅捕获源 IP 为指定地址的流量);dst host 192.168.1.1
(仅捕获目标 IP 的流量)。
2. 基于端口
-
• 单一端口: port 80
(捕获 HTTP 流量)。 -
• 端口范围: portrange 1024-65535
(捕获指定范围内的端口流量)。 -
• 源或目标端口: src port 53
(捕获源端口为 DNS 的流量)。
3. 基于协议
-
• 常见协议: tcp
、udp
、icmp
、arp
。 -
• 链路层协议: ether host 00:11:22:33:44:55
(捕获指定 MAC 地址的流量)。 -
• 复杂协议: ip proto 47
(捕获 GRE 协议流量)。
4. 组合与排除
-
• 多条件组合: host 192.168.1.1 and port 443 and not src port 22
(捕获指定主机的 HTTPS 流量,排除 SSH)。 -
• 多主机: host 192.168.1.1 or host 192.168.1.2
(捕获两个主机的流量)。
注意事项:
-
• 捕获过滤对性能敏感,过于复杂的过滤可能导致丢包。 -
• 某些高级协议(如 HTTP/2)在捕获过滤中难以直接匹配,建议结合显示过滤使用。
显示过滤语法
显示过滤是 Wireshark 的灵魂,允许你深入协议的每一个字段。以下按协议和场景分类,介绍常用的显示过滤语法。
1. 通用协议过滤
-
• IP 协议: -
• ip.addr == 192.168.1.1
(源或目标 IP 匹配)。 -
• ip.src == 192.168.1.1
(仅源 IP)。 -
• ip.dst == 192.168.1.1
(仅目标 IP)。 -
• TCP/UDP 协议: -
• tcp.port == 80
(TCP 端口 80,源或目标)。 -
• tcp.srcport == 12345
(源端口)。 -
• tcp.flags.syn == 1
(TCP SYN 标志,捕获连接建立)。 -
• ICMP 协议: -
• icmp.type == 8
(Ping 请求)。 -
• icmp.code == 0
(Ping 响应)。
2. 应用层协议过滤
-
• HTTP: -
• http.request
(所有 HTTP 请求)。 -
• http.request.method == "POST"
(仅 POST 请求)。 -
• http.host contains "example.com"
(匹配特定域名)。 -
• http.response.code == 404
(匹配 404 错误)。 -
• DNS: -
• dns.qry.name contains "example.com"
(DNS 查询包含特定域名)。 -
• dns.resp.type == A
(DNS A 记录响应)。 -
• TLS/SSL: -
• ssl.handshake.type == 1
(TLS 客户端 Hello 包)。 -
• ssl.record.content_type == 23
(TLS 应用数据)。 -
• ssl.handshake.extensions_server_name contains "example.com"
(匹配服务器名称)。
3. 高级匹配技巧
-
• 字符串匹配: http.user_agent contains "Chrome"
(匹配包含 Chrome 的用户代理)。 -
• 正则表达式: http.host matches ".*\.example\.com"
(匹配 example.com 的子域名)。 -
• 时间过滤: frame.time >= "Jun 26, 2025 12:00:00"
(筛选指定时间后的数据包)。 -
• 数据包长度: frame.len > 1000
(筛选长度大于 1000 字节的包)。
4. 组合逻辑
-
• 复杂条件: tcp.port == 80 and ip.src == 192.168.1.1
(HTTP 流量且源 IP 匹配)。 -
• 排除干扰: not arp and not dns
(排除 ARP と DNS 流量)。 -
• 多值匹配: ip.addr in {192.168.1.1 192.168.1.2}
(匹配多个 IP)。
假设你需要排查某个客户端(192.168.1.100)访问 example.com 时出现的 503 错误,可以使用显示过滤:
ip.src == 192.168.1.100 and http.host contains "example.com" and http.response.code == 503
这将精准定位相关数据包,帮助你快速分析问题。
---END---
重磅!网络技术干货圈-技术交流群已成立
扫码可添加小编微信,申请进群。
一定要备注:工种+地点+学校/公司+昵称(如网络工程师+南京+苏宁+猪八戒),根据格式备注,可更快被通过且邀请进群
![Wireshark过滤语法大全,收藏! Wireshark过滤语法大全,收藏!]()
▲长按加群
原文始发于微信公众号(网络技术干货圈):Wireshark过滤语法大全,收藏!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论