Wireshark
Wireshark 是一款免费且开源的数据包分析器。它被用于网络故障排除、分析、软件和通信协议开发以及教育。
安装
安装 wireshark-qt 软件包以使用 Wireshark 图形界面,或安装 wireshark-cli 仅使用 tshark(1) 命令行界面。
termshark 是另一种可选的终端用户界面。
捕获权限
请勿以 root 身份运行 Wireshark,因为这样是不安全的。Wireshark 实现了权限分离,这意味着 Wireshark GUI(或 tshark CLI)可以作为普通用户运行,而 dumpcap 捕获实用程序则以 root 身份运行[1]。
wireshark-cli 的 安装脚本 为 /usr/bin/dumpcap 可执行文件设置了数据包捕获 能力 (capabilities)。
/usr/bin/dumpcap 只能由 root 和 wireshark 组的成员执行,因此若要以普通用户身份使用 Wireshark,您必须将您的用户添加到 wireshark 用户组 中。
一些捕获技巧
在 Wireshark 中,可以通过应用 捕获过滤器 (capture filters) 或 显示过滤器 (display filters),以多种不同的方式精确捕获您要寻找的内容。
过滤 TCP 数据包
如果您想查看所有当前的 TCP 数据包,请在“过滤器”栏中输入 tcp,或在 CLI 中输入
$ tshark -f "tcp"
过滤 UDP 数据包
如果您想查看所有当前的 UDP 数据包,请在“过滤器”栏中输入 udp,或在 CLI 中输入
$ tshark -f "udp"
过滤至特定 IP 地址的数据包
要观察围绕特定地址(例如 1.2.3.4)的流量,有几种过滤选项。请注意,IPv6 地址也可以进行类似过滤,但使用 ipv6 代替 ip。
ip.dst == 1.2.3.4显示所有发送到该地址的流量。ip.src == 1.2.3.4显示所有从该地址发送的流量。ip.addr == 1.2.3.4显示所有发送到和发送自该地址的流量。ip.addr != 1.2.3.4显示所有既非发送到也非发送自该地址的流量。
过滤至 IPv4 局域网的数据包
若只想查看局域网流量而排除互联网流量,请使用此显示过滤器来显示私有网络地址的流量。
(ip.src==10.0.0.0/8 AND ip.dst==10.0.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 或 udp.port 分别查看特定 TCP 或 UDP 端口上的所有流量。
tcp.port == 80
使用 dumpcap 进行无界面捕获
dumpcap 是 Wireshark 的一部分,可用于在没有 GUI 的情况下捕获数据包。与 tmux 结合使用,可以在分离会话中捕获数据包。
要查看所有 dumpcap 选项,请使用 -h 标志。
以下示例将提供环形缓冲区 (ringbuffer) 捕获。它会捕获 20 个每个 100MB 的 .pcap 文件,第 21 个文件将替换最旧的文件,以此类推……这允许在不耗尽磁盘空间的情况下进行连续捕获。
# dumpcap -i 1 -b filesize:100000 -b files:20 -w mycapture.pcapng
-i− 接口编号(列出自dumpcap -D)
-b filesize:− 在开始新的.pcap文件前的文件大小(单位:kB)
-b files:− 在覆盖最旧文件前要捕获的文件数量
-w− 将输出写入文件mycaptureidentifier.pcapng