介绍
在本实验中,你将学习如何使用 Wireshark 过滤网络流量,这是网络分析中不可或缺的工具。你将练习分析预先捕获的数据包文件,应用显示过滤器来隔离特定流量,并导出过滤后的结果以供进一步检查。这些技能将帮助你识别网络模式、排除连接问题并深入理解网络通信。
在本实验中,你将学习如何使用 Wireshark 过滤网络流量,这是网络分析中不可或缺的工具。你将练习分析预先捕获的数据包文件,应用显示过滤器来隔离特定流量,并导出过滤后的结果以供进一步检查。这些技能将帮助你识别网络模式、排除连接问题并深入理解网络通信。
在深入研究图形界面之前,你将先从 tshark 开始,它是 Wireshark 的命令行版本。对于快速分析和脚本编写来说,它是一个功能强大的工具。在这一步中,你将验证安装情况,并对提供的抓包文件进行基础检查。
首先,通过检查版本来验证 tshark 是否已正确安装。
tshark --version
你应该会看到显示 Wireshark 和 tshark 版本的输出,类似于:
TShark (Wireshark) x.x.x (Git vx.x.x packaged as x.x.x-1)
...
一个名为 capture.pcap 的示例抓包文件已放置在你的项目目录中。使用 ls 命令确认其存在。
ls -lh capture.pcap
输出将显示文件详情,包括其大小和名称。
-rw-rw-r-- 1 labex labex 9.1M Oct 24 2015 capture.pcap
要获取抓包文件的高级摘要,请使用 Wireshark 附带的 capinfos 工具。
capinfos capture.pcap
此命令提供有关文件的元数据,例如数据包数量、捕获时长和平均数据包大小。
File name: capture.pcap
File type: Wireshark/tcpdump/... - pcap
File encapsulation: Ethernet
File timestamp precision: microseconds (6)
Packet size limit: file hdr: 65535 bytes
Number of packets: 14 k
File size: 9444 kB
Data size: 9216 kB
Capture duration: 298.505344 seconds
First packet time: 2011-01-26 02:52:22.484409
Last packet time: 2011-01-26 02:57:20.989753
Data byte rate: 30 kBps
Data bit rate: 247 kbps
Average packet size: 646.28 bytes
Average packet rate: 47 packets/s
SHA256: 77d06d3f33f1a95fb9f2610f20ead8ce978449077d6ba22d4945b85bd48f75d1
RIPEMD160: 68e950b2e438c7be011a46646ddfc8105b65b339
SHA1: 06e502dca8dbfe8e6a9cabc61f722d94756f6db9
Strict time order: True
Number of interfaces in file: 1
Interface #0 info:
Encapsulation = Ethernet (1 - ether)
Capture length = 65535
Time precision = microseconds (6)
Time ticks per second = 1000000
Number of stat entries = 0
Number of packets = 14261
最后,使用 tshark 读取文件中的前五个数据包。-r 标志指定输入文件,-c 限制数据包数量。
tshark -r capture.pcap -c 5
这将为前五个数据包中的每一个显示一行摘要,让你快速了解流量情况。
1 0.000000 192.168.3.131 → 72.14.213.138 HTTP 997 GET /complete/search?client=chrome&hl=en-US&q=cr HTTP/1.1
2 0.029841 72.14.213.138 → 192.168.3.131 HTTP 440 HTTP/1.1 200 OK (text/javascript)
3 0.223883 192.168.3.131 → 72.14.213.102 TCP 66 55950 → 80 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=4 SACK_PERM=1
4 0.229423 192.168.3.131 → 72.14.213.138 TCP 54 57011 → 80 [ACK] Seq=944 Ack=387 Win=16192 Len=0
5 0.242649 72.14.213.102 → 192.168.3.131 TCP 66 80 → 55950 [SYN, ACK] Seq=0 Ack=1 Win=5720 Len=0 MSS=1430 SACK_PERM=1 WS=64
抓包文件可能包含数千个数据包,这使得查找特定信息变得困难。显示过滤器用于缩小视图范围,仅显示符合特定条件的数据包。在这一步中,你将学习使用 tshark 应用基础过滤器。
显示过滤器通过 -Y(大写 Y)标志应用。要仅查看 TCP 数据包,请使用过滤器 tcp。让我们查看文件中的前五个 TCP 数据包。
tshark -r capture.pcap -Y "tcp" -c 5
输出现在将仅显示协议为 TCP 的数据包。
你还可以根据 IP 地址进行过滤。要查看所有源自源 IP 地址 192.168.3.131 的数据包,请使用 ip.src 过滤器。
tshark -r capture.pcap -Y "ip.src == 192.168.3.131" -c 5
注意使用 == 进行精确匹配。
过滤器可以使用逻辑运算符(如 &&,表示「与」)进行组合。要查找来自源 IP 192.168.3.131 的 TCP 数据包,请结合前两个过滤器。
tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131"
你可以将过滤后的输出保存到新的抓包文件中,以便稍后分析。-w 标志指定输出文件。让我们将过滤后的 TCP 数据包保存到名为 filtered_tcp.pcap 的文件中。
tshark -r capture.pcap -Y "tcp && ip.src == 192.168.3.131" -w filtered_tcp.pcap
验证新文件是否已创建。
ls -lh filtered_tcp.pcap
你将在目录中看到新生成的、体积更小的抓包文件。
虽然 tshark 非常适合自动化,但 Wireshark 图形用户界面(GUI)为深度数据包分析提供了丰富的交互式环境。在这一步中,你将启动 Wireshark 图形界面并探索其主要组件。
从终端启动 Wireshark 应用程序。重要提示:请确保你使用的是桌面界面(Desktop Interface),而不是纯终端界面,因为 Wireshark 是一个图形界面应用程序,需要图形环境才能正常运行。 末尾的 & 符号使应用程序在后台运行,从而释放终端以执行其他命令。
wireshark &
注意: 如果你尝试在没有桌面环境的纯终端中运行此命令,Wireshark 将无法启动。对于图形界面应用程序,请始终使用桌面界面。

