开源网络封包分析软件-Wireshark
2010-07-30 14:29:23 阿炯

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库进行网络截包。

成立基金会
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.0
Wireshark 4.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 中做到这一点。
更多详情可查看此处


官方主页:http://www.wireshark.org/
该文章最后由 阿炯 于 2023-07-17 20:17:27 更新,目前是第 4 版。