2、Wireshark入门:安装、界面与过滤器

好,咱们正式开始动手了。这一章我带你搞定Wireshark的安装、界面、首选项,还有两个最核心的过滤器——捕获过滤器和显示过滤器。别小看这些基础操作,我见过不少老手在过滤器上翻车,抓了一堆没用的包,自己还浑然不觉。

2.1 安装Wireshark:别踩这些坑

Wireshark的安装其实很简单,但有几个细节我得提醒你。

Windows安装

去官网下载安装包,一路Next就行。但注意这一步——安装过程中会提示安装Npcap(或WinPcap),一定要勾选。没有这个底层驱动,Wireshark根本抓不到包。我个人习惯选「Install Npcap in WinPcap API-compatible Mode」,兼容性最好。

我曾经遇到过一个问题:安装完Wireshark后,发现抓不到无线网卡的包。折腾了半天,最后发现是Npcap安装时没勾选「Support raw 802.11 traffic」。如果你要做无线抓包,记得重新运行Npcap安装程序,把这个选项补上。

macOS安装

用Homebrew最省事:

brew install --cask wireshark
brew install wireshark-chmodbpf

装完记得重启,否则权限不对。嗯,这里要注意,macOS从Catalina开始对网络权限管得很严,第一次启动Wireshark时系统会弹窗询问是否允许网络权限,点「允许」就行。

Linux安装

Debian/Ubuntu用户:

sudo apt update
sudo apt install wireshark
sudo dpkg-reconfigure wireshark-common

最后那条命令会问你是否允许非root用户抓包,选「是」。否则每次都要sudo,烦得很。

2.2 界面介绍:别被吓到

第一次打开Wireshark,你可能会觉得界面有点乱。别慌,核心就五个区域。

区域 名称 作用
① 菜单栏 + 工具栏 文件操作、捕获控制、过滤器输入框都在这里
② 数据包列表 显示所有抓到的包,一行一个
③ 数据包详情 选中某个包后,这里展示各层协议的详细信息
④ 数据包字节 原始十六进制和ASCII码,最底层的数据
⑤ 状态栏 显示捕获状态、已抓包数量、配置文件等信息

你想想看,这五个区域其实对应了从宏观到微观的五个层次。列表区让你快速浏览,详情区让你深入分析,字节区让你看到最原始的数据。我在项目中排查问题时,通常先在列表区找异常,再到详情区确认,最后去字节区验证——三步走,基本不会漏。

2.3 首选项配置:调教你的Wireshark

默认配置能用,但不好用。我建议你花5分钟调一下,后面能省很多时间。

打开路径:Edit → Preferences(Windows/Linux)或 Wireshark → Preferences(macOS)。

2.3.1 布局调整

在「Appearance → Layout」里,你可以调整三个面板的排列方式。我个人习惯用「Packets List on top, Details below, Bytes at bottom」——列表在上,详情在中,字节在下。这样从上到下看,逻辑很顺。

2.3.2 时间显示格式

在「Appearance → Columns」里,默认的时间列显示的是「Seconds Since Beginning of Capture」。说实话,这个格式不太直观。我建议改成「Time of Day」(绝对时间),这样你一眼就能看出某个包是几点几分几秒出现的,排查问题时方便很多。

2.3.3 自动滚动

在「Capture」里,有个「Automatically scroll during live capture」。默认是勾选的。如果你在实时抓包时想停下来看某个包,记得取消勾选,否则列表会一直往下滚,你根本点不到。

小技巧:按 Ctrl+E 可以快速开始/停止捕获。按 Ctrl+K 可以快速打开捕获选项。这些快捷键记熟了,操作效率能翻倍。

2.4 捕获过滤器:抓之前就筛掉垃圾

捕获过滤器的原理是:在数据包进入Wireshark之前,网卡驱动就直接把它们扔掉了。说白了,没通过过滤器的包,Wireshark根本看不到。这样做的好处是节省内存和CPU,适合在高流量环境下使用。

