翻译状态:本文是 Wireshark 的翻译。上次翻译日期:2020-11-28。如果英文版本有所更改,则您可以帮助同步翻译。
Wireshark 是一款免费开源的包分析器。可用于网络排错、网络分析、软件和通讯协议开发以及教学等。
安装
Wireshark 软件包分成了 CLI 版本和依赖 CLI 版本的前端界面.
注意: Wireshark 3.0 已经移除了 GTK 界面
以普通用户身份抓包
以 root 身份运行 Wireshark 是不安全的。Wireshark 已经实现了权限分离,因此 Wireshark 的图形界面(或 tshark CLI)能够以普通用户身份运行,而数据包捕获工具使用 root 身份运行[1]。
安装脚本会为 /usr/bin/dumpcap 设置数据包捕获能力。
/usr/bin/dumpcap 仅能被 root 用户或 wireshark 群组用户执行,因此需要将用户加入 wireshark 用户组以使普通用户能够正常运行 Wireshark (参见 Users and groups (简体中文)#用户组管理)。
一些抓包技巧
注意: capture filters 语法请参考
过滤 TCP 包
只查看所有的 TCP 数据包,在 "Filter" 拦输入 tcp,或者在终端中输入:
$ tshark -f "tcp"
过滤 UDP 包
只想查看所有的 UDP 数据包,在 "Filter" 拦输入 udp,或者在终端输入:
$ tshark -f "udp"
查看指定 IP 地址的数据包
将 1.2.3.4 替换为要查看的 IP 地址。
只想查看发到某个特定地址的数据包,输入 ip.dst == 1.2.3.4。
只想查看从某个特定地址发出的数据包,输入 ip.src == 1.2.3.4。
要查看某个特定地址的所有数据包,输入 ip.addr == 1.2.3.4。
排除特定 IP 地址的数据包
将 1.2.3.4 替换为要排除的 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