Wireshark 主窗口将出现。由于我们正在分析现有文件,因此无需选择网络接口。相反,请打开 capture.pcap 文件。
/home/labex/project 并选择 capture.pcap。主窗口现在将填充文件中的数据包。花点时间熟悉三个主要面板:

点击数据包列表面板中的不同数据包,观察数据包详情和数据包字节面板中的信息如何相应更新。这种交互式探索是 Wireshark 最强大的功能之一。
你在 tshark 中学习的显示过滤器语法在 Wireshark 图形界面中完全相同。图形界面提供即时的视觉反馈,使构建和测试复杂过滤器变得容易。
找到 Wireshark 窗口顶部的显示过滤器栏。它是一个长文本输入框,通常带有「应用显示过滤器...」(Apply a display filter...)作为占位符文本。
让我们过滤 HTTP 流量。在过滤器栏中输入 http,然后按 Enter 键或点击「应用」按钮(栏右侧的箭头)。
http

数据包列表面板将立即更新,仅显示 HTTP 数据包。注意过滤器栏变为绿色,表示语法有效。如果你输入了无效的过滤器,它将变为红色。
现在,让我们查找所有 DNS 流量。清除之前的过滤器,在过滤器栏中输入 dns,然后按 Enter。
dns
你现在将看到捕获中的所有域名系统(DNS)查询和响应。
你可以像使用 tshark 一样组合过滤器。要查找涉及 IP 地址 192.168.3.131(作为源或目的)的 HTTP 流量,请将 ip.addr 过滤器与 http 过滤器结合使用。
http && ip.addr == 192.168.3.131

这种强大的组合允许你锁定特定的对话。尝试其他过滤器,例如 tcp.port == 80(针对标准 HTTP 端口的流量)或 udp(针对 UDP 流量)。要清除过滤器并再次查看所有数据包,请点击过滤器栏中的 X 按钮。
在过滤流量以隔离感兴趣的事件后,你通常需要导出结果以便生成报告、共享或在其他工具中进行进一步分析。Wireshark 和 tshark 提供了多种导出数据的方法。
首先,在 Wireshark 图形界面中,像上一步一样应用 http 过滤器。
要仅将显示的(过滤后的)数据包保存到新的抓包文件中:
http_capture.pcap 并将其保存在 /home/labex/project 目录中。
你还可以将数据包摘要导出为文本或 CSV 文件。要导出为 CSV:
http_packets.csv 并保存在项目目录中。你可以在命令行上使用 tshark 执行相同的导出操作。这对于自动化非常有用。以下命令读取原始的 capture.pcap,过滤 http,并将特定字段导出到 CSV 文件。
tshark -r capture.pcap -Y "http" -T fields -e frame.number -e ip.src -e ip.dst -e http.request.method -e http.host -E header=y -E separator=, > http_export_cli.csv
-T fields:指定输出格式。-e ...:指定要导出的字段(列)。-E header=y:添加标题行。-E separator=,:使用逗号作为分隔符。验证导出的文件是否已创建。
ls -lh http_*
你应该会在目录中看到 http_capture.pcap、http_packets.csv 和 http_export_cli.csv 文件。
在本实验中,你学习了使用 Wireshark 及其命令行对应工具 tshark 过滤网络流量的基础知识。你首先使用 tshark 和 capinfos 检查了抓包文件。接着,你练习了应用显示过滤器来隔离特定的协议和 IP 地址,先是在 tshark 中操作,然后在交互式的 Wireshark 图形界面中进行。最后,你学习了如何将过滤后的结果导出为新的抓包文件和易于阅读的 CSV 文件,以便进行报告和分析。这些核心技能是进行任何网络分析或故障排除任务的基础。