在 Tshark 中压缩捕获文件

WiresharkWiresharkBeginner
立即练习

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

简介

在本次实验中,你将学习使用 Wireshark 的命令行工具 tshark 来捕获、压缩和分析网络流量。你将练习用于选择接口、保存压缩文件和读取数据包的基本命令,同时验证数据的完整性。

这些练习涵盖了列出接口、捕获实时流量以及检查压缩文件等内容。通过完成本次实验,你将掌握以压缩格式高效管理数据包捕获的技能,在不影响数据质量的前提下优化存储空间。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") 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/interface -.-> lab-548918{{"在 Tshark 中压缩捕获文件"}} wireshark/packet_capture -.-> lab-548918{{"在 Tshark 中压缩捕获文件"}} wireshark/display_filters -.-> lab-548918{{"在 Tshark 中压缩捕获文件"}} wireshark/protocol_dissection -.-> lab-548918{{"在 Tshark 中压缩捕获文件"}} wireshark/packet_analysis -.-> lab-548918{{"在 Tshark 中压缩捕获文件"}} wireshark/commandline_usage -.-> lab-548918{{"在 Tshark 中压缩捕获文件"}} end

使用 -i eth1 捕获流量

在这一步中,你将学习如何使用 Wireshark 的命令行版本 tshark 来捕获实时网络流量。-i 选项允许你指定要监控的网络接口,当你的机器有多个网络连接时,这一点至关重要。

  1. 首先,让我们准备好工作空间。在你的 LabEx 虚拟机中打开终端,并导航到我们将存储捕获文件的项目目录:

    cd ~/project
  2. 在捕获之前,我们需要识别可用的网络接口。运行以下命令来列出它们:

    tshark -D

    你将看到列出网络接口的输出,通常包括:

    1. eth1 (你的主要以太网接口)
    2. any (所有接口)
    3. lo (用于内部通信的回环接口)
  3. 要开始在你的主要网络接口(通常是 eth1)上捕获数据包,请使用以下命令:

    tshark -i eth1

    这将在你的终端中滚动显示实时网络流量,每行代表一个包含源/目的地址和协议信息的数据包。

  4. 要停止持续捕获(否则它将无限运行),请按 Ctrl+C。然后,终端将显示捕获统计信息,包括捕获的数据包总数。

  5. 为了练习,让我们精确地捕获 5 个数据包。-c 标志用于限制捕获的数据包数量:

    tshark -i eth1 -c 5

    此命令在捕获 5 个数据包后会自动停止,为你提供一个易于处理的样本进行检查。

使用 -w capture.pcap.gz 以 Gzip 格式保存

在这一步中,我们将探讨如何使用 Tshark 直接以压缩格式保存网络流量捕获文件,从而高效地存储这些数据。压缩有助于减少存储空间,同时保留所有原始数据包数据。当我们在 Tshark 中使用 .gz 文件扩展名时,-w 选项会自动处理压缩。

  1. 首先,让我们导航到存储捕获文件的工作目录。这样可以确保所有文件都整齐地存放在一处:

    cd ~/project
  2. 现在,我们将捕获实时网络流量并以压缩格式保存。以下命令一次性完成了三件重要的事情:

    • 指定要监控的网络接口 (eth1)
    • 自动压缩输出文件(注意 .gz 扩展名)
    • 为了演示目的,将捕获的数据包数量限制为 10 个
    tshark -i eth1 -w capture.pcap.gz -c 10

    当命令运行时,你会看到 Tshark 对每个捕获的数据包进行计数,直到达到 10 个。

  3. 捕获完成后,让我们验证压缩文件是否正确创建。-lh 选项以人类可读的格式显示文件大小:

    ls -lh capture.pcap.gz

    输出显示了压缩文件的详细信息,包括其大小(比未压缩的捕获文件小得多):

    -rw-r--r-- 1 labex labex 1.2K Mar 1 10:00 capture.pcap.gz
  4. 最后,我们可以直接从压缩文件中读取数据,而无需手动解压缩。此命令仅显示前 3 个数据包,以确认捕获操作成功:

    tshark -r capture.pcap.gz -c 3

    Tshark 会自动处理解压缩,向你显示的数据包详细信息就如同使用的是未压缩文件一样。

使用 -r capture.pcap.gz 读取压缩文件

