Wireshark 显示过滤器常用规则及代码示例

本文详细介绍了Wireshark的显示过滤器规则,包括构造表达式的方法、各种比较操作符、切片操作符、成员操作符的使用,以及通过实例展示了如何过滤SMTP、ICMP、SMB、Sasser蠕虫等通信。同时,强调了正确使用逻辑运算符和避免常见错误的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


参考资料:
https://wiki.wireshark.org/DisplayFilters
https://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSection.html
 
Wireshark 使用显示过滤规则来过滤已捕获的数据包,及按 规则显示特定颜色。
你可以在 显示过滤参考中找到主要的显示过滤协议字段列表。
如果你需要针对特定协议进行显示过滤,请参阅 协议参考
 

显示过滤规则 ≠ 捕获过滤规则

别把捕获过滤规则(如 tcp port 80)和显示过滤规则(如 tcp.port == 80)搞混了。
参阅捕获过滤规则说明
 

构造过滤规则表达式

Wireshark 提供了一种显示过滤器语言,使你能够精确地控制显示哪些数据包。它们可以用来检查协议或字段是否存在、字段的值,甚至比较两个字段。这些比较可以与逻辑运算符(如“and”和“or”)和括号组合成复杂的表达式。
以下部分将更详细地介绍显示过滤器功能。

示例

仅显示 SMTP(端口25)和 ICMP 通信:

tcp.port eq 25 or icmp

仅显示局域网 (192.168.x.x) 中工作站与服务器之间的通信 —— 无因特网连接:

ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16

TCP 缓冲区满——Source停止向Destination发送数据:

tcp.window_size == 0 && tcp.flags.reset != 1

Windows 过滤——在监控Windows客户端时过滤干扰,DC exchanges:

smb || nbns || dcerpc || nbss || dns

Sasser 蠕虫

ls_ads.opnum==0x09

匹配 UDP payload 开头处(任意)包含3字节序列0x81、0x60、0x03的数据包,跳过8字节UDP报头。请注意

### Wireshark 过滤器常用语法 Wireshark 是一款强大的网络数据包捕获工具,其过滤功能分为两种主要类型:**抓包过滤器**和**显示过滤器**。这两种过滤器的语法不同,在实际应用中需根据需求选择合适的过滤方式。 #### 抓包过滤器 抓包过滤器基于 Berkeley Packet Filter (BPF) 的语法实现[^3]。它用于在网络接口上实时筛选流量,减少不必要的数据存储到磁盘中。以下是常用的 BPF 语法规则: - **协议指定**: 可通过 `protocol` 参数限定特定协议的数据包。例如: ```bash tcp # 捕获 TCP 协议的数据包 udp # 捕获 UDP 协议的数据包 icmp # 捕获 ICMP 协议的数据包 ``` - **方向控制**: 使用 `src`, `dst`, 或组合形式来定义源或目标地址的方向。 ```bash src host 192.168.1.1 # 来自 IP 地址 192.168.1.1 的数据包 dst net 10.0.0.0/8 # 发往网段 10.0.0.0/8 的数据包 src port 80 # 来自端口 80 的数据包 not broadcast # 排除广播数据包 ``` - **逻辑运算符**: 支持 `and`, `or`, 和 `not` 组合条件。 ```bash tcp and src host 192.168.1.1 # 同时满足 TCP 流量且来自该主机 udp or icmp # 满足 UDP 或者 ICMP 数据包 not arp # 不包含 ARP 协议的数据包 ``` 对于仅关注某一类协议的情况,推荐优先使用抓包过滤器以提高效率并节省资源[^1]。 --- #### 显示过滤器 显示过滤器允许用户在已捕获的数据集中进一步筛选感兴趣的内容。它的语法更加灵活直观,适合复杂查询场景。以下是一些常见表达式及其含义: - **基础字段匹配** ```plaintext http.request.method == "GET" # 查找 HTTP GET 请求 dns.qry.name contains example.com # DNS 查询名称包含 example.com tcp.flags.syn eq 1 # 找出 SYN 标志位被设置的 TCP 数据包 ip.addr == 192.168.1.1 # 匹配任意一方为给定 IP 的通信 ``` - **数值范围比较** ```plaintext frame.len >= 100 # 数据帧长度大于等于 100 字节 tcp.port geq 1024 leq 65535 # 端口号介于 1024 到 65535 之间 ``` - **字符串模糊查找** ```plaintext http.host matches "(?i).*google.*" # 主机名大小写不敏感地包含 google 关键字 data.text contains "error message" # 数据载荷部分存在错误消息提示 ``` 当处理少量流量或者需要深入分析已有数据集时,应考虑采用显示过滤器[^2]。 更多详细的协议字段说明可以访问官方文档链接获取最新资料。 --- ```python # 示例脚本展示如何利用 Python 调用 tshark 工具执行简单过滤操作 import subprocess def run_tshark_filter(filter_expression): command = ["tshark", "-R", filter_expression, "-r", "input.pcap"] result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) return result.stdout.decode() filter_expr = 'http.request.method == "POST"' output = run_tshark_filter(filter_expr) print(output) ``` 上述代码片段演示了调用 TShark 实现读取 PCAP 文件并通过显示过滤器提取 POST 方法请求的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值