在 Tshark 中禁用协议

WiresharkWiresharkBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何通过选择性地禁用和启用协议,来控制 Wireshark 的命令行工具 tshark 中的协议分析。你将练习使用 -r 读取数据包捕获文件,使用 --disable-protocol udp 排除 UDP 流量,并通过详细输出 (-V) 验证结果。

这些练习将让你亲身体验协议过滤、输出比较和显示控制。你将在一个结构化的实验环境中,使用示例 capture.pcap 文件,同时学习重要的 tshark 命令。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/protocol_dissection("Protocol Dissection") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/display_filters -.-> lab-548922{{"在 Tshark 中禁用协议"}} wireshark/protocol_dissection -.-> lab-548922{{"在 Tshark 中禁用协议"}} wireshark/packet_analysis -.-> lab-548922{{"在 Tshark 中禁用协议"}} wireshark/commandline_usage -.-> lab-548922{{"在 Tshark 中禁用协议"}} end

使用 -r capture.pcap 读取文件

在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark 以及 -r 选项来读取数据包捕获文件。这是分析预录制捕获文件中网络流量的第一步。-r 标志告诉 tshark 从文件中读取数据包,而不是捕获实时网络流量。

  1. 首先,确保你处于存储数据包捕获文件的正确工作目录中。这很重要,因为 tshark 需要知道在哪里找到该文件:

    cd ~/project
  2. 实验环境提供了一个名为 capture.pcap 的示例数据包捕获文件。在继续操作之前,让我们验证它是否存在并检查其属性。ls -l 命令会显示详细的文件信息,包括大小和权限:

    ls -l capture.pcap

    你应该会看到类似以下的输出:

    -rw-r--r-- 1 labex labex 12345 Jan 1 00:00 capture.pcap
  3. 现在,我们将使用 tshark 读取捕获文件。基本命令会简单地显示每个数据包的摘要,包括时间戳、源/目的地址和协议:

    tshark -r capture.pcap
  4. 为了进行更深入的分析,我们可以使用 -V 标志来查看详细输出。这会以分层格式显示所有协议细节和数据包内容,当你需要检查特定协议字段时,这非常有用:

    tshark -r capture.pcap -V
  5. 在处理大型捕获文件时,你可能希望限制输出。-c 选项允许你指定要显示的数据包数量。这里我们只显示前 5 个数据包:

    tshark -r capture.pcap -c 5

使用 --disable-protocol udp 禁用 UDP

在这一步中,你将学习在使用 Wireshark 的命令行工具 tshark 分析数据包捕获文件时,如何过滤掉 UDP(用户数据报协议)流量。UDP 是一种常见的传输层协议,但有时你可能想排除它,以便专注于分析其他协议,如 TCP。--disable-protocol 选项允许你在分析过程中完全忽略 UDP 数据包。

  1. 首先,确保你仍处于存储数据包捕获文件的正确工作目录中。这能确保所有命令都能正确处理该文件:

    cd ~/project
  2. 要在读取捕获文件时禁用 UDP 协议分析,请使用 --disable-protocol 选项,后跟协议名称。这会告诉 tshark 跳过处理任何使用 UDP 的数据包:

    tshark -r capture.pcap --disable-protocol udp
  3. 让我们将这个过滤后的输出与步骤 1 中的原始未过滤输出进行比较。head -n 10 命令仅显示输出的前 10 行,以便于比较:

    tshark -r capture.pcap --disable-protocol udp | head -n 10

    你应该会注意到输出中现在没有 UDP 数据包了。

  4. 为了正确验证 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
  5. 你可以将协议禁用与其他显示过滤器结合使用。此示例仅显示 TCP 流量,同时在处理层面完全忽略所有 UDP 数据包:

    tshark -r capture.pcap --disable-protocol udp -Y "tcp"

    请记住,--disable-protocol 的工作方式与显示过滤器 (-Y) 不同——它会阻止 tshark 处理该协议,而不仅仅是将其隐藏。

使用 -V 验证排除效果

在这一步中,我们将验证 Tshark 是否正确地从分析中排除了 UDP 数据包。详细模式 (-V) 标志能让我们查看详细的数据包信息,这有助于确认我们的 --disable-protocol udp 设置是否正常工作。这很重要,因为网络分析通常需要专注于特定协议,同时忽略其他协议。

  1. 首先,确保你处于存储数据包捕获文件的正确工作目录中:

    cd ~/project
  2. 现在,同时使用禁用协议和详细模式标志运行 tshark。head -n 30 命令仅显示输出的前 30 行,便于查看:

    tshark -r capture.pcap --disable-protocol udp -V | head -n 30

    仔细检查输出。你应该能看到数据包的详细协议信息,但不应出现任何与 UDP 相关的内容。

  3. 为了专门检查是否存在 UDP 协议,我们将使用 grep 在输出中搜索 "UDP"。wc -l 命令对匹配的行数进行计数:

    tshark -r capture.pcap --disable-protocol udp -V | grep -i "udp" | wc -l

    计数为零则确认 Tshark 没有处理任何 UDP 数据包。如果你看到的数字大于零,则说明排除设置没有正常工作。

  4. 为了进行对比,让我们看看在不禁用协议的情况下,正常的详细输出是什么样的:

    tshark -r capture.pcap -V | grep -i "udp" | head -n 5

    如果捕获文件中存在 UDP 数据包,此命令可能会显示这些数据包。此输出与上一个命令输出的差异,展示了 --disable-protocol udp 的效果。

  5. 最后,让我们详细检查一个数据包,以验证在数据包层面上协议排除是否生效:

    tshark -r capture.pcap --disable-protocol udp -V -c 1

    -c 1 选项将输出限制为仅一个数据包。检查此数据包输出中的协议层 —— 在协议层次结构中,你应该看不到对 UDP 的提及。

使用 --enable-protocol udp 重新启用 UDP

在这一步中,你将学习在禁用 UDP 协议分析后,如何在 tshark 中恢复对它的分析。当你需要再次分析所有网络流量,包括常用于 DNS、视频流和其他实时应用的 UDP 数据包时,这一点很重要。

  1. 首先,确保你处于存储数据包捕获文件的正确工作目录中:

    cd ~/project

    此命令会导航到我们将处理数据包捕获文件(capture.pcap)的项目目录。

  2. 要重新启用 UDP 协议分析,请使用 --enable-protocol 选项,后跟协议名称:

    tshark -r capture.pcap --enable-protocol udp

    这会告诉 tshark 在读取捕获文件时再次处理 UDP 数据包。

  3. 让我们通过计数来验证现在是否正在处理 UDP 数据包:

    tshark -r capture.pcap --enable-protocol udp -Y "udp" | wc -l

    -Y "udp" 过滤器仅显示 UDP 数据包,wc -l 对其进行计数。如果捕获文件中存在 UDP 数据包,你现在应该能看到它们。

  4. 为了清晰地看到差异,比较启用和禁用 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 行,以便快速比较。

  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 流量。通过比较过滤和未过滤的输出,你了解了如何在分析过程中有效地分离特定协议的流量。