Wireshark 基础:安装、配置与过滤器实战

做物联网抓包,Wireshark 是绕不开的工具。我见过不少新手,装完软件就急着点开始抓包,结果被满屏的数据包淹没了。嗯,今天我们就从最基础的东西说起——怎么装、怎么看、怎么过滤。

1. 安装与配置:别让环境坑了你

Wireshark 的安装其实很简单,但有几个细节我建议你注意一下。

Windows 平台

去官网下载安装包,一路 Next 就行。但有个关键步骤——安装过程中会提示安装 Npcap,一定要勾选。Npcap 是 Windows 下的抓包驱动,没有它 Wireshark 就是个摆设。

避坑指南: 我曾经遇到过学员装了 Wireshark 但抓不到任何包,折腾半天发现是 Npcap 没装。还有一次,某款 USB 转串口工具和 Npcap 驱动冲突,导致电脑蓝屏。所以,如果你用 Windows,建议先确认 Npcap 版本兼容性。

Linux / macOS 平台

Linux 下直接用包管理器安装:

sudo apt-get install wireshark  # Debian/Ubuntu
sudo yum install wireshark       # CentOS/RHEL

安装后记得把当前用户加入 wireshark 组,否则普通用户没权限抓包:

sudo usermod -a -G wireshark $USER

macOS 用户推荐用 Homebrew:brew install wireshark。不过 macOS 的权限管理比较严,第一次启动时系统会弹窗询问是否允许网络权限,记得点“允许”。

基础配置

装好后,打开 Wireshark,先做两件事:

  1. 选择正确的网卡——抓 Zigbee 选抓包器对应的虚拟接口,抓 Wi-Fi 选无线网卡。别选错了,我见过有人对着 Loopback 接口抓了半天。
  2. 关闭不必要的协议解析——在 Preferences → Protocols 里,把不相关的协议(比如 HTTP、DNS)的解析关掉,能省不少 CPU。
小技巧: 我个人习惯在抓包前先设置一个“捕获配置文件”。比如针对 Zigbee 抓包,我会单独建一个配置文件,只开启 802.15.4 解析,这样界面干净很多。

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

Wireshark 的界面乍一看挺复杂,其实就三大块。你想想看,就像看监控视频——上面是列表,中间是详情,下面是原始数据。

区域 名称 作用
顶部 数据包列表区 显示所有抓到的包,按时间排序。每一行就是一个包。
中间 协议树展开区 选中某个包后,这里会分层展示协议字段。比如 802.15.4 的帧头、MAC 地址、Payload。
底部 十六进制原始数据区 显示包的原始字节流,左边是偏移量,中间是十六进制,右边是 ASCII。

我个人习惯把中间区域拉大一点,因为看协议树最频繁。底部区域一般只在对齐字节流时才用。

3. 抓包过滤器:只抓你想要的

抓包过滤器是在抓包之前设置的。它的作用是让 Wireshark 只捕获符合条件的数据包,不符合的直接丢弃。说白了,就是给网卡装个“门禁”。

语法规则

抓包过滤器用的是 BPF(Berkeley Packet Filter)语法,核心是:协议 方向 类型 值。

  • 协议:ether、ip、tcp、udp、wlan 等
  • 方向:src、dst、host
  • 类型:net、port、host

举个例子:

# 只抓来自 192.168.1.100 的包
src host 192.168.1.100

# 只抓端口 1883(MQTT)的包
tcp port 1883

# 只抓 Zigbee 信道 11 上的包(需要抓包器支持)
wlan channel 11
重点: 抓包过滤器一旦设置,不符合条件的包就根本不会被捕获。这在抓大流量时特别有用——比如你只关心某个设备的 MQTT 通信,设个 host 192.168.1.50 and tcp port 1883,能省下 90% 的磁盘空间。

常见物联网场景过滤器

场景 过滤器表达式 说明
抓 Zigbee 数据 wpan 只捕获 802.15.4 帧
抓 BLE 广播 btle 只捕获 BLE 链路层包
抓特定 IP 的 CoAP host 10.0.0.2 and udp port 5683 CoAP 默认用 UDP 5683
抓 LoRaWAN 上行 udp port 1700 LoRaWAN 通常用 UDP 1700

4. 显示过滤器:从抓到的包里快速定位

显示过滤器是抓包之后用的。它不会删除任何包,只是把不符合条件的包隐藏起来。你可以随时修改显示过滤器,看到不同的数据子集。

语法规则

显示过滤器的语法更丰富,支持字段级过滤。格式是:协议.字段 操作符 值。

  • 协议.字段:比如 ip.src、wpan.dst_pan、btle.advertising_address
  • 操作符:==、!=、>、<、contains、matches
  • 值:IP 地址、数字、字符串、十六进制

常用例子:

# 只看源 IP 为 192.168.1.1 的包
ip.src == 192.168.1.1

# 只看 Zigbee 广播帧(目的 PAN 为 0xFFFF)
wpan.dst_pan == 0xffff

# 只看 BLE 连接请求包
btle.advertising_header.pdu_type == 5

# 只看包含特定十六进制数据的包(比如查找某个设备指纹)
frame contains 00:1a:7d:da:71:13
经验之谈: 我调试 Zigbee 设备时,最常用的显示过滤器是 wpan.dst_pan == 0xffff。因为很多 Zigbee 设备入网时会发广播,通过这个过滤器能快速定位入网流程。有一次客户说设备连不上网关,我一看广播帧里 PAN ID 不对,原来是网关配置错了。

显示过滤器 vs 抓包过滤器

对比项 抓包过滤器 显示过滤器
生效时机 抓包前 抓包后
是否影响捕获 是,不符合的包不抓 否,只是隐藏
语法复杂度 简单(BPF) 丰富(字段级)
典型用途 减少抓包量,节省磁盘 分析时快速定位问题

我的习惯是:抓包时用抓包过滤器缩小范围,分析时用显示过滤器深入挖掘。两者配合,效率最高。

5. 知识体系图

下面这张图总结了本章的核心逻辑,你可以把它当作一个快速参考。

Wireshark 基础知识体系 Wireshark 基础:安装 → 配置 → 抓包 → 过滤 安装 配置 界面布局 抓包过滤器 显示过滤器 核心流程 1. 先安装 Wireshark + 驱动(Npcap / libpcap) 2. 配置网卡和协议解析选项 3. 设置抓包过滤器 → 开始捕获 4. 停止捕获 → 使用显示过滤器分析数据

6. 实战小贴士

最后分享几个我踩过的坑:

  • 抓包过滤器写错了怎么办?——Wireshark 会提示语法错误,但不会告诉你哪里错了。我的办法是:先写一个简单的 host 192.168.1.1 测试,确认能抓到包,再逐步加条件。
  • 显示过滤器不生效?——检查字段名是否写对了。比如 Zigbee 的 PAN ID 字段是 wpan.dst_pan,不是 wpan.pan_id。可以在协议树里右键某个字段,选择“作为过滤器应用”。
  • 抓包文件太大?——用抓包过滤器限制范围,或者设置“捕获文件自动分割”,比如每 100MB 自动保存一个新文件。
一句话总结: 抓包过滤器是“门禁”,只放行你关心的包;显示过滤器是“搜索框”,从已抓到的包里快速定位目标。两者用好,抓包效率翻倍。