4. Wireshark 基础:界面、过滤器与着色规则
好,咱们正式开始接触 Wireshark。说实话,我第一次打开这个软件的时候,看着满屏滚动的数据包,脑子是懵的。但别怕,这东西用熟了,就跟看串口日志一样自然。
这一章,我带你快速过一遍 Wireshark 的核心操作。你不需要记住所有按钮,只要掌握三个东西:界面布局、两种过滤器、着色规则。剩下的,边用边查就行。
4.1 Wireshark 界面:你只需要关注这四个区域
打开 Wireshark,默认界面大概长这样。别被菜单栏吓到,咱们抓蜂窝模组的包,90% 的时间只盯着四个区域:
| 区域 | 名称 | 作用 |
|---|---|---|
| ① | 显示过滤器工具栏 | 输入过滤表达式,只显示你关心的包 |
| ② | 数据包列表区 | 按时间顺序列出所有抓到的包,一行一个 |
| ③ | 协议树区 | 选中一个包后,这里展示它的协议层级细节 |
| ④ | 原始字节区 | 十六进制 + ASCII 显示包的原始数据 |
我个人习惯把③和④拉大一点,因为看 AT 指令和 NAS 消息时,协议树里的字段最直观。原始字节区嘛,偶尔用来确认一下字节序。
4.2 抓包过滤器:在抓之前就“掐掉”噪音
抓包过滤器,是在你开始抓包之前就设置好的。它的作用是让 Wireshark 只抓取你感兴趣的数据,其他的直接丢掉。这在嘈杂的射频环境里特别有用。
比如,你只想抓模组和基站之间的信令,不想看电脑的聊天记录。那就在抓包对话框里输入:
host 192.168.1.100 # 只抓与模组IP相关的包
port 5683 # 只抓CoAP协议的包(蜂窝物联网常用)
not arp # 过滤掉ARP广播,那玩意儿太吵了
语法用的是 BPF (Berkeley Packet Filter),核心就是 type dir proto 三段式。举个例子:
host 10.0.0.2—— 只抓源或目标 IP 是 10.0.0.2 的包tcp port 80—— 只抓 TCP 80 端口的包icmp—— 只抓 Ping 包
not broadcast,结果抓了 10 分钟全是 ARP 包,气得我直接重抓。所以,开始抓包前,一定先想清楚你要看什么。
4.3 显示过滤器:抓完之后的“精准搜索”
显示过滤器,是抓包结束之后用的。它不会删除任何数据,只是把不符合条件的包“藏起来”。你可以随时修改表达式,非常灵活。
这是 Wireshark 最强大的功能,没有之一。语法比 BPF 丰富得多,直接操作协议字段:
# 只看某个IP的通信
ip.addr == 192.168.1.100
# 只看HTTP GET请求
http.request.method == "GET"
# 只看RRC连接建立相关的包(蜂窝模组常用)
nas-eps.message_type == 0x41
# 组合条件:源IP是模组,且端口是5683
ip.src == 192.168.1.100 and udp.port == 5683
表达式输入框的背景色会给你反馈:
- 绿色:语法正确,放心用
- 红色:语法错误,检查一下拼写
- 黄色:可能有歧义,但能运行
我个人习惯把常用的显示过滤器保存成按钮。点一下“+”号,给表达式起个名字,比如“只看附着流程”,下次直接点按钮就行,不用重新敲。
- 抓包过滤器:抓之前设,硬过滤,丢掉的包再也找不回来。
- 显示过滤器:抓之后设,软过滤,随时可以改,数据都在。
4.4 数据包着色规则:一眼看出“异常”
Wireshark 默认会给不同协议的数据包涂上颜色。比如 TCP 是淡紫色,UDP 是淡蓝色,HTTP 是绿色。但默认规则对蜂窝模组抓包来说,不太够用。
我通常会自定义几条着色规则,专门用来标记关键信令:
| 颜色 | 过滤表达式 | 用途 |
|---|---|---|
| 红色 | nas-eps.message_type == 0x41 |
Attach Request(附着请求) |
| 橙色 | nas-eps.message_type == 0x42 |
Attach Accept(附着接受) |
| 绿色 | lte-rrc.ul_ccch.message.c1 |
RRC 连接建立 |
| 紫色 | gtp |
GTP-U 用户面数据 |
设置方法很简单:视图 → 着色规则 → 新建。把上面的表达式填进去,选个显眼的颜色。这样,抓包列表里红色就是附着请求,橙色就是附着接受,一眼扫过去就知道流程走到哪一步了。
tcp.analysis.flags 涂成深红色,这样重传、丢包、乱序的包在列表里特别扎眼,不用一个个翻。
4.5 本章知识体系
下面这张图,帮你把本章的核心逻辑串起来。从抓包到分析,每一步该用什么工具,一目了然。
嗯,这张图把整个流程串起来了。你抓包前设好过滤器,抓包时盯着列表,抓包后用显示过滤器精确定位,最后配合协议树和着色规则做分析。每一步都有对应的工具,别乱。
4.6 避坑指南
最后,分享几个我踩过的坑:
- 抓包过滤器写错了,不会报错,只是抓不到任何包。 我曾经在表达式里把
host拼成hst,结果抓了半小时空文件,还以为是模组没发数据。所以,开始抓包后先看一眼列表,确认有数据进来。 - 显示过滤器里,字段名大小写敏感。
ip.addr是对的,IP.Addr就是错的。Wireshark 的自动补全功能很好用,别手敲,用 Tab 键补全。 - 着色规则不要设太多。 超过 10 条,列表看起来就像彩虹,反而分不清重点。我一般只设 5-6 条,专门针对当前调试的任务。