简介
在本次实验中,你将学习如何通过选择性地禁用和启用协议,来控制 Wireshark 的命令行工具 tshark
中的协议分析。你将练习使用 -r
读取数据包捕获文件,使用 --disable-protocol udp
排除 UDP 流量,并通过详细输出 (-V
) 验证结果。
这些练习将让你亲身体验协议过滤、输出比较和显示控制。你将在一个结构化的实验环境中,使用示例 capture.pcap
文件,同时学习重要的 tshark
命令。
在本次实验中,你将学习如何通过选择性地禁用和启用协议,来控制 Wireshark 的命令行工具 tshark
中的协议分析。你将练习使用 -r
读取数据包捕获文件,使用 --disable-protocol udp
排除 UDP 流量,并通过详细输出 (-V
) 验证结果。
这些练习将让你亲身体验协议过滤、输出比较和显示控制。你将在一个结构化的实验环境中,使用示例 capture.pcap
文件,同时学习重要的 tshark
命令。
在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark
以及 -r
选项来读取数据包捕获文件。这是分析预录制捕获文件中网络流量的第一步。-r
标志告诉 tshark 从文件中读取数据包,而不是捕获实时网络流量。
首先,确保你处于存储数据包捕获文件的正确工作目录中。这很重要,因为 tshark 需要知道在哪里找到该文件:
cd ~/project
实验环境提供了一个名为 capture.pcap
的示例数据包捕获文件。在继续操作之前,让我们验证它是否存在并检查其属性。ls -l
命令会显示详细的文件信息,包括大小和权限:
ls -l capture.pcap
你应该会看到类似以下的输出:
-rw-r--r-- 1 labex labex 12345 Jan 1 00:00 capture.pcap
现在,我们将使用 tshark 读取捕获文件。基本命令会简单地显示每个数据包的摘要,包括时间戳、源/目的地址和协议:
tshark -r capture.pcap
为了进行更深入的分析,我们可以使用 -V
标志来查看详细输出。这会以分层格式显示所有协议细节和数据包内容,当你需要检查特定协议字段时,这非常有用:
tshark -r capture.pcap -V
在处理大型捕获文件时,你可能希望限制输出。-c
选项允许你指定要显示的数据包数量。这里我们只显示前 5 个数据包:
tshark -r capture.pcap -c 5
在这一步中,你将学习在使用 Wireshark 的命令行工具 tshark
分析数据包捕获文件时,如何过滤掉 UDP(用户数据报协议)流量。UDP 是一种常见的传输层协议,但有时你可能想排除它,以便专注于分析其他协议,如 TCP。--disable-protocol
选项允许你在分析过程中完全忽略 UDP 数据包。
首先,确保你仍处于存储数据包捕获文件的正确工作目录中。这能确保所有命令都能正确处理该文件:
cd ~/project
要在读取捕获文件时禁用 UDP 协议分析,请使用 --disable-protocol
选项,后跟协议名称。这会告诉 tshark 跳过处理任何使用 UDP 的数据包:
tshark -r capture.pcap --disable-protocol udp
让我们将这个过滤后的输出与步骤 1 中的原始未过滤输出进行比较。head -n 10
命令仅显示输出的前 10 行,以便于比较:
tshark -r capture.pcap --disable-protocol udp | head -n 10
你应该会注意到输出中现在没有 UDP 数据包了。
为了正确验证 UDP 数据包是否被排除,我们可以在应用过滤前后对其进行计数。第一个命令统计原始文件中的所有 UDP 数据包,而第二个命令应该返回 0,因为我们已经禁用了 UDP 处理:
## Count all UDP packets in original capture
tshark -r capture.pcap -Y "udp" | wc -l
## Count UDP packets after disabling protocol (should be 0)
tshark -r capture.pcap --disable-protocol udp -Y "udp" | wc -l
你可以将协议禁用与其他显示过滤器结合使用。此示例仅显示 TCP 流量,同时在处理层面完全忽略所有 UDP 数据包:
tshark -r capture.pcap --disable-protocol udp -Y "tcp"
请记住,--disable-protocol
的工作方式与显示过滤器 (-Y
) 不同——它会阻止 tshark 处理该协议,而不仅仅是将其隐藏。
在这一步中,我们将验证 Tshark 是否正确地从分析中排除了 UDP 数据包。详细模式 (-V
) 标志能让我们查看详细的数据包信息,这有助于确认我们的 --disable-protocol udp
设置是否正常工作。这很重要,因为网络分析通常需要专注于特定协议,同时忽略其他协议。
首先,确保你处于存储数据包捕获文件的正确工作目录中:
cd ~/project
现在,同时使用禁用协议和详细模式标志运行 tshark。head -n 30
命令仅显示输出的前 30 行,便于查看:
tshark -r capture.pcap --disable-protocol udp -V | head -n 30
仔细检查输出。你应该能看到数据包的详细协议信息,但不应出现任何与 UDP 相关的内容。
为了专门检查是否存在 UDP 协议,我们将使用 grep 在输出中搜索 "UDP"。wc -l
命令对匹配的行数进行计数:
tshark -r capture.pcap --disable-protocol udp -V | grep -i "udp" | wc -l
计数为零则确认 Tshark 没有处理任何 UDP 数据包。如果你看到的数字大于零,则说明排除设置没有正常工作。
为了进行对比,让我们看看在不禁用协议的情况下,正常的详细输出是什么样的:
tshark -r capture.pcap -V | grep -i "udp" | head -n 5
如果捕获文件中存在 UDP 数据包,此命令可能会显示这些数据包。此输出与上一个命令输出的差异,展示了 --disable-protocol udp
的效果。
最后,让我们详细检查一个数据包,以验证在数据包层面上协议排除是否生效:
tshark -r capture.pcap --disable-protocol udp -V -c 1
-c 1
选项将输出限制为仅一个数据包。检查此数据包输出中的协议层 —— 在协议层次结构中,你应该看不到对 UDP 的提及。
在这一步中,你将学习在禁用 UDP 协议分析后,如何在 tshark 中恢复对它的分析。当你需要再次分析所有网络流量,包括常用于 DNS、视频流和其他实时应用的 UDP 数据包时,这一点很重要。
首先,确保你处于存储数据包捕获文件的正确工作目录中:
cd ~/project
此命令会导航到我们将处理数据包捕获文件(capture.pcap)的项目目录。
要重新启用 UDP 协议分析,请使用 --enable-protocol
选项,后跟协议名称:
tshark -r capture.pcap --enable-protocol udp
这会告诉 tshark 在读取捕获文件时再次处理 UDP 数据包。
让我们通过计数来验证现在是否正在处理 UDP 数据包:
tshark -r capture.pcap --enable-protocol udp -Y "udp" | wc -l
-Y "udp"
过滤器仅显示 UDP 数据包,wc -l
对其进行计数。如果捕获文件中存在 UDP 数据包,你现在应该能看到它们。
为了清晰地看到差异,比较启用和禁用 UDP 时的输出:
## With UDP enabled (should display UDP packets)
tshark -r capture.pcap --enable-protocol udp -Y "udp" | head -n 5
## With UDP disabled (should show empty output)
tshark -r capture.pcap --disable-protocol udp -Y "udp" | head -n 5
head -n 5
仅显示输出的前 5 行,以便快速比较。
为了进行全面验证,检查详细输出中是否出现 UDP 协议详细信息:
tshark -r capture.pcap --enable-protocol udp -V | grep -i "User Datagram Protocol" | head -n 3
-V
显示详细的数据包信息,我们通过过滤 UDP 协议头来确认它们再次被处理。
在本次实验中,你通过处理一个示例数据包捕获文件,学习了如何使用 tshark
进行协议分析。你练习了基本命令,如用于读取文件的 -r
和用于显示详细输出的 -V
,这些命令构成了 tshark 中数据包分析的基础。
本次实验还指导你学习了协议过滤技术,特别是使用 --disable-protocol udp
禁用 UDP 流量。通过比较过滤和未过滤的输出,你了解了如何在分析过程中有效地分离特定协议的流量。