4、Wireshark 核心操作:界面布局与首选项设置。捕获过滤器与显示过滤器。着色规则与数据包导航。

Wireshark 这东西,说白了就是物联网抓包人的眼睛。界面都认不全,过滤器不会写,那抓到的包就是一锅粥。这一章我带你把这几个核心操作啃透,以后分析 Zigbee、BLE、Wi-Fi 的报文,你心里就有底了。

4.1 界面布局:别被密密麻麻的窗口吓到

第一次打开 Wireshark,很多人会懵。菜单栏、工具栏、过滤栏、包列表、包详情、包字节——六个区域挤在一起。别慌,我拆开讲。

区域 位置 核心作用
包列表区 上方主窗口 显示所有抓到的数据包,一行一个
包详情区 中间左侧 解析协议字段,树形展开
包字节区 中间右侧 原始十六进制 + ASCII 对照
过滤栏 工具栏下方 输入捕获/显示过滤表达式
状态栏 底部 显示捕获状态、包数量、配置文件

我个人习惯把包详情区拉宽一点。因为物联网协议(比如 Zigbee 的 APS 层、BLE 的 ATT 层)嵌套深,树形展开后字段多,窗口窄了根本看不全。

小技巧: 按 Ctrl + 1/2/3 可以快速切换预设布局。我常用 Ctrl + 2(详情区在下方),看长报文时更舒服。

4.2 首选项设置:先调好这三处,省一半时间

默认设置够用,但不够顺手。我建议你花两分钟改三个地方,后面几十章都能受益。

4.2.1 时间显示格式

默认是「秒数自抓包开始」,调试时根本对不上事件时间。改成 UTC 日期时间 或 相对时间。

路径:Edit → Preferences → Appearance → Columns
→ 双击「Time」列,选「Absolute date and time」

4.2.2 自动滚动与实时捕获

抓实时流量时,包列表会一直往下滚。我建议关掉自动滚动,除非你在做现场演示。

路径:Capture → Options → 取消勾选「Update list of packets in real time」

4.2.3 协议解析器开关

物联网环境里,有些协议 Wireshark 会误解析。比如把私有 2.4G 数据当成 802.11 管理帧。遇到这种情况,去 Protocols 里手动禁用对应解析器。

避坑: 我曾经在调试一款 Sub-1G 私有协议时,Wireshark 把 payload 当成了 DNS 请求来解析,导致我看了半小时乱码。后来发现是协议解析器冲突。遇到诡异数据,先检查这里。

4.3 捕获过滤器 vs 显示过滤器:别搞混了

这两个名字像,但用法天差地别。我见过太多人把显示过滤器的语法写进捕获过滤器,结果抓了个寂寞。

对比项 捕获过滤器 显示过滤器
作用时机 抓包前,网卡驱动层 抓包后,Wireshark 应用层
语法基础 BPF(Berkeley Packet Filter) Wireshark 自己的表达式
能否恢复数据 不能,过滤掉的包永远丢失 能,只是隐藏,数据还在
典型场景 只抓 Zigbee 信道 11 的流量 只看某个 MAC 地址的 Beacon 帧

4.3.1 捕获过滤器常用写法

捕获过滤器用 BPF 语法,写在 Capture Options 里。我列几个物联网场景最常用的:

# 只抓 Zigbee 信道 11(2.405 GHz)
# 注意:需要配合硬件抓包器,Wireshark 本身不直接调信道
wpan

# 只抓特定 MAC 地址的 Wi-Fi 包
ether host 00:11:22:33:44:55

# 只抓 UDP 端口 5683(CoAP 协议)
udp port 5683

# 抓所有非本地回环的包
not host 127.0.0.1
核心原则: 捕获过滤器要「宽进严出」。我一般只过滤掉绝对不需要的流量(比如广播风暴),剩下的交给显示过滤器。因为一旦抓漏了,数据就再也回不来了。

4.3.2 显示过滤器常用写法

显示过滤器才是你日常分析的主力。语法灵活,支持协议字段直接访问。

# 只看 Zigbee 的 ZCL 数据
zbee_zcl

# 只看 BLE 的 ATT Write Request
btatt.opcode == 0x52

# 只看 Wi-Fi 的 Probe Request
wlan.fc.type_subtype == 4

# 组合条件:来自特定 MAC 且长度大于 100 字节
wlan.sa == 00:11:22:33:44:55 && frame.len > 100

你想想看,如果不用过滤器,在几千个包里找一个 Probe Request,眼睛都得看花。显示过滤器就是你的精准搜索。

4.4 着色规则:一眼看出异常包

Wireshark 默认会给不同协议上色。比如 TCP 是浅紫,UDP 是浅蓝。但物联网场景下,默认规则不够用。

我建议你自定义几组着色规则:

  • 红色:重传包、CRC 错误包
  • 橙色:Beacon 帧、广播包
  • 绿色:你关心的特定命令(比如 Zigbee 的 On/Off 指令)
  • 灰色:ACK 确认包(太多,视觉上淡化它)
路径:View → Coloring Rules → 新建规则
示例:给 Zigbee 的 ZCL 数据包上绿色
Name: Zigbee ZCL Data
Filter: zbee_zcl
Foreground: #ffffff
Background: #27ae60
我的习惯: 我会把「异常包」的着色规则放在最前面。因为 Wireshark 从上到下匹配规则,匹配到第一条就停止。异常包优先着色,一眼就能揪出来。

4.5 数据包导航:在报文海洋里快速定位

包多了怎么翻?别用鼠标滚轮硬拉。Wireshark 提供了几个导航利器。

4.5.1 快捷键导航

快捷键 功能
Ctrl + ↑/↓ 跳转到上一个/下一个包
Ctrl + G 跳转到指定包号
Ctrl + F 在当前显示结果中搜索
Ctrl + N 跳转到下一个标记包

4.5.2 标记与注释

分析过程中,遇到关键包就按 Ctrl + M 标记。标记后的包会高亮,方便后续回看。

如果需要写分析笔记,右键包 → Packet Comment,可以添加文字备注。这个功能在团队协作时特别有用。

4.5.3 追踪流

想看一次完整的 CoAP 请求-响应?选中一个包,右键 → Follow → UDP Stream。Wireshark 会自动过滤出这个会话的所有包,并按时间排序。

注意: 追踪流功能只对 TCP/UDP 有效。Zigbee 和 BLE 的会话层不适用。对于物联网非 IP 协议,你需要用「显示过滤器 + 手动关联」的方式。

4.6 本章知识体系

下面这张图把本章的核心逻辑串起来了。从界面布局开始,到首选项调优,再到过滤器的正确使用,最后用着色和导航收尾。每一步都是为高效分析服务的。

Wireshark 核心操作知识体系 界面布局(6 大区域) 首选项设置(3 处关键调优) 捕获过滤器(BPF 语法) 显示过滤器(表达式语法) 着色规则(异常包高亮) 数据包导航(快捷键/标记/追踪流) 核心逻辑:先调好工具 → 用过滤器缩小范围 → 着色突出目标 → 导航精确定位 每一步都为了让你在物联网报文海洋里,快速找到那条「鱼」

界面布局是基础,首选项是效率,过滤器是核心技能,着色和导航是辅助手段。把这套流程跑熟了,你抓包分析的速度至少快一倍。