wireshark/wireshark
GitHub: wireshark/wireshark
跨平台网络协议分析器,提供图形化和命令行界面,用于捕获、分析和排查网络流量问题。
Stars: 9035 | Forks: 2100
## 基本信息
Wireshark 是一个网络流量分析器,或称“嗅探器”,适用于 Linux、macOS、\*BSD 和其他 Unix 及类 Unix 操作系统,以及 Windows。
它使用 Qt 图形用户界面库,并使用 libpcap 和 npcap 作为数据包捕获和过滤库。
Wireshark 发行版还附带了 TShark,这是一个面向行的嗅探器(类似于 Sun 的 snoop 或 tcpdump),它使用与 Wireshark 相同的解析、捕获文件读取和写入以及数据包过滤代码;还附带了 editcap,这是一个用于读取捕获文件并写入该捕获文件中的数据包的程序,可能采用不同的捕获文件格式,并且可能会从捕获中删除某些数据包。
Wireshark 的官方主页是 https://www.wireshark.org。
最新的发行版可以在子目录 https://www.wireshark.org/download 中找到。
## 安装
Wireshark 项目定期在以下平台上构建和测试:
官方安装包适用于 Microsoft Windows 和 macOS。
它作为标准包或附加包适用于许多流行的操作系统和 Linux 发行版,包括 Debian、Ubuntu、Fedora、CentOS、RHEL、Arch、Gentoo、openSUSE、FreeBSD、DragonFly BSD、NetBSD 和 OpenBSD。
此外,它还可以通过许多第三方打包系统获得,例如 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 程序设置为以 root 身份运行(set-UID to root),或者如果您的系统倾向于这样做(BSD 衍生系统,以及支持 DLPI 的系统如 Solaris 和 HP-UX,通常属于此类),您需要有权访问 `/dev` 下的相应条目。虽然将 Wireshark 和 TShark 可执行文件设置为 setuid root 或以 root 身份运行它们很诱人,但请不要这样做。捕获过程已在 dumpcap 中隔离;这个简单的程序不太可能包含安全漏洞,因此以 root 身份运行更安全。
请查阅手册页以获取每个命令行选项和界面功能的说明。
## 多种文件类型
Wireshark 可以读取多种不同文件类型的数据包。有关支持的文件格式列表,请参阅 Wireshark 手册页或 Wireshark 用户指南。
如果在编译 Wireshark 时所需的压缩库可用,Wireshark 可以透明地读取这些文件的压缩版本。
目前支持的压缩格式包括:
GZIP 和 LZ4(使用独立块时,这是默认设置)支持快速随机查找,这在大文件上提供了更好的 GUI 性能。
任何这些压缩格式都可以在编译时通过向 cmake 传递相应的选项来禁用,即 `cmake -DENABLE_ZLIB=OFF`、`cmake -DENABLE_LZ4=OFF` 或 `cmake -DENABLE_ZSTD=OFF`。
虽然 Wireshark 可以读取 AIX iptrace 文件,但关于 AIX 的 iptrace 数据包跟踪命令的文档很少。`iptrace` 命令启动一个守护进程,您必须终止该进程才能停止跟踪。通过实验表明,向该 iptrace 守护进程发送 HUP 信号会导致正常关闭,并且完整的数据包会被写入跟踪文件。如果最后保存了部分数据包,Wireshark 在读取该文件时会发出警告,但您将能够读取所有其他数据包。如果发生这种情况,请通过 wireshark-dev@wireshark.org 通知 Wireshark 开发人员;如果跟踪文件很小且包含非敏感数据,请务必发送该跟踪文件的副本给我们。
对 Lucent/Ascend 产品的支持仅限于 MAX 和 Pipeline 系列产品生成的调试跟踪输出。Wireshark 可以读取 `wandsession`、`wandisplay`、`wannext` 和 `wdd` 命令的输出。
Wireshark 还可以读取东芝 “Compact Router” 系列 ISDN 路由器(TR-600 和 TR-650)的转储跟踪输出。您可以 telnet 到路由器并使用 `snoop dump` 启动转储会话。
Wireshark 还可以读取 CoSine L2 调试输出。要获取 L2 调试输出,首先进入诊断模式,然后在 layer-2 类别下使用 `create-pkt-log-profile` 和 `apply-pkt-lozg-profile` 命令。有关如何使用这些命令的更多详细信息,您应该通过 `layer-2 create ?` 或 `layer-2 apply ?` 查看帮助命令。
要将 Lucent/Ascend、Toshiba 和 CoSine 跟踪与 Wireshark 一起使用,您必须将跟踪输出捕获到磁盘上的文件中。跟踪发生在路由器内部,路由器无法为您将跟踪保存到文件中。
在 Unix 下执行此操作的一种简单方法是运行 `telnet | tee `。或者,如果您的系统安装了 “script” 命令,您可以将 shell 会话(包括 telnet)保存到文件中。例如,要记录到名为 tracefile.out 的文件:
```
$ script tracefile.out
Script started on
$ telnet router
..... do your trace, then exit from the router's telnet session.
$ exit
Script done on
```
## 名称解析
Wireshark 在解码 IPv4 和 IPv6 数据包时将尝试使用反向名称解析功能。
如果您想在使用 Wireshark 时关闭名称解析,请使用 `-n` 选项启动 Wireshark 以关闭所有名称解析(包括将 MAC 地址和 TCP/UDP/SMTP 端口号解析为名称),或者使用 `-N mt` 选项关闭所有网络层地址(IPv4、IPv6、IPX)的名称解析。
您可以通过使用“编辑”菜单中的“首选项”项打开“首选项”对话框,选择“名称解析”,关闭相应的名称解析选项,然后单击“确定”,将其设为默认设置。
## SNMP
Wireshark 可以对 SNMP 数据包进行一些基本解码;它还可以使用 libsmi 库通过读取 MIB 文件并使用这些文件中的信息以更友好的方式显示 OID 和变量绑定值来进行更复杂的解码。CMake 将自动确定您的系统上是否有 libsmi 库。如果您有 libsmi 库但_不_希望 Wireshark 使用它,您可以使用 `-DENABLE_SMI=OFF` 选项运行 cmake。
## 如何报告错误
Wireshark 正在不断开发中,因此您在使用时可能会遇到错误。请在 https://gitlab.com/wireshark/wireshark/-/issues 报告错误。
请确保在错误报告中输入:
如果错误是由特定的跟踪文件产生的,请务必将跟踪文件连同您的错误描述一起附加到错误报告中。如果跟踪文件包含敏感信息(例如密码),请不要发送。
如果 Wireshark 因“段错误”、“总线错误”、“中止”或产生 UNIX 核心转储文件的其他错误而意外退出,您安装了调试器,您可以极大地帮助开发人员。可以使用调试器(在此示例中为 ‘gdb’)、wireshark 二进制文件和生成的 core 文件获取堆栈跟踪。以下是如何使用 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 的大部分内容受 “GPL version 2 or later” 许可证涵盖。
某些文件由与 GPLv2 兼容的不同许可证涵盖。
作为一个显著的例外,Wireshark 源代码附带分发的一些实用程序由其他本身与 GPLv2 不直接兼容的许可证涵盖。这没关系,因为只有工具本身是以这种方式许可的,工具的输出不被视为衍生作品,因此可以安全地许可供 Wireshark 使用。这些工具的不完整选择包括:
Wireshark 的部分内容可以作为库构建和分发。这些部分仍然受 GPL 涵盖,而不受较宽松通用公共许可证或任何其他许可证涵盖。
如果您将 Wireshark 的全部或部分集成到您自己的应用程序中,并且您选择发布或发布它,则组合作品必须根据 GPLv2 的条款发布。
## 免责声明
与本产品相关的没有任何明示或暗示的保证。使用风险自负。
Gerald Combs
Gilbert Ramirez
Guy Harris
标签:BSD, Docker‑Compose, GUI应用, libpcap, Linux, macOS, Process Hacker, Qt, rizin, TShark, Unix, Web界面, Windows, Windows工具, Wireshark, 内核开发, 内核驱动, 协议解析, 句柄查看, 安全仪表盘, 安全工具, 客户端加密, 客户端加密, 客户端加密, 客户端加密, 带宽管理, 开源软件, 情报分析, 抓包工具, 攻击面映射, 故障排查, 数字足迹, 数据包嗅探, 数据挖掘, 服务管理, 流量分析, 流量捕获, 用户界面自定义, 系统优化, 系统分析, 网络分析, 网络协议, 网络取证, 网络安全, 网络拓扑, 网络监控, 网络诊断, 网络调试, 自动化, 资源监视器, 足迹分析, 跨平台, 逆向工具, 防御绕过, 隐私保护