在 Tshark 中读取数据包数据

WiresharkWiresharkBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 Wireshark 的命令行工具 tshark 来分析网络数据包捕获文件。在处理示例 PCAP 文件时,你将练习使用一些基本命令,如用于读取捕获文件的 -r、用于详细输出的 -V 以及用于限制数据包数量的 -c

通过实践练习,你将检查数据包头部,识别包括 IP 地址和协议在内的关键网络信息,并解读不同的输出格式。这个实验将为你提供使用 tshark 核心功能进行有效网络流量分析的实践经验。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/packet_analysis("Packet Analysis") wireshark/WiresharkGroup -.-> wireshark/commandline_usage("Command Line Usage") subgraph Lab Skills wireshark/display_filters -.-> lab-548937{{"在 Tshark 中读取数据包数据"}} wireshark/packet_analysis -.-> lab-548937{{"在 Tshark 中读取数据包数据"}} wireshark/commandline_usage -.-> lab-548937{{"在 Tshark 中读取数据包数据"}} end

使用 -r capture.pcap 打开文件

在这一步中,我们将探索如何使用 Wireshark 强大的命令行工具 tshark 来分析预先录制的网络流量。在进行网络分析时,我们经常需要检查之前捕获的数据,而不是捕获实时流量。-r 标志(代表 "read",读取)允许我们通过指定要分析的数据包捕获文件来做到这一点。

在我们开始之前,让我们确保我们在正确的位置工作。在基于终端的工作中,必须位于存储文件的正确目录中:

cd ~/project

LabEx 环境预装了 tshark,它是 Wireshark 的命令行版本。为了确认它可用并检查我们正在使用的版本(在使用任何工具时都是一个好习惯),请运行:

tshark --version

你应该会看到详细的版本信息出现,确认 tshark 已正确安装并可以使用。

对于本次演示,我们将使用一个示例网络捕获文件。它已经下载到 /home/labex/project/capture.pcap

现在我们准备好检查捕获的网络流量了。读取和显示捕获文件内容的基本命令是:

tshark -r capture.pcap

此命令会处理该文件并显示所有捕获数据包的摘要视图。输出中的每一行代表一个网络数据包,并包含几个重要的信息,可以帮助我们了解网络活动:

  • 数据包编号(Packet number):每个数据包的顺序标识符
  • 时间戳(Timestamp):捕获数据包的时间(相对于捕获开始时间)
  • 源 IP(Source IP):数据包的来源
  • 目标 IP(Destination IP):数据包的去向
  • 协议(Protocol):正在使用的网络协议(TCP、UDP 等)
  • 长度(Length):数据包的大小,以字节为单位
  • 信息(Info):数据包用途或内容的简要描述

以下是典型的输出示例,显示了正在建立的 TCP 连接:

1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 66 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0

这个初始视图为我们提供了捕获文件中包含的网络通信的高级概述,我们将在后续步骤中在此基础上进行构建。

使用默认输出显示数据包摘要

在这一步中,我们将探索如何读取和理解 tshark 默认显示的基本数据包摘要。这是你分析网络流量的起点,它以结构化的格式展示每个数据包的重要信息。

在开始之前,让我们确保处于存储捕获文件的正确工作目录:

cd ~/project

tshark 的默认输出以列的形式呈现网络流量,每一列都能告诉我们有关通信的重要信息:

  1. 数据包编号:捕获中每个数据包的顺序标识符
  2. 时间戳:相对于第一个数据包,该数据包被捕获的时间
  3. 源地址:数据包的来源(IP 地址)
  4. 目标地址:数据包的去向(IP 地址)
  5. 协议:正在使用的网络协议(TCP、UDP 等)
  6. 长度:数据包的大小(以字节为单位)
  7. 信息:特定于该协议的额外详细信息

让我们查看前 5 个数据包,以实际了解这些信息:

tshark -r capture.pcap -c 5

