Wireshark

来自 ArchWiki

Wireshark 是一个自由开源的数据包分析器。它用于网络故障排除、分析、软件和通信协议开发以及教育。

安装

安装 wireshark-qt 软件包以使用 Wireshark GUI,或 wireshark-cli 软件包仅使用 tshark(1) CLI。

注意: 弃用的 GTK 界面已在 Wireshark 3.0 中移除。

termshark 是一个备选的终端 UI。

捕获权限

不要以 root 身份运行 Wireshark;这不安全。Wireshark 实现了权限分离,这意味着 Wireshark GUI(或 tshark CLI)可以作为普通用户运行,而 dumpcap 捕获实用程序以 root 身份运行[1]

wireshark-cli 安装脚本/usr/bin/dumpcap 可执行文件上设置数据包捕获能力

/usr/bin/dumpcap 只能由 root 用户和 wireshark 组的成员执行,因此要以普通用户身份使用 Wireshark,您必须将您的用户添加到 wireshark 用户组

一些捕获技巧

通过应用捕获过滤器显示过滤器,有很多不同的方法可以在 Wireshark 中准确捕获您正在寻找的内容。

注意: 要了解捕获过滤器语法,请参阅 pcap-filter(7)。对于显示过滤器,请参阅 wireshark-filter(4)

过滤 TCP 数据包

如果您想查看当前所有的 TCP 数据包,请在过滤器栏中键入 tcp,或在 CLI 中输入

$ tshark -f "tcp"

过滤 UDP 数据包

如果您想查看当前所有的 UDP 数据包,请在过滤器栏中键入 udp,或在 CLI 中输入

$ tshark -f "udp"

过滤到特定 IP 地址的数据包

  • 如果您想查看所有发往特定地址的流量,请输入显示过滤器 ip.dst == 1.2.3.4,将 1.2.3.4 替换为传出流量发送到的 IP 地址。
  • 如果您想查看特定地址的所有传入流量,请输入显示过滤器 ip.src == 1.2.3.4,将 1.2.3.4 替换为传入流量发送到的 IP 地址。
  • 如果您想查看特定地址的所有传入和传出流量,请输入显示过滤器 ip.addr == 1.2.3.4,将 1.2.3.4 替换为相关的 IP 地址。

排除来自特定 IP 地址的数据包

ip.addr != 1.2.3.4

过滤到局域网的数据包

要仅查看局域网流量而不查看互联网流量,请运行

(ip.src==10.0.0/8 AND ip.dst==10.0.0/8) OR (ip.src==172.16.0.0/12 AND ip.dst==172.16.0.0/12) OR (ip.src==192.168.0.0/16 and ip.dst==192.168.0.0/16)

这将过滤任何私有网络空间内的流量。

按端口过滤数据包

查看两个或多个端口上的所有流量

tcp.port==80||tcp.port==3306
tcp.port==80||tcp.port==3306||tcp.port==443

使用 dumpcap 进行无头捕获

dumpcap 是 Wireshark 的一部分,可用于在没有 GUI 的情况下捕获数据包。与 tmux 结合使用将允许在分离的会话中捕获数据包。

要查看所有 dumpcap 选项,请使用 -h 标志。

以下示例将提供环形缓冲区捕获。它捕获二十个每个 100MB 的 .pcap 文件,用第二十一个文件替换最旧的文件,依此类推……这允许连续捕获而不会耗尽磁盘空间。

# dumpcap -i 1 -b filesize:100000 -b files:20 -w mycapture.pcapng
  • -i − 接口号(从 dumpcap -D 列出)
  • -b filesize: − 启动新的 .pcap 文件之前的文件大小(以 kB 为单位)
  • -b files: − 在覆盖最旧文件之前要捕获的文件数
  • -w − 将输出写入文件 mycaptureidentifier.pcapng