语法用的是BPF(Berkeley Packet Filter),格式是:protocol direction host。

场景 过滤器表达式 说明
只抓HTTP流量 tcp port 80 只抓源或目标端口为80的TCP包
只抓某个IP host 192.168.1.100 只抓与这个IP通信的包
只抓无线管理帧 wlan type mgt 只抓Beacon、Probe等管理帧
排除广播包 not broadcast 过滤掉广播流量,减少干扰
组合条件 tcp port 80 and host 192.168.1.100 同时满足两个条件
注意:捕获过滤器不支持「或」逻辑用 or 关键字,但支持 and、not、or。比如 tcp port 80 or tcp port 443 是合法的。

我曾经在排查一个无线丢包问题时,忘了加捕获过滤器,结果抓了10分钟,文件大小飙到2GB,Wireshark直接卡死。后来我学乖了,抓之前先想清楚:我到底想看什么?然后写一个精准的捕获过滤器,只抓我关心的流量。

2.5 显示过滤器:抓完之后再筛

显示过滤器跟捕获过滤器完全不同。它是在数据包已经抓进来之后,在Wireshark内部做筛选。没通过显示过滤器的包只是被隐藏了,并没有被删除。你可以随时修改显示过滤器,看到不同的数据子集。

语法更丰富,支持协议字段的精确匹配。格式是:protocol.field operator value。

场景 过滤器表达式 说明
只看HTTP GET请求 http.request.method == "GET" 精确匹配HTTP方法
只看某个MAC地址 wlan.sa == 00:11:22:33:44:55 只看源MAC为指定值的包
只看DNS查询 dns.qry.name contains "baidu" 模糊匹配域名
只看重传包 tcp.analysis.retransmission Wireshark自动标记的重传包
组合条件 http and ip.src == 192.168.1.1 HTTP流量且源IP为指定值
小技巧:在显示过滤器输入框里,你输入字段名时,Wireshark会自动弹出补全提示。比如输入 http.,它会列出所有HTTP相关的字段。这个功能很实用,我经常靠它来回忆某个字段的准确写法。

2.6 捕获过滤器 vs 显示过滤器:到底用哪个?

很多新手会搞混这两个东西。我直接给你一个判断标准:

  • 流量非常大(比如每秒几千个包)→ 用捕获过滤器,先砍掉90%的垃圾
  • 流量一般(比如每秒几十个包)→ 全抓进来,用显示过滤器慢慢筛
  • 不确定要看什么 → 先全抓,再用显示过滤器探索

说白了,捕获过滤器是「手术刀」,精准但不可逆;显示过滤器是「放大镜」,灵活但消耗资源。我个人的习惯是:能用显示过滤器解决的,绝不用捕获过滤器。因为万一你漏掉了某个关键包,捕获过滤器已经把它扔了,你再也找不回来。

2.7 本章知识体系

下面这张图帮你理清本章的核心逻辑:从安装到配置,再到两种过滤器的使用场景和区别。

Wireshark入门知识体系 安装与权限配置 界面五大区域 首选项配置 捕获过滤器 抓之前筛掉(不可逆) 显示过滤器 抓之后筛选(可逆) 语法对比 捕获过滤器:protocol direction host(如 tcp port 80) 显示过滤器:protocol.field operator value(如 http.request.method == "GET") 选择建议 流量大→捕获过滤器 | 流量小→显示过滤器 | 不确定→全抓再筛

2.8 实战小练习

光看不练假把式。我建议你现在就打开Wireshark,做下面这几步:

  1. 启动Wireshark,选择你的无线网卡,点「Start」开始抓包
  2. 随便打开一个网页,然后停止抓包
  3. 在显示过滤器里输入 http,看看是不是只剩HTTP流量了
  4. 再输入 dns,看看DNS查询包
  5. 试试 ip.addr == 你本机的IP,只看跟你自己相关的包

做完这些,你就已经掌握了Wireshark最核心的操作。后面的章节,我们会在这个基础上深入无线抓包的各种实战场景。