4. Wireshark 核心操作:抓包启动与停止、保存与导出 pcap 文件、着色规则与时间列设置
说实话,很多人装了 Wireshark 之后,第一反应就是点那个大大的「鲨鱼鳍」开始抓包。然后呢?抓了一堆数据,不知道怎么停下来,也不知道怎么存。更别提从几万行报文里找到自己想要的那一条了。
这一章,我就带你把这些基础操作彻底捋清楚。别小看这些操作,我在项目现场见过太多人因为「不会保存」或者「时间戳看错了」而返工。嗯,咱们一步到位。
4.1 抓包的启动与停止
启动抓包其实就两种方式,我平时用第二种更多一些。
4.1.1 快速启动(双击接口)
打开 Wireshark 主界面,你会看到一个接口列表。每个接口旁边有实时流量波形图。直接双击某个接口,抓包就开始了。
4.1.2 带捕获过滤器启动
这才是专业做法。在接口列表上方,有一个绿色的「齿轮」图标,点它。
- 选择接口
- 在「Capture Filter」栏输入过滤表达式,比如
host 192.168.1.100 - 点「Start」
这样做的好处是:从第一包开始就只抓你关心的流量。我曾经在客户机房抓了 10 分钟,结果发现没加过滤,硬盘直接写满了……从那以后,我每次都先配过滤再启动。
4.1.3 停止抓包的三种方式
| 方式 | 操作 | 适用场景 |
|---|---|---|
| 手动停止 | 点红色「Stop」按钮 | 看到问题报文后立即停 |
| 自动停止 | Capture → Stop Condition | 抓固定数量或固定时长 |
| 环形缓冲区 | 多文件模式 + 自动覆盖 | 长期监控,怕磁盘满 |
4.2 保存与导出 pcap 文件
抓完包不保存,等于白干。我见过有人抓了一下午,结果 Wireshark 崩溃了,什么都没留下……
4.2.1 保存当前抓包
快捷键 Ctrl + S,或者 File → Save。默认格式是 .pcapng,这是新版格式,支持多接口和注释。
如果你需要兼容老版本工具(比如 tcpdump 的 -r 参数),可以选 .pcap 格式。
4.2.2 导出特定报文
有时候你只需要把某几条报文发给同事看。全量文件太大,也不安全。
- 选中你要导出的报文(按住 Ctrl 多选)
- File → Export Specified Packets
- 选择「Selected packets only」
- 点 Save
4.2.3 导出对象(HTTP / SMB 等)
这个功能很实用。比如你抓到一个 HTTP 响应,想看看里面传输的文件是什么。
路径:File → Export Objects → HTTP。然后会列出所有 HTTP 传输的对象,你可以直接保存到本地。
我在一次安全排查中,就是用这个功能从 pcap 里提取出了恶意软件样本。嗯,省了不少事。
4.3 着色规则:一眼看出问题报文
Wireshark 默认会给不同协议上色。比如 HTTP 是绿色,TCP 是浅紫,DNS 是蓝色。但默认规则不够用,你得学会自定义。
4.3.1 默认着色规则
View → Coloring Rules。你会看到一长串规则列表。每条规则包含一个显示过滤表达式和对应的前景色/背景色。
Wireshark 从上到下匹配,匹配到第一条就停止。所以规则的顺序很重要。
4.3.2 自定义着色规则
我常用的一个场景:把 TCP 重传标记为醒目的红色。
- 打开 Coloring Rules
- 点「New」
- 名称写「TCP Retransmission」
- 过滤表达式写
tcp.analysis.retransmission - 前景色选白色,背景色选深红色
- 点 OK,然后把这个规则拖到列表最上面
这样一来,只要出现重传,整行报文都会变成红底白字。一眼就能看到。
- TCP 重传 → 红底白字
- TCP 零窗口 → 橙底黑字
- HTTP 错误(4xx/5xx)→ 黄底红字
- DNS 响应超时 → 紫底白字
4.3.3 着色规则的导入导出
你配好一套规则后,可以导出成 .txt 文件,发给团队其他人导入。路径在 Coloring Rules 对话框右下角。
我每次换电脑,第一件事就是导入自己的着色配置。没有颜色,看报文就像看天书。
4.4 时间列设置:别让时间戳坑了你
Wireshark 默认显示的是「抓包开始后的秒数」。但排错时,我们通常需要看绝对时间或者相对时间。
4.4.1 修改时间显示格式
路径:View → Time Display Format。这里有几种常用选项:
| 格式 | 说明 | 适用场景 |
|---|---|---|
| Seconds Since Beginning | 从抓包开始到现在的秒数 | 快速看报文间隔 |
| Date and Time of Day | 绝对时间(年-月-日 时:分:秒.毫秒) | 与系统日志对比 |
| Seconds Since Previous Packet | 与前一条报文的时间差 | 分析延迟抖动 |
4.4.2 时间精度调整
默认显示到毫秒。如果你需要看微秒甚至纳秒,可以在 View → Time Display Format 里勾选「Seconds (microseconds)」或「Seconds (nanoseconds)」。
不过说实话,99% 的场景下毫秒级就够了。只有做高性能网络调优时,我才会切到微秒级。
4.4.3 时间参考(Time Reference)
这个功能很多人不知道。你可以把某一条报文设为「时间参考点」,之后所有报文的时间都显示为相对于这个点的偏移。
操作:选中一条报文,右键 → Set Time Reference (Toggle)。
我在分析 TCP 三次握手延迟时,经常把 SYN 包设为参考点,这样就能直接看到 SYN-ACK 和 ACK 的精确延迟。
4.5 本章知识体系
下面这张图把本章的核心操作串起来了。你可以把它当成一张「操作地图」,以后忘了就看一眼。
这张图把四个核心操作模块和它们的关键子项都列出来了。你以后做排错时,可以对照着检查:启动方式对不对?保存格式选对没?着色规则有没有覆盖关键异常?时间戳有没有设成绝对时间?
把这些基础操作练熟了,后面的高级分析才能站得住脚。不然你连报文都存不对,还谈什么排错?