开源网络封包分析软件-Wireshark
Wireshark(前称Ethereal)是一个网络封包分析软件。是世界上最受欢迎的开源网络数据包分析软件,主要是用于排查和分析网络问题,或者调试通信协议。

在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件,Wireshark的出现改变了这一切;它在GNU GPLv2通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其程式码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。
Wireshark是免费的网络协议检测程序,支持Unix/Linux、Windows。让经由程序抓取运行的网站的相关信息,包括每一封包流向及其内容、信息可依操作系统工具看出,方便查看、监控TCP session动态等等。
Wireshark is a network packet analyzer. A network packet analyzer will try to capture network packets and tries to display that packet data as detailed as possible.
You could think of a network packet analyzer as a measuring device used to examine what's going on inside a network cable, just like a voltmeter is used by an electrician to examine what's going on inside an electric cable (but at a higher level, of course).
In the past, such tools were either very expensive, proprietary, or both. However, with the advent of Wireshark, all that has changed.
Wireshark is perhaps one of the best open source packet analyzers available today.
发展简史
1997 年底,密苏里大学堪萨斯城分校的毕业生杰拉德・康姆斯(Gerald Combs)在一家小型的互联网服务供应商上班,他需要一个工具以追踪网络问题并了解更多网络知识,于是开始编写 Ethereal 软件。
1998 年 7 月,Ethereal 在经历几次开发暂停后,终于发布其第一个版本 v0.2.0。此后,Combs 收到了来自全世界的补丁、错误报告与鼓励信件。Ethereal 的发展就此开始。不久之后,Gilbert Ramirez 看到了它的潜力并贡献了一个底层的解析器。
1998 年 10 月,来自 Network Appliance 公司的 Guy Harris 在查找一套比 tcpview(另一套网络数据包截取程序)更好的软件,于是他也开始参与 Ethereal 的开发工作。
1998 年底,教授 TCP/IP 课程的 Richard Sharpe 看到了它在此类课程中的潜力,并开始研究它是否支持他需要的协议。虽然当时不支持,但可以轻松添加新的通信协议,因此他开始向 Ethereal 贡献数据包截取功能,几乎包含了当时所有通信协议。此后,越来越多的人开始参与 Ethereal 的开发。他们希望使用 Ethereal 截取特定的、但 Ethereal 尚未支持的通信协议的数据包,于是开始参与它的开发。
2006 年 6 月,因为商标的问题,Ethereal 更名为 Wireshark。
2008 年,经过十年的发展,Wireshark 正式发布 1.0 版本。
2015 年,Wireshark 发布 2.0 版本并更新了用户界面。
Wireshark是什么
以下是一些使用Wireshark目的的例子:
* 网络管理员使用Wireshark来检测网络问题
* 网络安全工程师使用Wireshark来检查资讯安全相关问题
* 开发者使用Wireshark来为新的通讯协定除错
* 普通使用者使用Wireshark来学习网络协定的相关知识
Wireshark不是什么
* Wireshark不是入侵侦测软件(Intrusion Detection Software, IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。
* Wireshark不会对网络封包产生内容的修改 - 它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。
Tshark
Tshark是开源网络协议分析工具wireshark的命令行版本,wireshark可对多达千余种网络协议进行解码分析。Wireshark和tcpdump均使用libpcap库进行网络截包。专为在无图形界面环境中分析网络流量而设计。与Wireshark相比,Tshark更适合需要高效操作、脚本化处理以及服务器端使用的场景。尽管缺少GUI,Tshark仍然继承了Wireshark强大的协议解析能力,支持上百种网络协议的流量捕获和分析。在众多流量分析工具中,Tshark凭借其轻量化、强大的过滤功能以及高效的命令行操作能力,成为了深受欢迎的“网络侦探”。Tshark的优势:
轻量高效:占用资源低,适合在资源有限的环境中运行。
支持多平台:兼容Windows、Linux和macOS。
灵活强大:支持抓包过滤、显示过滤、数据导出、统计分析等多种功能。
自动化能力:方便与脚本结合,实现自动化分析与任务调度。
前往Wireshark官网,下载适合你系统的安装程序。安装过程中,确保勾选“Tshark”选项被勾选。并于稍后确保终端可以直接运行Tshark命令。如果需要手动添加环境变量,可以将Wireshark的安装目录添加到PATH变量中。要验证安装是否成功,运行以下命令:
tshark -v
基础用法
1. 实时抓包
Tshark最核心的功能就是抓包。以下是最基本的抓包命令:
tshark -i eth0
-i eth0:指定网络接口为eth0(使用tshark -D查看本机所有接口)。
运行效果:终端实时显示抓到的流量数据。
2. 保存抓包数据
如果需要将流量数据保存到文件,以便后续分析,可以使用-w选项:
tshark -i eth0 -w capture.pcap
数据保存为capture.pcap文件,格式与Wireshark兼容。
3. 查看抓包文件
要分析已经捕获的流量文件,可以使用-r选项:
tshark -r capture.pcap
终端将逐行显示数据包的详细内容。
过滤器
过滤器是Tshark的核心功能,分为捕获过滤器和显示过滤器两种。
1. 捕获过滤器
捕获过滤器用于指定抓取的流量类型,减少不必要的数据。例如:
抓取HTTP流量:
tshark -i eth0 port 80
抓取特定IP地址的流量:
tshark -i eth0 host 192.168.1.1
2. 显示过滤器
显示过滤器用于分析已捕获的数据,筛选出感兴趣的内容。例如:
显示TCP流量:
tshark -r capture.pcap -Y "tcp"
显示特定源IP的数据包:
tshark -r capture.pcap -Y "ip.src == 192.168.1.1"
进阶使用
1. 提取关键字段
如果只关心某些字段的信息(如源IP、目标IP等),可以使用以下命令:
tshark -r capture.pcap -T fields -e ip.src -e ip.dst -e tcp.port
-T fields:指定只提取字段信息。
-e:后接要提取的字段名称。
2. 统计分析
Tshark内置了丰富的统计功能,可以快速生成网络流量统计数据。例如:
按协议统计:
tshark -q -z protocols
按端口统计:
tshark -q -z io,phs
3. 跟踪TCP会话
如果想要分析某个TCP连接的完整通信,可以使用以下命令:
tshark -r capture.pcap -q -z follow,tcp,ascii,0
这将提取指定TCP流的完整数据(如HTTP请求和响应)。
4. 自动化分析
结合脚本,Tshark可以实现自动化流量捕获和分析。以下是一个简单的例子:
#!/bin/bash
# 每隔1小时抓取一次流量,并保存到文件
while true; do
tshark -i eth0 -a duration:3600 -w capture_$(date +%Y%m%d%H%M).pcap
sleep 3600
done
成立基金会
2023年4月,Wireshark 社区正式成立了 Wireshark 基金会 (Wireshark Foundation),该基金会属于 501 (c)(3) 非营利性组织,旨在帮助促进 Wireshark 的发展,并以其他方式支持社区。Wireshark 首席开发者 Gerald Combs 表示,像 Wireshark 这样工具的重要性不可低估,现代社会运行在需要可靠、快速和安全的计算机网络上。Wireshark 本可以捐赠给现有的基金会,例如 Cloud Native Computing Foundation (CNCF),但它决定创建一个新的基金会,以确保 Wireshark 社区多年来建立的流程得以保留。
25 周年记
Wireshark 在2023年7月中旬就已诞生 25 周年,项目作者 Gerald Combs 近日发文介绍了创建 Wireshark 的动机,以及一路走来的心路历程。他说道,25 年前他发送了这封电子邮件,最终改变了自己的人生轨迹。从邮件可以看到,项目名称为 Ethereal(直到 2006 年才改名 Wireshark)。Gerald Combs 称协议分析器在当时是十分稀缺的工具,如果需要查看网络运行相关的信息,可以免费使用 tcpdump 和 snoop 等命令行工具,但如果想要 GUI 分析器,则必须支付相当大的一笔费用来购买。由于 Gerald 的工作需要用到协议分析器,最终他决定自己编写一个简单的分析器,并将其作为开源项目发布。在发送出上面那封电子邮件几天后,Gerald 收到了一个补丁,然后是另一个,接着再一个。很快 Ethereal 就发展成了一个蓬勃发展的开发者社区,于是 Gerald 便开始忙起来了。在接下来的几年里,该项目及其社区的发展超出了 Gerald 的预期。他感叹道如今世界各地的使用者都在使用 Wireshark 来让他们的网络变得快速、可靠和安全,教育工作者也用它来向下一代安全和网络工程师传授网络的底层知识。毫无疑问,Wireshark 是十分成功的开源项目。Gerald 从它的经历总结了开源项目持续发展要满足这些要求:用户支持、教育工作者支持、开发者支持、由律师和会计师提供的法律和财务支持,以及稳定的基础设施。
最新版本:2.6
Wireshark 2.6.0 发布,这是一个重大更新,增加了许多新功能和改进,并支持众多新协议。自2.5以来,已经进行了许多用户界面改进,而 Wireshark 2.6似乎是支持传统 GTK+ 图形用户界面的最后一个版本,开发团队宣布它在下一个 Wireshark 3.0主要系列中不会得到支持,Wireshark 2.6的新功能包括支持 HTTP 请求序列,支持 MaxMind DB 文件,支持 Microsoft 网络监视器捕获文件以及 LoRaTap 捕获接口支持。IP地图功能已被删除,并支持 GeoIP 和 GeoLite Legacy 数据库。另外值得一提的是,Wireshark 的 Windows 包现在使用 Microsoft Visual Studio 2017构建。当然,如果您从稳定的 Wireshark 2.4系列升级,您应该知道 Wireshark 2.6带来了更加酷的新功能,所有这些都可以在发行公告中查看。
现在支持数十种新协议
在2.6版本中,Wireshark获得了数十种新协议的支持,其中包括ActiveMQ Artemis核心协议、AMT(自动多播隧道)、AVSP(Arista厂商特定协议)、蓝牙网格、Broadcom标签、CVS密码服务器、Excentis DOCSIS31 XRA和CAN-ETH。
F1应用协议、F5节点、FP Mux、GRPC(gRPC)、IEEE 1905.1a、IEEE 802.11ax(高效WLAN(HEW))、IEEE 802.15.9 IEEE关于密钥管理协议(KMP)数据报传输的推荐规范,以及Wireshark 2.6也支持IEEE 802.3br帧抢占协议。
ISOBUS、LoRaTap、LoRaWAN、Lustre文件系统、Lustre网络、Nano / RaiBlocks加密货币协议(UDP)、网络功能应用平台接口(NFAPI)协议、新无线电无线电链路控制协议、新无线电无线电资源控制协议以及NR(5G)MAC协议。
此外,还有802.15.4嗅探器协议、约束RESTful环境的对象安全(OSCORE)、PFCP(数据包转发控制协议),Protobuf(协议缓冲区)、QUIC(IETF)、RFC 4108使用CMS保护固件软件包、会话复用协议和SolarEdge监控协议。最后,Wireshark 2.6支持Steam In-Home Streaming Discovery协议、Wi-SUN FAN协议、Wi-Fi Device Provisioning协议、以及Tibia、TWAMP和OWAMP协议。
最新版本:3.0
3.0 版本对用户界面进行了许多改进。此前的旧版用户界面(GTK+)已被删除,并不再提供支持。而且从该版本起,Wireshark 要求使用 Qt 5.2 或更高版本,不再支持 Qt 4;要求使用 GLib 2.32, GnuTLS 3.2, Python 3.4 或更高版本,不再支持 Python 2.7。还有一个重要的变化就是 WinPcap —— 用于捕获和传输网络数据包的工具,目前在 Windows 版本上已被 Npcap 取代。因为 WinPcap 自2013年以来就一直没有更新,已停止维护,而 Npcap 大约在半年前还收到更新,并且仍然由 Nmap 项目组在积极维护。除了更好的安全性和提供了 WinPcap 中没有的一些高级功能之外(支持回环抓包和 802.11 WiFi monitor 模式的抓包),Npcap 的另一个优点是其驱动程序已经过微软的测试和签名,允许用户在具有更严格签名要求的 Windows 10 上运行它。此外,最新版本的 Wireshark 还增加了对数十种新协议的支持。更多详情请参考 发行公告 | 更新日志。
最新版本:3.6
Wireshark 3.6.0 现已于2021年11月下旬发布,主要更新内容如下:
macOS Intel 软件包现在随 Qt 5.15.3 一起提供,并且需要 macOS 10.13 或更高版本
显示过滤器集元素现在必须以逗号分隔
显示过滤器表达式 "a != b" 现在与 "!(a == b)" 具有相同的含义
现在支持 Vector Informatik 二进制日志文件 (BLF)
新的支持协议:
5G 合法拦截 (5GLI)
蓝牙链路管理器协议 (BT LMP)
捆绑协议第 7 版 (BPv7)
安全性捆绑协议第 7 版 (BPSec)
CBOR 对象签名和加密 (COSE)
E2 应用协议 (E2AP)
Event Tracing for Windows (ETW)
EXtreme extra Eth Header (EXEH)
高性能连接追踪器 (HiPerConTracer)
ISO 10681
Kerberos SPAKE
Linux psample 协议
本地互连网络 (LIN)
Microsoft Task Scheduler Service
O-RAN E2AP
O-RAN fronthaul UC-plane (O-RAN)
Opus Interactive Audio Codec (OPUS)
PDU Transport Protocol, R09.x (R09)
RDP Dynamic Channel Protocol (DRDYNVC)
RDP Graphic Pipeline Channel Protocol (EGFX)
RDP 多传输 (RDPMT)
实时发布-订阅虚拟传输 (RTPS-VT)
实时发布-订阅有线协议 (RTPS-PROC)
共享内存通信 (SMC)
信号 PDU
SparkplugB
状态同步协议 (SSyncP)
标记图像文件格式 (TIFF)
TP-Link 智能家居协议
UAVCAN DSDL
UAVCAN/CAN
UDP 远程桌面协议 (RDPUDP)
Van Jacobson PPP 压缩 (VJC)
魔兽世界 (WOWW) 和 X2 xIRI 负载 (xIRI)
更多详情请查看更新公告。
最新版本:4
v4.0 于2022年10月上旬正式发布了,从版本号上看,自 3.6 以来,新版本带来了很多变化。默认的主窗口布局:在过去的版本中,Wireshark 遵循其前辈们制定的标准,将数据包列表、数据包细节和字节视图放在彼此的上面:

这个标准是很久以前制定的,当时大多数显示器的长宽比是 4:3,分辨率比现在的低。从 Wireshark 4.0 开始,默认的是细节和字节视图彼此相邻,这使得它更容易利用现代显示器上的可用空间。
会话和端点:会话和端点对话框已经是一个很受欢迎的功能了,在调查一个问题时,人们往往会首先看这个对话框。Wireshark 4.0 使其功能更强大,更容易使用。例如,现在可以在不同的窗口中并排看到 TCP 和 UDP 的会话。排序得到了改进,你现在可以隐藏列,对 stream ID 进行过滤,并将数据导出为 JSON。

十六进制导入:有时你感兴趣的数据包并不在一个你可以直接用 Wireshark 打开的 pcap 或 pcapng 文件中,而是埋在一个十六进制转储中。Wireshark 提供了两种将十六进制转储转换为 pcaps 的方法。主程序中的 "Import From Hex Dump" 和 text2pcap 工具。在过去的版本中,它们有不同的功能集,行为也不同,但在 Wireshark 4.0 中它们更加一致。
将要消失的特性:不再为 Wireshark 4.0 及以后的版本提供官方的 32 位 Windows 软件包。如果你还在使用 32 位的 Windows 系统,官方将继续提供 Wireshark 3.6 的更新直到 2024 年。你将无法使用 4.0 及以后版本的新功能。
仍在开发的特性:有两个非常想加入的 Windows 功能,但目前还没有在 4.0 版本中出现,即黑暗模式和 Arm64 支持。黑暗模式需要获得用户界面库 Qt 的支持,这仍然是一项正在进行的工作,但有希望能在 Wireshark 4.2 中引入。为 Arm64 构建软件包需要构建硬件和软件库支持,同样有望在 Wireshark 4.2 中做到这一点。
更多详情可查看此处。
v4.6.0 现已于2025年10中旬正式发布,一些具体更新内容如下:
现在可以解析 macOS 上 tcpdump 提供的进程信息、数据包元数据、流 ID、丢包信息等内容。
以下功能为自 v4.4.0 以来的新功能或重大更新:
Windows 安装包现附带 Npcap 1.83(之前为 1.79)。
Windows 和 macOS 安装包现附带 Qt 6.9.3(之前为 6.5.3)。
macOS 版本现提供 通用安装包(Universal Installer),不再区分 Arm64 与 Intel 架构。Issue 17294
WinPcap 不再受支持。在 Windows 上请改用 Npcap,并卸载 WinPcap。WinPcap 最后一个版本为 4.1.3(2013 年发布),仅支持至 Windows 8,该系统现已被 Microsoft 与 Wireshark 停止支持。
新增 “Plots(散点图)” 对话框,与 “I/O Graphs(直方图)” 相比,可展示多种散点数据,支持多图、标记及自动滚动。
实时捕获可压缩写入。此前仅在多文件捕获轮换时可压缩。现在 TShark 的 --compress 参数可在实时捕获中使用。Issue 9311
绝对时间字段(Absolute time fields)在使用 -T json 输出时,无论在 “数据包详情” 中如何显示,均使用 UTC 的 ISO 8601 格式。这在 -T ek 中自 4.2.0 版起已启用。
时间显示格式更新:-T fields、-T pdml、自定义列或 CSV 输出中,不再使用 asctime 样式(如 Dec 18, 2017 05:28:39 EST),改用 ISO 8601。为向后兼容,可通过 protocols.display_abs_time_ascii 选项切换显示方式。未来版本可能彻底移除 asctime 格式。
UTC 时间列 现在按 ISO 8601 标准添加 “Z” 后缀。
TShark -G 参数增强:不再要求必须为第一个参数,并支持与 -o、-d、--disable-protocol 等其他选项配合使用。
EUI-64 字段类型 改为字节(bytes)类型,以便进行切片与匹配(如 wpan.src64[:3] == eth.src[:3])。
NTP 解密支持 NTS(Network Time Security) 协议 (sysin),前提是捕获中包含 NTS-KE 包和 TLS 密钥。
MACsec 解密增强:支持使用 MKA 解封的 SAK 或在 MACsec 解析器中配置的 PSK。
TCP 流图(Stream Graph)坐标轴 现采用 SI 单位。Issue 20197
自定义列增强:可选择使用与 “数据包详情” 相同的格式显示值,并支持复杂表达式按数值排序。
新增显示过滤函数 float 与 double,支持类型显式转换与算术操作。
I/O 图窗口 最小宽度减小,更适合低分辨率桌面。Issue 20147
X.509 证书导出:可通过菜单 File › Export Objects › X509AF 导出证书,也可在 TShark 中使用 --export-objects x509af。
HTTP / HTTP2 解析器新增对 Zstandard 压缩编码 的支持。
跟踪流(Follow Stream) 现支持 MPEG-2 TS PID 与内部 Packetized Elementary Streams。
DNP3(分布式网络协议 3) 现支持在会话与端点表中显示。
Lua 改进:内置的 bit 与 rex_pcre2 库现会自动加入 package.loaded,可通过 require 调用。Issue 20213
数据包列表 与 事件列表 不再支持多行显示。Issue 14424
ethers 文件 现支持 EUI-64 映射。Issue 15487
Hex Dump 导入功能 支持 2–4 字节分组(含小端模式),并识别带 0x 前缀的偏移。Issue 16193
Hex Dump 导出 现可包含时间戳前缀(Wireshark 的 “打印” 与 “导出” 对话框,以及 TShark 的 --hexdump time 选项)。Issue 17132
Lua 新增 Conversation 对象,可在脚本中访问会话数据 (sysin)。Issue 15396
新增 “编辑 › 复制 › 作为 HTML” 菜单项,可自定义复制格式与键盘快捷键。
GUI 导出对话框新增 “无重复键 JSON 输出” 选项。
导出对话框可输出 原始十六进制字节数据。
会话与端点表新增显示 精确字节与比特率 的选项,由偏好项 conv.machine_readable 控制。
-z <tap>,tree 的 TShark 统计输出格式可通过 -o statistics.output_format 控制。
配色方案可独立设置浅色 / 深色模式,与系统设置无关(需 Qt 6.8+)。Issue 19328
libxml2 现为构建必需依赖(不支持 2.15.0 版本)。
View 菜单新增 “重新解析数据包(Redissect Packets)” 选项,适用于地址解析或解密密钥更新后。
HTTP2 可选跟踪 3GPP 会话(5G SBI)。
Windows 构建文档不再需要 Java。
Linux 上捕获过滤器支持 BPF 扩展(如 inbound、outbound、ifindex)。
移除的功能与支持
不再支持 AirPcap 与 WinPcap。
不再支持 libnl v1 / v2。
CMake 选项 ENABLE_STATIC 已弃用,请改用 BUILD_SHARED_LIBS。
新增文件格式解析支持
RIFF(资源交换文件格式)
TTL 文件格式
新增协议支持
支持以下协议:Asymmetric Key Packages (AKP)、Binary HTTP、BIST TotalView-ITCH、BIST TotalView-OUCH、Bluetooth Android HCI、Bluetooth Intel HCI、BPSec COSE Context、BPSec Default SC、Commsignia Capture Protocol (C2P)、DECT NR+、DLMS/COSEM、Ephemeral Diffie-Hellman Over COSE、ILNP、LDA Neo Device Trailer、Lenbrook Service Discovery Protocol、LLC V1、Navitrol、NTS-KE、Ouster VLP-16、Private Line Emulation、RC V3、RCG、Roughtime、SBAS L5、SGP.22、SGP.32、SICK CoLA Ascii/Binary、Silabs Debug Channel、XCP、USB-PTP、VLP-16、vSomeIP Internal Protocol 等。
更新的协议支持
协议更新数量众多,此处不一一列出。
新增与更新的捕获文件支持
改进了 BLF 文件格式(包括写入功能)。
新增与更新的捕获接口支持
Windows: 改进了 etwdump 的用户体验,显示未知事件的原始字节内容。
主要 API 变更
Lua API 现支持 Libgcrypt 对称加密函数。
更多详情可查看发行公告。
官方主页:http://www.wireshark.org/

在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件,Wireshark的出现改变了这一切;它在GNU GPLv2通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其程式码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。
Wireshark是免费的网络协议检测程序,支持Unix/Linux、Windows。让经由程序抓取运行的网站的相关信息,包括每一封包流向及其内容、信息可依操作系统工具看出,方便查看、监控TCP session动态等等。
Wireshark is a network packet analyzer. A network packet analyzer will try to capture network packets and tries to display that packet data as detailed as possible.
You could think of a network packet analyzer as a measuring device used to examine what's going on inside a network cable, just like a voltmeter is used by an electrician to examine what's going on inside an electric cable (but at a higher level, of course).
In the past, such tools were either very expensive, proprietary, or both. However, with the advent of Wireshark, all that has changed.
Wireshark is perhaps one of the best open source packet analyzers available today.
发展简史
1997 年底,密苏里大学堪萨斯城分校的毕业生杰拉德・康姆斯(Gerald Combs)在一家小型的互联网服务供应商上班,他需要一个工具以追踪网络问题并了解更多网络知识,于是开始编写 Ethereal 软件。
1998 年 7 月,Ethereal 在经历几次开发暂停后,终于发布其第一个版本 v0.2.0。此后,Combs 收到了来自全世界的补丁、错误报告与鼓励信件。Ethereal 的发展就此开始。不久之后,Gilbert Ramirez 看到了它的潜力并贡献了一个底层的解析器。
1998 年 10 月,来自 Network Appliance 公司的 Guy Harris 在查找一套比 tcpview(另一套网络数据包截取程序)更好的软件,于是他也开始参与 Ethereal 的开发工作。
1998 年底,教授 TCP/IP 课程的 Richard Sharpe 看到了它在此类课程中的潜力,并开始研究它是否支持他需要的协议。虽然当时不支持,但可以轻松添加新的通信协议,因此他开始向 Ethereal 贡献数据包截取功能,几乎包含了当时所有通信协议。此后,越来越多的人开始参与 Ethereal 的开发。他们希望使用 Ethereal 截取特定的、但 Ethereal 尚未支持的通信协议的数据包,于是开始参与它的开发。
2006 年 6 月,因为商标的问题,Ethereal 更名为 Wireshark。
2008 年,经过十年的发展,Wireshark 正式发布 1.0 版本。
2015 年,Wireshark 发布 2.0 版本并更新了用户界面。
Wireshark是什么
以下是一些使用Wireshark目的的例子:
* 网络管理员使用Wireshark来检测网络问题
* 网络安全工程师使用Wireshark来检查资讯安全相关问题
* 开发者使用Wireshark来为新的通讯协定除错
* 普通使用者使用Wireshark来学习网络协定的相关知识
Wireshark不是什么
* Wireshark不是入侵侦测软件(Intrusion Detection Software, IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。
* Wireshark不会对网络封包产生内容的修改 - 它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。
Tshark
Tshark是开源网络协议分析工具wireshark的命令行版本,wireshark可对多达千余种网络协议进行解码分析。Wireshark和tcpdump均使用libpcap库进行网络截包。专为在无图形界面环境中分析网络流量而设计。与Wireshark相比,Tshark更适合需要高效操作、脚本化处理以及服务器端使用的场景。尽管缺少GUI,Tshark仍然继承了Wireshark强大的协议解析能力,支持上百种网络协议的流量捕获和分析。在众多流量分析工具中,Tshark凭借其轻量化、强大的过滤功能以及高效的命令行操作能力,成为了深受欢迎的“网络侦探”。Tshark的优势:
轻量高效:占用资源低,适合在资源有限的环境中运行。
支持多平台:兼容Windows、Linux和macOS。
灵活强大:支持抓包过滤、显示过滤、数据导出、统计分析等多种功能。
自动化能力:方便与脚本结合,实现自动化分析与任务调度。
前往Wireshark官网,下载适合你系统的安装程序。安装过程中,确保勾选“Tshark”选项被勾选。并于稍后确保终端可以直接运行Tshark命令。如果需要手动添加环境变量,可以将Wireshark的安装目录添加到PATH变量中。要验证安装是否成功,运行以下命令:
tshark -v
基础用法
1. 实时抓包
Tshark最核心的功能就是抓包。以下是最基本的抓包命令:
tshark -i eth0
-i eth0:指定网络接口为eth0(使用tshark -D查看本机所有接口)。
运行效果:终端实时显示抓到的流量数据。
2. 保存抓包数据
如果需要将流量数据保存到文件,以便后续分析,可以使用-w选项:
tshark -i eth0 -w capture.pcap
数据保存为capture.pcap文件,格式与Wireshark兼容。
3. 查看抓包文件
要分析已经捕获的流量文件,可以使用-r选项:
tshark -r capture.pcap
终端将逐行显示数据包的详细内容。
过滤器
过滤器是Tshark的核心功能,分为捕获过滤器和显示过滤器两种。
1. 捕获过滤器
捕获过滤器用于指定抓取的流量类型,减少不必要的数据。例如:
抓取HTTP流量:
tshark -i eth0 port 80
抓取特定IP地址的流量:
tshark -i eth0 host 192.168.1.1
2. 显示过滤器
显示过滤器用于分析已捕获的数据,筛选出感兴趣的内容。例如:
显示TCP流量:
tshark -r capture.pcap -Y "tcp"
显示特定源IP的数据包:
tshark -r capture.pcap -Y "ip.src == 192.168.1.1"
进阶使用
1. 提取关键字段
如果只关心某些字段的信息(如源IP、目标IP等),可以使用以下命令:
tshark -r capture.pcap -T fields -e ip.src -e ip.dst -e tcp.port
-T fields:指定只提取字段信息。
-e:后接要提取的字段名称。
2. 统计分析
Tshark内置了丰富的统计功能,可以快速生成网络流量统计数据。例如:
按协议统计:
tshark -q -z protocols
按端口统计:
tshark -q -z io,phs
3. 跟踪TCP会话
如果想要分析某个TCP连接的完整通信,可以使用以下命令:
tshark -r capture.pcap -q -z follow,tcp,ascii,0
这将提取指定TCP流的完整数据(如HTTP请求和响应)。
4. 自动化分析
结合脚本,Tshark可以实现自动化流量捕获和分析。以下是一个简单的例子:
#!/bin/bash
# 每隔1小时抓取一次流量,并保存到文件
while true; do
tshark -i eth0 -a duration:3600 -w capture_$(date +%Y%m%d%H%M).pcap
sleep 3600
done
成立基金会
2023年4月,Wireshark 社区正式成立了 Wireshark 基金会 (Wireshark Foundation),该基金会属于 501 (c)(3) 非营利性组织,旨在帮助促进 Wireshark 的发展,并以其他方式支持社区。Wireshark 首席开发者 Gerald Combs 表示,像 Wireshark 这样工具的重要性不可低估,现代社会运行在需要可靠、快速和安全的计算机网络上。Wireshark 本可以捐赠给现有的基金会,例如 Cloud Native Computing Foundation (CNCF),但它决定创建一个新的基金会,以确保 Wireshark 社区多年来建立的流程得以保留。
25 周年记
Wireshark 在2023年7月中旬就已诞生 25 周年,项目作者 Gerald Combs 近日发文介绍了创建 Wireshark 的动机,以及一路走来的心路历程。他说道,25 年前他发送了这封电子邮件,最终改变了自己的人生轨迹。从邮件可以看到,项目名称为 Ethereal(直到 2006 年才改名 Wireshark)。Gerald Combs 称协议分析器在当时是十分稀缺的工具,如果需要查看网络运行相关的信息,可以免费使用 tcpdump 和 snoop 等命令行工具,但如果想要 GUI 分析器,则必须支付相当大的一笔费用来购买。由于 Gerald 的工作需要用到协议分析器,最终他决定自己编写一个简单的分析器,并将其作为开源项目发布。在发送出上面那封电子邮件几天后,Gerald 收到了一个补丁,然后是另一个,接着再一个。很快 Ethereal 就发展成了一个蓬勃发展的开发者社区,于是 Gerald 便开始忙起来了。在接下来的几年里,该项目及其社区的发展超出了 Gerald 的预期。他感叹道如今世界各地的使用者都在使用 Wireshark 来让他们的网络变得快速、可靠和安全,教育工作者也用它来向下一代安全和网络工程师传授网络的底层知识。毫无疑问,Wireshark 是十分成功的开源项目。Gerald 从它的经历总结了开源项目持续发展要满足这些要求:用户支持、教育工作者支持、开发者支持、由律师和会计师提供的法律和财务支持,以及稳定的基础设施。
最新版本:2.6
Wireshark 2.6.0 发布,这是一个重大更新,增加了许多新功能和改进,并支持众多新协议。自2.5以来,已经进行了许多用户界面改进,而 Wireshark 2.6似乎是支持传统 GTK+ 图形用户界面的最后一个版本,开发团队宣布它在下一个 Wireshark 3.0主要系列中不会得到支持,Wireshark 2.6的新功能包括支持 HTTP 请求序列,支持 MaxMind DB 文件,支持 Microsoft 网络监视器捕获文件以及 LoRaTap 捕获接口支持。IP地图功能已被删除,并支持 GeoIP 和 GeoLite Legacy 数据库。另外值得一提的是,Wireshark 的 Windows 包现在使用 Microsoft Visual Studio 2017构建。当然,如果您从稳定的 Wireshark 2.4系列升级,您应该知道 Wireshark 2.6带来了更加酷的新功能,所有这些都可以在发行公告中查看。
现在支持数十种新协议
在2.6版本中,Wireshark获得了数十种新协议的支持,其中包括ActiveMQ Artemis核心协议、AMT(自动多播隧道)、AVSP(Arista厂商特定协议)、蓝牙网格、Broadcom标签、CVS密码服务器、Excentis DOCSIS31 XRA和CAN-ETH。
F1应用协议、F5节点、FP Mux、GRPC(gRPC)、IEEE 1905.1a、IEEE 802.11ax(高效WLAN(HEW))、IEEE 802.15.9 IEEE关于密钥管理协议(KMP)数据报传输的推荐规范,以及Wireshark 2.6也支持IEEE 802.3br帧抢占协议。
ISOBUS、LoRaTap、LoRaWAN、Lustre文件系统、Lustre网络、Nano / RaiBlocks加密货币协议(UDP)、网络功能应用平台接口(NFAPI)协议、新无线电无线电链路控制协议、新无线电无线电资源控制协议以及NR(5G)MAC协议。
此外,还有802.15.4嗅探器协议、约束RESTful环境的对象安全(OSCORE)、PFCP(数据包转发控制协议),Protobuf(协议缓冲区)、QUIC(IETF)、RFC 4108使用CMS保护固件软件包、会话复用协议和SolarEdge监控协议。最后,Wireshark 2.6支持Steam In-Home Streaming Discovery协议、Wi-SUN FAN协议、Wi-Fi Device Provisioning协议、以及Tibia、TWAMP和OWAMP协议。
最新版本:3.0
3.0 版本对用户界面进行了许多改进。此前的旧版用户界面(GTK+)已被删除,并不再提供支持。而且从该版本起,Wireshark 要求使用 Qt 5.2 或更高版本,不再支持 Qt 4;要求使用 GLib 2.32, GnuTLS 3.2, Python 3.4 或更高版本,不再支持 Python 2.7。还有一个重要的变化就是 WinPcap —— 用于捕获和传输网络数据包的工具,目前在 Windows 版本上已被 Npcap 取代。因为 WinPcap 自2013年以来就一直没有更新,已停止维护,而 Npcap 大约在半年前还收到更新,并且仍然由 Nmap 项目组在积极维护。除了更好的安全性和提供了 WinPcap 中没有的一些高级功能之外(支持回环抓包和 802.11 WiFi monitor 模式的抓包),Npcap 的另一个优点是其驱动程序已经过微软的测试和签名,允许用户在具有更严格签名要求的 Windows 10 上运行它。此外,最新版本的 Wireshark 还增加了对数十种新协议的支持。更多详情请参考 发行公告 | 更新日志。
最新版本:3.6
Wireshark 3.6.0 现已于2021年11月下旬发布,主要更新内容如下:
macOS Intel 软件包现在随 Qt 5.15.3 一起提供,并且需要 macOS 10.13 或更高版本
显示过滤器集元素现在必须以逗号分隔
显示过滤器表达式 "a != b" 现在与 "!(a == b)" 具有相同的含义
现在支持 Vector Informatik 二进制日志文件 (BLF)
新的支持协议:
5G 合法拦截 (5GLI)
蓝牙链路管理器协议 (BT LMP)
捆绑协议第 7 版 (BPv7)
安全性捆绑协议第 7 版 (BPSec)
CBOR 对象签名和加密 (COSE)
E2 应用协议 (E2AP)
Event Tracing for Windows (ETW)
EXtreme extra Eth Header (EXEH)
高性能连接追踪器 (HiPerConTracer)
ISO 10681
Kerberos SPAKE
Linux psample 协议
本地互连网络 (LIN)
Microsoft Task Scheduler Service
O-RAN E2AP
O-RAN fronthaul UC-plane (O-RAN)
Opus Interactive Audio Codec (OPUS)
PDU Transport Protocol, R09.x (R09)
RDP Dynamic Channel Protocol (DRDYNVC)
RDP Graphic Pipeline Channel Protocol (EGFX)
RDP 多传输 (RDPMT)
实时发布-订阅虚拟传输 (RTPS-VT)
实时发布-订阅有线协议 (RTPS-PROC)
共享内存通信 (SMC)
信号 PDU
SparkplugB
状态同步协议 (SSyncP)
标记图像文件格式 (TIFF)
TP-Link 智能家居协议
UAVCAN DSDL
UAVCAN/CAN
UDP 远程桌面协议 (RDPUDP)
Van Jacobson PPP 压缩 (VJC)
魔兽世界 (WOWW) 和 X2 xIRI 负载 (xIRI)
更多详情请查看更新公告。
最新版本:4
v4.0 于2022年10月上旬正式发布了,从版本号上看,自 3.6 以来,新版本带来了很多变化。默认的主窗口布局:在过去的版本中,Wireshark 遵循其前辈们制定的标准,将数据包列表、数据包细节和字节视图放在彼此的上面:

这个标准是很久以前制定的,当时大多数显示器的长宽比是 4:3,分辨率比现在的低。从 Wireshark 4.0 开始,默认的是细节和字节视图彼此相邻,这使得它更容易利用现代显示器上的可用空间。
会话和端点:会话和端点对话框已经是一个很受欢迎的功能了,在调查一个问题时,人们往往会首先看这个对话框。Wireshark 4.0 使其功能更强大,更容易使用。例如,现在可以在不同的窗口中并排看到 TCP 和 UDP 的会话。排序得到了改进,你现在可以隐藏列,对 stream ID 进行过滤,并将数据导出为 JSON。

十六进制导入:有时你感兴趣的数据包并不在一个你可以直接用 Wireshark 打开的 pcap 或 pcapng 文件中,而是埋在一个十六进制转储中。Wireshark 提供了两种将十六进制转储转换为 pcaps 的方法。主程序中的 "Import From Hex Dump" 和 text2pcap 工具。在过去的版本中,它们有不同的功能集,行为也不同,但在 Wireshark 4.0 中它们更加一致。
将要消失的特性:不再为 Wireshark 4.0 及以后的版本提供官方的 32 位 Windows 软件包。如果你还在使用 32 位的 Windows 系统,官方将继续提供 Wireshark 3.6 的更新直到 2024 年。你将无法使用 4.0 及以后版本的新功能。
仍在开发的特性:有两个非常想加入的 Windows 功能,但目前还没有在 4.0 版本中出现,即黑暗模式和 Arm64 支持。黑暗模式需要获得用户界面库 Qt 的支持,这仍然是一项正在进行的工作,但有希望能在 Wireshark 4.2 中引入。为 Arm64 构建软件包需要构建硬件和软件库支持,同样有望在 Wireshark 4.2 中做到这一点。
更多详情可查看此处。
v4.6.0 现已于2025年10中旬正式发布,一些具体更新内容如下:
现在可以解析 macOS 上 tcpdump 提供的进程信息、数据包元数据、流 ID、丢包信息等内容。
以下功能为自 v4.4.0 以来的新功能或重大更新:
Windows 安装包现附带 Npcap 1.83(之前为 1.79)。
Windows 和 macOS 安装包现附带 Qt 6.9.3(之前为 6.5.3)。
macOS 版本现提供 通用安装包(Universal Installer),不再区分 Arm64 与 Intel 架构。Issue 17294
WinPcap 不再受支持。在 Windows 上请改用 Npcap,并卸载 WinPcap。WinPcap 最后一个版本为 4.1.3(2013 年发布),仅支持至 Windows 8,该系统现已被 Microsoft 与 Wireshark 停止支持。
新增 “Plots(散点图)” 对话框,与 “I/O Graphs(直方图)” 相比,可展示多种散点数据,支持多图、标记及自动滚动。
实时捕获可压缩写入。此前仅在多文件捕获轮换时可压缩。现在 TShark 的 --compress 参数可在实时捕获中使用。Issue 9311
绝对时间字段(Absolute time fields)在使用 -T json 输出时,无论在 “数据包详情” 中如何显示,均使用 UTC 的 ISO 8601 格式。这在 -T ek 中自 4.2.0 版起已启用。
时间显示格式更新:-T fields、-T pdml、自定义列或 CSV 输出中,不再使用 asctime 样式(如 Dec 18, 2017 05:28:39 EST),改用 ISO 8601。为向后兼容,可通过 protocols.display_abs_time_ascii 选项切换显示方式。未来版本可能彻底移除 asctime 格式。
UTC 时间列 现在按 ISO 8601 标准添加 “Z” 后缀。
TShark -G 参数增强:不再要求必须为第一个参数,并支持与 -o、-d、--disable-protocol 等其他选项配合使用。
EUI-64 字段类型 改为字节(bytes)类型,以便进行切片与匹配(如 wpan.src64[:3] == eth.src[:3])。
NTP 解密支持 NTS(Network Time Security) 协议 (sysin),前提是捕获中包含 NTS-KE 包和 TLS 密钥。
MACsec 解密增强:支持使用 MKA 解封的 SAK 或在 MACsec 解析器中配置的 PSK。
TCP 流图(Stream Graph)坐标轴 现采用 SI 单位。Issue 20197
自定义列增强:可选择使用与 “数据包详情” 相同的格式显示值,并支持复杂表达式按数值排序。
新增显示过滤函数 float 与 double,支持类型显式转换与算术操作。
I/O 图窗口 最小宽度减小,更适合低分辨率桌面。Issue 20147
X.509 证书导出:可通过菜单 File › Export Objects › X509AF 导出证书,也可在 TShark 中使用 --export-objects x509af。
HTTP / HTTP2 解析器新增对 Zstandard 压缩编码 的支持。
跟踪流(Follow Stream) 现支持 MPEG-2 TS PID 与内部 Packetized Elementary Streams。
DNP3(分布式网络协议 3) 现支持在会话与端点表中显示。
Lua 改进:内置的 bit 与 rex_pcre2 库现会自动加入 package.loaded,可通过 require 调用。Issue 20213
数据包列表 与 事件列表 不再支持多行显示。Issue 14424
ethers 文件 现支持 EUI-64 映射。Issue 15487
Hex Dump 导入功能 支持 2–4 字节分组(含小端模式),并识别带 0x 前缀的偏移。Issue 16193
Hex Dump 导出 现可包含时间戳前缀(Wireshark 的 “打印” 与 “导出” 对话框,以及 TShark 的 --hexdump time 选项)。Issue 17132
Lua 新增 Conversation 对象,可在脚本中访问会话数据 (sysin)。Issue 15396
新增 “编辑 › 复制 › 作为 HTML” 菜单项,可自定义复制格式与键盘快捷键。
GUI 导出对话框新增 “无重复键 JSON 输出” 选项。
导出对话框可输出 原始十六进制字节数据。
会话与端点表新增显示 精确字节与比特率 的选项,由偏好项 conv.machine_readable 控制。
-z <tap>,tree 的 TShark 统计输出格式可通过 -o statistics.output_format 控制。
配色方案可独立设置浅色 / 深色模式,与系统设置无关(需 Qt 6.8+)。Issue 19328
libxml2 现为构建必需依赖(不支持 2.15.0 版本)。
View 菜单新增 “重新解析数据包(Redissect Packets)” 选项,适用于地址解析或解密密钥更新后。
HTTP2 可选跟踪 3GPP 会话(5G SBI)。
Windows 构建文档不再需要 Java。
Linux 上捕获过滤器支持 BPF 扩展(如 inbound、outbound、ifindex)。
移除的功能与支持
不再支持 AirPcap 与 WinPcap。
不再支持 libnl v1 / v2。
CMake 选项 ENABLE_STATIC 已弃用,请改用 BUILD_SHARED_LIBS。
新增文件格式解析支持
RIFF(资源交换文件格式)
TTL 文件格式
新增协议支持
支持以下协议:Asymmetric Key Packages (AKP)、Binary HTTP、BIST TotalView-ITCH、BIST TotalView-OUCH、Bluetooth Android HCI、Bluetooth Intel HCI、BPSec COSE Context、BPSec Default SC、Commsignia Capture Protocol (C2P)、DECT NR+、DLMS/COSEM、Ephemeral Diffie-Hellman Over COSE、ILNP、LDA Neo Device Trailer、Lenbrook Service Discovery Protocol、LLC V1、Navitrol、NTS-KE、Ouster VLP-16、Private Line Emulation、RC V3、RCG、Roughtime、SBAS L5、SGP.22、SGP.32、SICK CoLA Ascii/Binary、Silabs Debug Channel、XCP、USB-PTP、VLP-16、vSomeIP Internal Protocol 等。
更新的协议支持
协议更新数量众多,此处不一一列出。
新增与更新的捕获文件支持
改进了 BLF 文件格式(包括写入功能)。
新增与更新的捕获接口支持
Windows: 改进了 etwdump 的用户体验,显示未知事件的原始字节内容。
主要 API 变更
Lua API 现支持 Libgcrypt 对称加密函数。
更多详情可查看发行公告。
官方主页:http://www.wireshark.org/
该文章最后由 阿炯 于 2025-10-13 21:03:43 更新,目前是第 4 版。