在这一步中,你将处理之前创建的压缩数据包捕获文件 (capture.pcap.gz)。我们将使用 Wireshark 的命令行工具 tshark 来读取和分析这个文件,而无需先手动解压缩它。当处理大型捕获文件时,这尤其有用,因为如果不压缩,这些文件会占用大量磁盘空间。

  1. 首先,让我们确认我们处于正确的位置,并且压缩的捕获文件存在。以下命令将导航到项目目录并列出该文件的详细信息:

    cd ~/project
    ls -l capture.pcap.gz

    你应该会看到列出的压缩文件及其大小和权限。这确认我们可以继续进行操作。

  2. 读取压缩捕获文件的基本命令会显示数据包摘要。每行代表一个网络数据包,包含时间戳、源/目的地址和协议等重要信息:

    tshark -r capture.pcap.gz

    注意,tshark 会自动处理 gzip 压缩,我们不需要单独的解压缩步骤。

  3. 处理大型文件时,限制输出通常很有帮助。此命令仅显示前 5 个数据包,便于快速验证:

    tshark -r capture.pcap.gz -c 5

    -c 标志代表“count”(数量),用于控制要显示的数据包数量。

  4. 要更深入地查看数据包内容,我们使用 -V 开启详细模式。此示例显示前 3 个数据包的完整详细信息,包括所有协议头和有效负载数据:

    tshark -r capture.pcap.gz -V -c 3

    当你需要检查特定数据包字段或排查网络问题时,详细输出非常有用。

  5. 为了进行有针对性的分析,我们可以按协议过滤数据包。此命令显示捕获文件中找到的前 2 个 HTTP 数据包:

    tshark -r capture.pcap.gz -Y "http" -c 2

    -Y 标志应用显示过滤器(类似于 Wireshark 的主过滤器语法)。

  6. 最后,要获取整个捕获文件的统计信息而不显示单个数据包,我们使用以下计数命令:

    tshark -r capture.pcap.gz -q -z io,stat,0

    -q 使输出安静(抑制数据包显示),而 -z 提供各种统计选项。这可以快速概述捕获文件的大小和内容。

使用 -V 进行详细验证

在这一步中,你将使用 -V 标志探索 Wireshark 强大的详细模式。此模式会展示数据包完整的协议解析信息,让你清楚地了解网络通信各层的具体情况。当你需要查看数据包内容,而不仅仅是基本头部信息时,这种模式特别有用。

  1. 首先,让我们导航到工作目录并确认压缩的捕获文件是否存在。cd 命令用于切换目录,而 ls -l 用于显示文件的详细信息:

    cd ~/project
    ls -l capture.pcap.gz
  2. 现在,我们将使用 -V 来查看全面的协议详细信息。-c 3 标志将输出限制为前 3 个数据包,便于分析:

    tshark -r capture.pcap.gz -V -c 3

    每个数据包的输出将逐层显示信息,包括以太网、IP 和传输层头部,以及任何应用层数据。

  3. 当关注 HTTP 流量时,我们将 -V 与显示过滤器 (-Y) 结合使用。这将仅显示包含完整协议详细信息的 HTTP 数据包:

    tshark -r capture.pcap.gz -Y "http" -V -c 2
  4. 对于 TCP 分析,此命令将显示一个包含所有协议字段的 TCP 数据包。你将看到序列号、标志位、窗口大小和其他 TCP 特定信息:

    tshark -r capture.pcap.gz -V -Y "tcp" -c 1
  5. 在详细模式下,DNS 查询会显示出有趣的细节。此命令将显示一个 DNS 数据包,包括查询类型、类别和完整的查询部分:

    tshark -r capture.pcap.gz -V -Y "dns" -c 1
  6. 最后,我们可以检查校验和错误的数据包。这有助于识别潜在的网络损坏或捕获问题:

    tshark -r capture.pcap.gz -V -Y "tcp.checksum_bad==1" -c 1

总结

在本次实验中,你学习了如何使用 Wireshark 的 tshark 命令行工具高效地捕获、压缩和分析网络流量。你练习了使用 -i eth1eth1 接口上捕获实时流量,并使用 -w capture.pcap.gz 直接将文件保存为 gzip 压缩格式。

这些练习展示了如何通过将压缩与分析相结合来有效管理数据包捕获。你验证了使用 -r capture.pcap.gz 无需手动解压缩即可读取压缩文件的功能,同时掌握了 -i-w-r-c 等重要标志的使用。