使用 Tshark 显示过滤器

WiresharkBeginner
立即练习

介绍

在本实验中,你将学习如何利用 Wireshark 命令行工具 tshark 中的显示过滤器,以高效地分析网络流量。你将练习读取数据包捕获文件 (capture.pcap) 并应用过滤器,以隔离特定流量模式,例如来自特定 IP 地址或 TCP 端口的数据包。

通过实践练习,你将掌握关键的 tshark 命令,包括用于文件读取的 -r 和用于过滤器应用的 -Y。本实验强调比较过滤和未过滤的结果,以增强你的网络故障排除技能。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 92%。获得了学习者 100% 的好评率。

验证 Tshark 安装和示例文件

在本初始步骤中,你将确认 tshark 命令行工具已安装,并且示例数据包捕获文件已存在于你的工作目录中。这确保了你的环境已准备好进行后续的网络分析任务。

  1. 首先,通过检查其版本来验证 tshark 的安装。打开一个终端并运行:

    tshark -v

    你应该看到类似于此的输出,表明 tshark 已安装:

    TShark (Wireshark) X.Y.Z (Git vX.Y.Z-gXXXXXXXXXXXX)
    ...

    版本号 (X.Y.Z) 可能会有所不同,但输出的存在证实了 tshark 已准备就绪。

  2. 接下来,导航到包含示例数据包捕获文件项目的目录。这是本实验的默认工作目录:

    cd ~/project
  3. 验证示例数据包捕获文件 capture.pcap 是否存在于该目录中。此文件将用于所有后续的分析步骤:

    ls -l capture.pcap

    你应该看到类似于:

    -rw-r--r-- 1 labex labex 123456 Jan 1 00:00 capture.pcap

    此输出确认了文件的权限、所有者、大小和修改日期,表明文件存在且可访问。

使用 -r 读取数据包捕获文件

本步骤将介绍如何使用 tshark 读取和显示数据包捕获文件的内容。-r 选项对于指定输入文件至关重要,它允许 tshark 分析预先记录的网络流量,而不是捕获实时数据。

  1. 确保你位于 ~/project 目录,因为我们的 capture.pcap 文件位于此处:

    cd ~/project
  2. 现在,使用 tshark 读取并显示 capture.pcap 文件中的所有数据包:

    tshark -r capture.pcap

    -r 标志指示 tshark 从指定的文件读取。此命令将每个数据包的摘要直接输出到你的终端。

  3. 输出将显示每个数据包的基本信息,以列的形式显示。你将看到诸如数据包编号、时间戳、源和目标 IP 地址、协议以及简短描述等详细信息。例如:

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    2   0.000123 10.0.0.2 → 10.0.2.15 TCP 74 49234 → 80 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0
    ...

    每一行代表一个网络数据包,提供对流量的快速概述。

  4. 由于 capture.pcap 包含许多数据包,输出将持续滚动。要停止显示并返回到你的命令提示符,请按 Ctrl+C。此快捷键安全地终止 tshark 进程。

使用源 IP 地址筛选 (ip.src==10.0.2.15)

本步骤将介绍如何应用显示过滤器,只显示来自特定源 IP 地址的数据包。tshark 中的 -Y 选项允许你使用 Wireshark 的强大显示过滤器语法,将分析范围缩小到相关的流量。

  1. 确保你位于 ~/project 目录:

    cd ~/project
  2. 现在,筛选 capture.pcap 文件,只显示源 IP 地址为 10.0.2.15 的数据包。过滤器 ip.src==10.0.2.15 指定了此条件:

    tshark -r capture.pcap -Y "ip.src==10.0.2.15"

    -Y 标志应用引号中的显示过滤器。

  3. 此命令将仅输出与过滤器条件匹配的数据包。你会注意到,每个显示的数据包的源 IP 地址都是 10.0.2.15

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    3   0.000456 10.0.2.15 → 10.0.0.2 TCP 66 80 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    ...

    将此输出与前一步未过滤的结果进行比较。这演示了显示过滤器如何帮助你专注于大型捕获文件中特定流量模式。

  4. 完成检查过滤后的输出后,请按 Ctrl+C 停止显示并返回到你的命令提示符。

使用组合过滤器 (ip.src==10.0.2.15 且 tcp.port==80)

本步骤将介绍如何使用逻辑运算符组合多个显示过滤器,以精炼你的网络流量分析。通过使用 and 运算符,你可以指定数据包必须满足所有定义的条件才能显示,从而进行高度目标化的调查。

  1. 确保你位于 ~/project 目录:

    cd ~/project
  2. 现在,让我们筛选同时满足两个条件的数据包:它们必须来自 IP 地址 10.0.2.15 且使用 TCP 端口 80(通常用于 HTTP 流量)。and 运算符确保数据包必须同时满足这两个条件才能包含在输出中:

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80"

    此命令将仅显示同时满足源 IP 和 TCP 端口条件的数据包。

  3. 输出将仅显示满足这两个条件的数据包。例如,你可能会看到来自指定 IP 地址的 HTTP 请求或响应:

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    5   0.001234 10.0.2.15 → 10.0.0.2 HTTP 145 GET /index.html HTTP/1.1
    ...

    观察如何使用组合过滤器提供比使用单个过滤器更精确的结果。此技术对于隔离特定对话或应用程序流量至关重要。

  4. 完成输出检查后,请按 Ctrl+C 返回命令提示符。

验证输出 (详细数据包视图)

本步骤将介绍如何使用 tshark-P 选项显示过滤后数据包的详细信息。当你想在将数据包写入文件的同时查看数据包摘要,或者与其他抑制输出的选项一起使用时,-P 标志尤其有用。

  1. 确保你位于 ~/project 目录:

    cd ~/project
  2. 首先,让我们看看在写入文件时使用 -P 和不使用 -P 的区别。运行以下命令,不使用 -P

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -w filtered.pcap

    请注意,屏幕上没有显示任何数据包信息,因为数据包正在写入文件。

  3. 现在运行相同的命令,使用 -P 选项:

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -w filtered.pcap -P

    使用 -P 标志,你会看到数据包摘要显示在屏幕上,同时数据包也在写入文件:

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    2   0.000123 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    ...
  4. 另一个有用的场景是将 -P-q(静默模式)结合使用。首先,尝试仅使用 -q

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -q

    这会抑制所有数据包输出,并在最后只显示一个计数。

  5. 现在将 -q-P 结合使用:

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -q -P

    -P 选项会覆盖 -q 的抑制,并再次显示数据包摘要。

当你需要在同时将过滤后的结果保存到文件的同时监控数据包处理过程,或者你想覆盖其他选项(例如 -q)的输出抑制时,-P 选项最为有用。

总结

在本实验中,你学习了如何有效地使用 Wireshark 的命令行工具 tshark 应用显示过滤器进行网络流量分析。你练习了使用 -r 读取 PCAP 文件,使用 -Y 过滤 IP 地址和端口,以及使用逻辑运算符(例如 and)组合条件。

练习演示了如何隔离特定的流量模式,并使用 -P 验证结果,使你掌握了针对性数据包分析的必要技能。这些技术能够通过专注于相关的网络数据来有效地进行故障排除。