示例输出:

    1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
    2 0.000123 192.168.1.2 → 192.168.1.1 TCP 66 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
    3 0.000145 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    4 0.000567 192.168.1.1 → 192.168.1.2 TLSv1 583 Client Hello
    5 0.000789 192.168.1.2 → 192.168.1.1 TCP 54 49234 → 443 [ACK] Seq=1 Ack=530 Win=65535 Len=0

为了更全面地了解网络捕获中发生的情况,我们可以统计每种协议类型的数据包数量。这有助于识别在网络流量中最活跃的协议:

tshark -r capture.pcap -qz io,phs

此命令会生成一个协议层次结构表,显示捕获文件中不同协议的分布情况,这在分析复杂的网络流量模式时特别有用。

使用 -V 显示详细字段

在这一步中,我们将探索如何使用 Wireshark 的 -V(详细模式)标志查看全面的数据包详细信息。当你需要检查网络数据包中的所有协议层及其字段时,这特别有用。

在开始之前,让我们确保处于存储数据包捕获文件的正确工作目录:

cd ~/project

-V 标志会展示每个数据包的完整结构,显示从物理帧到应用层数据的所有协议层。这种分层视图有助于你理解不同协议在网络通信中是如何协同工作的。让我们查看捕获文件中的第一个数据包:

tshark -r capture.pcap -V -c 1

输出将显示每个协议层的详细信息。以下是你可能看到的示例(为清晰起见进行了简化):

Frame 1: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
    Encapsulation type: Ethernet (1)
    Arrival Time: Jun  8, 2023 10:15:32.000000000 UTC
    [Time shift for this packet: 0.000000000 seconds]
    Epoch Time: 1686219332.000000000 seconds
    [Time delta from previous captured frame: 0.000000000 seconds]
    [Time delta from previous displayed frame: 0.000000000 seconds]
    [Time since reference or first frame: 0.000000000 seconds]
    Frame Number: 1
    Frame Length: 66 bytes (528 bits)
    Capture Length: 66 bytes (528 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
    [Protocols in frame: eth:ethertype:ip:tcp]
Ethernet II, Src: 00:11:22:33:44:55, Dst: aa:bb:cc:dd:ee:ff
    Destination: aa:bb:cc:dd:ee:ff
    Source: 00:11:22:33:44:55
    Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.1.2
    Version: 4
    Header length: 20 bytes
    ...

如果你只想查看包含特定协议(如 TCP)的数据包的详细信息,可以将 -V-Y 显示过滤器结合使用。这有助于将你的分析集中在特定的网络流量上:

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

使用 -c 100 统计数据包

在这一步中,我们将探索如何使用 -c 标志来控制 Tshark 中的数据包显示。当处理大型捕获文件,而你只需要分析一部分数据包样本时,这一功能特别有用。

首先,让我们切换到存储数据包捕获文件的工作目录。这样可以确保所有命令都能正确处理该文件:

cd ~/project

-c 标志(“count”的缩写)用于限制 Tshark 处理和显示的数据包数量。例如,要查看捕获文件中的前 100 个数据包,可以使用以下命令:

tshark -r capture.pcap -c 100

在分析特定类型的流量时,我们可以将 -c 标志与 -Y 显示过滤器结合使用。以下命令将显示前 100 个 HTTP 数据包:

tshark -r capture.pcap -Y "http" -c 100

如果你需要知道文件中数据包的总数(而不仅仅是前 100 个),可以使用以下管道命令来统计输出的行数:

tshark -r capture.pcap | wc -l

若要更详细地了解捕获文件中各协议的分布情况,以下命令将提供一个协议层次结构摘要,显示每种协议类型的数据包数量:

tshark -r capture.pcap -qz io,phs

总结

在本次实验中,你学习了如何使用 Wireshark 的命令行工具 tshark 来分析网络数据包捕获文件。练习内容包括使用 -r 标志打开 PCAP 文件、通过 --version 验证安装情况,以及查看默认输出字段,其中包含数据包元数据和协议信息。

你还练习了解读结构化的数据包摘要格式,并使用 -c 标志控制输出量。这些技能为你使用保存的捕获文件进行高效的网络流量分析和协议调查奠定了坚实的基础。