wireshark:基于 Qt 与 libpcap/npcap 的网络流量分析工具项目

用户可用于捕获和分析网络流量,支持多种操作系统。核心功能包括图形化界面分析、命令行工具TShark、多格式捕获文件读写及压缩文件处理,支持SNMP解码和MIB文件解析。【此简介由AI生成】

分支1Tags0
文件最后提交记录最后更新时间
1 年前
3 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
5 年前
1 年前
3 年前
1 年前
1 年前
1 年前
1 年前
5 年前
1 年前
1 年前
1 年前
7 年前
1 年前
3 年前
1 年前
4 年前
2 年前
1 年前
1 年前
2 年前
3 年前
1 年前
1 年前
4 年前
2 年前
8 年前
3 年前
2 年前
3 年前
1 年前
3 年前
2 年前
4 年前
1 年前
1 年前
1 年前
1 年前
4 年前
2 年前
5 年前
4 年前
4 年前
1 年前
1 年前
3 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
2 年前
2 年前
2 年前
4 年前
1 年前
1 年前
7 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
1 年前
2 年前
1 年前
1 年前
4 年前
1 年前
1 年前
1 年前
6 年前
8 年前
1 年前
2 年前

基本信息

Wireshark 是一款网络流量分析器,也称为“嗅探器”,适用于 Linux、macOS、*BSD 及其他类 Unix 操作系统,同时也支持 Windows。它使用 Qt(一种图形用户界面库)以及 libpcap 和 npcap(用于数据包捕获与过滤的库)。

Wireshark 发行版还包含 TShark 和 editcap。TShark 是一款基于命令行的嗅探器(类似于 Sun 的 snoop 或 tcpdump),它与 Wireshark 共享相同的数据包解析、捕获文件读写及过滤代码。editcap 则是一个用于读取捕获文件并将其中的数据包(可能会移除部分数据包或转换为不同的捕获文件格式)写入新文件的程序。

Wireshark 的官方主页是 https://www.wireshark.org

最新的发行版可在子目录 https://www.wireshark.org/download 中找到。

安装

Wireshark 项目会定期在以下平台上进行构建和测试:

  • Linux(Ubuntu)
  • Microsoft Windows
  • macOS / {Mac} OS X

官方安装包适用于 Microsoft Windows 和 macOS。

对于许多主流操作系统和 Linux 发行版(包括 Debian、Ubuntu、Fedora、CentOS、RHEL、Arch、Gentoo、openSUSE、FreeBSD、DragonFly BSD、NetBSD 和 OpenBSD),Wireshark 可作为标准包或附加包提供。

此外,它还可通过多种第三方打包系统获取,例如 pkgsrc、OpenCSW、Homebrew 和 MacPorts。

它在其他类 Unix 系统上也应能顺利运行,通常不会有太多问题。

在某些情况下,当前版本的 Wireshark 可能不支持您的操作系统。例如,Windows XP 仅支持 Wireshark 1.10 及更早版本。在另一些情况下,系统提供的 Wireshark 标准包可能版本过旧,例如 Solaris 和 HP-UX 系统。

构建 Wireshark 需要 Python 3。构建文档(包括手册页)需要 AsciiDoctor。生成部分源代码则需要 Perl 和 flex。

因此,在缺少这些工具的系统上,您必须安装 Python 3、AsciiDoctor 和 GNU "flex"(原生的 "lex" 无法正常工作)。您可能还需要安装 Perl。

完整的安装说明可在 INSTALL 文件以及位于 https://www.wireshark.org/docs/wsdg_html_chunked/ 的《开发者指南》中找到。

有关特定操作系统的安装说明,另请参阅相应的 README.OS 文件。

使用方法

