2、Wireshark入门:安装、界面与过滤器
好,咱们正式开始动手了。这一章我带你搞定Wireshark的安装、界面、首选项,还有两个最核心的过滤器——捕获过滤器和显示过滤器。别小看这些基础操作,我见过不少老手在过滤器上翻车,抓了一堆没用的包,自己还浑然不觉。
2.1 安装Wireshark:别踩这些坑
Wireshark的安装其实很简单,但有几个细节我得提醒你。
Windows安装
去官网下载安装包,一路Next就行。但注意这一步——安装过程中会提示安装Npcap(或WinPcap),一定要勾选。没有这个底层驱动,Wireshark根本抓不到包。我个人习惯选「Install Npcap in WinPcap API-compatible Mode」,兼容性最好。
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」。默认是勾选的。如果你在实时抓包时想停下来看某个包,记得取消勾选,否则列表会一直往下滚,你根本点不到。
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为指定值 |
http.,它会列出所有HTTP相关的字段。这个功能很实用,我经常靠它来回忆某个字段的准确写法。
2.6 捕获过滤器 vs 显示过滤器:到底用哪个?
很多新手会搞混这两个东西。我直接给你一个判断标准:
- 流量非常大(比如每秒几千个包)→ 用捕获过滤器,先砍掉90%的垃圾
- 流量一般(比如每秒几十个包)→ 全抓进来,用显示过滤器慢慢筛
- 不确定要看什么 → 先全抓,再用显示过滤器探索
说白了,捕获过滤器是「手术刀」,精准但不可逆;显示过滤器是「放大镜」,灵活但消耗资源。我个人的习惯是:能用显示过滤器解决的,绝不用捕获过滤器。因为万一你漏掉了某个关键包,捕获过滤器已经把它扔了,你再也找不回来。
2.7 本章知识体系
下面这张图帮你理清本章的核心逻辑:从安装到配置,再到两种过滤器的使用场景和区别。
2.8 实战小练习
光看不练假把式。我建议你现在就打开Wireshark,做下面这几步:
- 启动Wireshark,选择你的无线网卡,点「Start」开始抓包
- 随便打开一个网页,然后停止抓包
- 在显示过滤器里输入
http,看看是不是只剩HTTP流量了 - 再输入
dns,看看DNS查询包 - 试试
ip.addr == 你本机的IP,只看跟你自己相关的包
做完这些,你就已经掌握了Wireshark最核心的操作。后面的章节,我们会在这个基础上深入无线抓包的各种实战场景。