4. Wireshark 核心操作:抓包启动与停止、保存与导出 pcap 文件、着色规则与时间列设置

说实话,很多人装了 Wireshark 之后,第一反应就是点那个大大的「鲨鱼鳍」开始抓包。然后呢?抓了一堆数据,不知道怎么停下来,也不知道怎么存。更别提从几万行报文里找到自己想要的那一条了。

这一章,我就带你把这些基础操作彻底捋清楚。别小看这些操作,我在项目现场见过太多人因为「不会保存」或者「时间戳看错了」而返工。嗯,咱们一步到位。

4.1 抓包的启动与停止

启动抓包其实就两种方式,我平时用第二种更多一些。

4.1.1 快速启动(双击接口)

打开 Wireshark 主界面,你会看到一个接口列表。每个接口旁边有实时流量波形图。直接双击某个接口,抓包就开始了。

我的习惯: 如果只是临时看一眼,我会双击接口。但如果是正式排错,我从来不用这种方式——因为容易忘记选过滤条件。

4.1.2 带捕获过滤器启动

这才是专业做法。在接口列表上方,有一个绿色的「齿轮」图标,点它。

  1. 选择接口
  2. 在「Capture Filter」栏输入过滤表达式,比如 host 192.168.1.100
  3. 点「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 导出特定报文

有时候你只需要把某几条报文发给同事看。全量文件太大,也不安全。

  1. 选中你要导出的报文(按住 Ctrl 多选)
  2. File → Export Specified Packets
  3. 选择「Selected packets only」
  4. 点 Save
避坑指南: 导出时注意勾选「Displayed」而不是「Captured」。如果你已经用了显示过滤器,导出时只导出显示出来的报文。我曾经没注意这个,把全量包发给客户,结果里面包含敏感 IP……尴尬。

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 重传标记为醒目的红色。

  1. 打开 Coloring Rules
  2. 点「New」
  3. 名称写「TCP Retransmission」
  4. 过滤表达式写 tcp.analysis.retransmission
  5. 前景色选白色,背景色选深红色
  6. 点 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 与前一条报文的时间差 分析延迟抖动
注意: 如果你用「Date and Time of Day」,一定要确认 Wireshark 所在机器的时区设置。我曾经在跨国排错时,因为时区没对齐,把 UTC 时间当成了本地时间,多查了两个小时才发现。

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 本章知识体系

下面这张图把本章的核心操作串起来了。你可以把它当成一张「操作地图」,以后忘了就看一眼。

Wireshark 核心操作知识体系 抓包启动与停止 保存与导出 pcap 着色规则 时间列设置 双击接口启动 带过滤启动 手动/自动停止 Ctrl+S 全量保存 导出选中报文 导出 HTTP 对象 默认着色规则 自定义着色 导入/导出配置 绝对时间/相对时间 精度调整 时间参考点 核心原则 1. 抓包前先配过滤,避免磁盘写满 2. 保存时注意格式兼容性(pcapng vs pcap) 3. 着色规则从上到下匹配,重传规则放最上面 4. 时间戳一定要确认时区,否则排错方向全错

这张图把四个核心操作模块和它们的关键子项都列出来了。你以后做排错时,可以对照着检查:启动方式对不对?保存格式选对没?着色规则有没有覆盖关键异常?时间戳有没有设成绝对时间?

把这些基础操作练熟了,后面的高级分析才能站得住脚。不然你连报文都存不对,还谈什么排错?