若要从网络捕获数据包,您需要将 dumpcap 程序设置为 set-UID root,或者如果您的系统支持(例如 BSD 衍生系统以及支持 DLPI 的 Solaris 和 HP-UX 等系统通常属于此类),则需要有权访问 /dev 下的相应条目。尽管将 Wireshark 和 TShark 可执行文件设置为 setuid root 或以 root 身份运行它们可能很诱人,但请不要这样做。捕获过程已独立到 dumpcap 中;这个简单的程序包含安全漏洞的可能性更小,因此以 root 身份运行更安全。

有关每个命令行选项和界面功能的说明,请查阅手册页。

多种文件类型

Wireshark 可以读取多种不同文件类型的数据包。有关支持的文件格式列表,请参见 Wireshark 手册页或 Wireshark 用户指南。

如果在编译 Wireshark 时可用所需的压缩库,Wireshark 可以透明地读取任何这些文件的压缩版本。当前支持的压缩格式有:

  • GZIP
  • LZ4
  • ZSTD

GZIP 和 LZ4(当使用独立块时,这是默认设置)支持快速随机查找,这在处理大文件时能提供更好的 GUI 性能。通过向 cmake 传递相应选项,可以在编译时禁用这些压缩格式中的任何一种,例如 cmake -DENABLE_ZLIB=OFFcmake -DENABLE_LZ4=OFFcmake -DENABLE_ZSTD=OFF

尽管 Wireshark 可以读取 AIX iptrace 文件,但关于 AIX 的 iptrace 数据包跟踪命令的文档却很少。iptrace 命令会启动一个守护进程,您必须终止该进程才能停止跟踪。通过实验发现,向该 iptrace 守护进程发送 HUP 信号会导致其正常关闭,并将完整的数据包写入跟踪文件。如果在末尾保存了部分数据包,Wireshark 在读取该文件时会发出警告,但您仍能够读取所有其他数据包。如果发生这种情况,请通过 wireshark-dev@wireshark.org 告知 Wireshark 开发人员;如果该跟踪文件较小且包含非敏感数据,请务必向我们发送该文件的副本。

对 Lucent/Ascend 产品的支持仅限于 MAX 和 Pipline 系列产品生成的调试跟踪输出。Wireshark 可以读取 wandsessionwandisplaywannextwdd 命令的输出。

Wireshark 还可以读取东芝“Compact Router”系列 ISDN 路由器(TR-600 和 TR-650)的转储跟踪输出。您可以通过 telnet 连接到路由器,并使用 snoop dump 启动转储会话。

Wireshark 也可以读取 CoSine L2 调试输出。要获取 L2 调试输出,请先进入诊断模式,然后在 layer-2 类别下使用 create-pkt-log-profileapply-pkt-lozg-profile 命令。有关如何使用这些命令的更多详细信息,您应通过 layer-2 create ?layer-2 apply ? 查看帮助命令。

要将 Lucent/Ascend、东芝和 CoSine 的跟踪文件用于 Wireshark,您必须将跟踪输出捕获到磁盘上的文件中。跟踪是在路由器内部进行的,路由器无法为您将跟踪保存到文件中。在 Unix 系统下,一种简单的方法是运行 telnet <ascend> | tee <outfile>。或者,如果您的系统安装了“script”命令,您可以将 shell 会话(包括 telnet)保存到文件中。例如,要记录到名为 tracefile.out 的文件:

$ script tracefile.out
Script started on <date/time>
$ telnet router
..... do your trace, then exit from the router's telnet session.
$ exit
Script done on <date/time>

名称解析

Wireshark 在解码 IPv4 和 IPv6 数据包时,会尝试使用反向名称解析功能。

如果您在使用 Wireshark 时想要关闭名称解析,可以在启动 Wireshark 时使用 -n 选项来关闭所有名称解析(包括将 MAC 地址以及 TCP/UDP/SMTP 端口号解析为名称),或者使用 -N mt 选项来关闭所有网络层地址(IPv4、IPv6、IPX)的名称解析。

您可以将其设为默认设置,方法是通过“编辑”菜单中的“首选项”项打开首选项对话框,选择“名称解析”,关闭相应的名称解析选项,然后点击“确定”。

