介绍
在本实验中,你将学习如何使用 Wireshark 过滤网络流量,这是网络分析中不可或缺的工具。你将练习分析预先捕获的数据包文件,应用显示过滤器来隔离特定流量,并导出过滤后的结果以供进一步检查。这些技能将帮助你识别网络模式、排除连接问题并深入理解网络通信。
开始使用 Tshark
在深入研究图形界面之前,你将先从 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 进行基础过滤
抓包文件可能包含数千个数据包,这使得查找特定信息变得困难。显示过滤器用于缩小视图范围,仅显示符合特定条件的数据包。在这一步中,你将学习使用 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注意使用
==进行精确匹配。过滤器可以使用逻辑运算符(如
&&,表示「与」)进行组合。要查找来自源 IP192.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你将在目录中看到新生成的、体积更小的抓包文件。
使用 Wireshark 图形界面探索流量
虽然 tshark 非常适合自动化,但 Wireshark 图形用户界面(GUI)为深度数据包分析提供了丰富的交互式环境。在这一步中,你将启动 Wireshark 图形界面并探索其主要组件。
从终端启动 Wireshark 应用程序。重要提示:请确保你使用的是桌面界面(Desktop Interface),而不是纯终端界面,因为 Wireshark 是一个图形界面应用程序,需要图形环境才能正常运行。 末尾的
&符号使应用程序在后台运行,从而释放终端以执行其他命令。wireshark &注意: 如果你尝试在没有桌面环境的纯终端中运行此命令,Wireshark 将无法启动。对于图形界面应用程序,请始终使用桌面界面。

Wireshark 主窗口将出现。由于我们正在分析现有文件,因此无需选择网络接口。相反,请打开
capture.pcap文件。- 前往菜单栏,点击「文件」(File)->「打开...」(Open...)。
- 在文件对话框中,导航到
/home/labex/project并选择capture.pcap。 - 点击「打开」(Open)按钮。
主窗口现在将填充文件中的数据包。花点时间熟悉三个主要面板:

- 数据包列表面板(顶部): 捕获中所有数据包的列表,包含数据包编号、时间、源、目的、协议和其他摘要信息的列。
- 数据包详情面板(中间): 列表面板中当前选中数据包的协议层详细、可展开视图。你可以展开每一层(例如 Ethernet、IP、TCP)来查看其字段。
- 数据包字节面板(底部): 选中数据包的原始数据,以十六进制和 ASCII 格式显示。
点击数据包列表面板中的不同数据包,观察数据包详情和数据包字节面板中的信息如何相应更新。这种交互式探索是 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过滤器。要仅将显示的(过滤后的)数据包保存到新的抓包文件中:
- 前往「文件」(File)->「导出特定数据包...」(Export Specified Packets...)。
- 在对话框中,确保在「所有数据包」(All Packets)下选中了「已显示」(Displayed)单选按钮。
- 将文件命名为
http_capture.pcap并将其保存在/home/labex/project目录中。

你还可以将数据包摘要导出为文本或 CSV 文件。要导出为 CSV:
- 前往「文件」(File)->「导出数据包解析结果」(Export Packet Dissections)->「为 CSV...」(As CSV...)。
- 确保为「所有数据包」选择了「已显示」(Displayed)。
- 将文件命名为
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 文件,以便进行报告和分析。这些核心技能是进行任何网络分析或故障排除任务的基础。