SNMP

Wireshark 可以对 SNMP 数据包进行一些基本解码;它还可以使用 libsmi 库通过读取 MIB 文件并利用这些文件中的信息,以更友好的方式显示 OID 和变量绑定值,从而进行更复杂的解码。CMake 会自动检测您的系统上是否安装了 libsmi 库。如果您的系统上有 libsmi 库,但不希望 Wireshark 使用它,可以在运行 cmake 时使用 -DENABLE_SMI=OFF 选项。

如何报告错误

Wireshark 处于持续开发中,因此您在使用时可能会遇到错误。请在 https://gitlab.com/wireshark/wireshark/-/issues 报告错误。请确保在错误报告中包含以下内容:

  1. 来自“帮助”菜单中“关于 Wireshark”项的完整构建信息,或者对于 Wireshark 错误,提供 wireshark -v 的输出;对于 TShark 错误,提供 tshark -v 的输出;

  2. 如果错误发生在 Linux 上,请说明您使用的 Linux 发行版及其版本;

  3. 如果您是从命令行运行 Wireshark 或 TShark,请提供调用 Wireshark 或 TShark 时使用的命令,以及导致错误出现的操作步骤。

如果错误是由特定的跟踪文件导致的,请务必在错误描述中附上该跟踪文件。如果跟踪文件包含敏感信息(例如密码),则请不要发送。

如果 Wireshark 因“段错误”、“总线错误”、“中止”或其他导致生成 UNIX 核心转储文件的错误而崩溃,并且您安装了调试器,那么您可以为开发人员提供很大帮助。您可以使用调试器(本示例中为 'gdb')、wireshark 二进制文件以及生成的核心文件来获取堆栈跟踪。以下是如何使用 gdb 命令 'backtrace' 来执行此操作的示例。

$ gdb wireshark core
(gdb) backtrace
..... prints the stack trace
(gdb) quit
$

在部分平台(例如 BSD 系统)上,核心转储文件的名称可能是“wireshark.core”而非“core”。如果您是使用 TShark 而非 Wireshark 时产生了核心转储,请将“tshark”作为调试器的第一个参数;此时核心转储文件可能命名为“tshark.core”。

许可协议

Wireshark 依据 GNU GPLv2 进行分发。完整的许可文本详见 COPYING 文件。如有疑问,完整文本为法律约束部分。这些说明仅为帮助不熟悉 GPLv2 的用户理解。

对 Wireshark 的使用没有限制。但其以源代码或二进制形式进行分发时存在限制。

Wireshark 的大部分组件均采用“GPL 版本 2 或更高版本”许可。部分文件采用与 GPLv2 兼容的其他许可。

需要特别说明的例外情况是,Wireshark 源代码中附带的部分工具采用的其他许可本身并不直接与 GPLv2 兼容。这是允许的,因为只有工具本身以此类许可授权,工具的输出不被视为衍生作品,因此可以安全地授权给 Wireshark 使用。此类工具的不完全列表包括:

  • pidl 工具(tools/pidl)采用 GPLv3+ 许可。

Wireshark 的部分组件可以构建并分发为库。这些组件仍受 GPL 保护,而非 Lesser General Public License(LGPL)或其他任何许可。

如果您将 Wireshark 的全部或部分集成到您自己的应用程序中,并且选择发布该应用程序,则合并后的作品必须依据 GPLv2 的条款进行发布。

免责声明

本产品不提供任何明示或暗示的担保。使用本产品的风险由您自行承担。

Gerald Combs gerald@wireshark.org

Gilbert Ramirez gram@alumni.rice.edu

Guy Harris gharris@sonic.net

项目介绍

用户可用于捕获和分析网络流量,支持多种操作系统。核心功能包括图形化界面分析、命令行工具TShark、多格式捕获文件读写及压缩文件处理,支持SNMP解码和MIB文件解析。【此简介由AI生成】

定制我的领域