在 Tshark 中导出 HTTP 对象

WiresharkBeginner
立即练习

介绍

在本次实验中,你将学习如何使用 Wireshark 的命令行工具 tshark 来分析 HTTP 流量,并从数据包捕获文件中提取传输的对象。你将练习使用关键命令,例如 -r 用于读取捕获文件,--export-objects 用于检索 HTTP 内容,如图像或文档。

这些练习将引导你完成从预捕获的文件(http.pcap)中导出 HTTP 对象到本地目录、过滤特定请求以及检查提取的文件等操作。这些实用技术对于网络流量分析和取证调查至关重要。

使用 -r http.pcap 打开 HTTP 捕获文件

在这一步中,你将学习如何使用 Wireshark 的命令行工具 tshark 打开并检查预捕获的 HTTP 流量文件。当你需要分析已保存的网络流量数据而无需实时捕获数据包时,这尤其有用。

在开始之前,让我们先了解一些基础知识:

  • .pcap 文件是存储网络数据包数据的常见格式
  • tshark 是 Wireshark 的命令行版本,允许在不使用图形用户界面(GUI)的情况下进行数据包分析
  • HTTP 流量通常显示客户端和服务器之间的 Web 请求和响应

首先,确保你位于包含示例捕获文件的正确目录中:

cd ~/project

tshark 中的 -r 选项在这里至关重要——它代表“读取”,允许你分析已保存文件中的数据包数据,而不是实时捕获流量。我们将使用一个名为 http.pcap 的示例捕获文件,其中包含典型的 HTTP Web 流量。

要打开并显示捕获文件的内容,请运行以下命令:

tshark -r http.pcap

此命令将直接在你的终端中显示数据包列表。每行代表一个网络数据包,包含几个重要字段:

  • 数据包编号:捕获中数据包的序列号
  • 时间戳:数据包被捕获的时间(以秒为单位)
  • 源 IP:数据包的来源
  • 目标 IP:数据包的去向
  • 协议:正在使用的网络协议(在我们的示例中为 HTTP)
  • 数据包长度:数据包的大小(以字节为单位)
  • 信息:关于数据包内容的简要详细信息

例如,你可能会看到如下输出,显示一个典型的 HTTP 请求和响应:

1 0.000000 192.168.1.100 → 192.168.1.1 HTTP GET /index.html HTTP/1.1
2 0.000123 192.168.1.1 → 192.168.1.100 HTTP HTTP/1.1 200 OK (text/html)

第一行显示客户端(192.168.1.100)请求一个网页,而第二行显示服务器的成功响应。这种基本视图有助于你快速了解流量流向。

当你完成数据检查后,要退出数据包视图,只需按 Ctrl+C。这将使你返回到命令提示符。

使用 --export-objects http,./objects 导出对象

在这一步中,我们将探讨如何从数据包捕获文件中提取通过 HTTP 传输的文件。当你捕获包含 HTTP 通信的网络流量时,像图像、PDF 或脚本这样的文件会作为二进制对象在 HTTP 协议内进行传输。Tshark 提供了一种便捷的方式来提取这些文件以进行分析。

首先,让我们导航到存储数据包捕获文件的项目目录。这样可以确保我们的所有命令都能正确处理相关文件:

cd ~/project

在提取文件之前,我们需要一个存储它们的地方。mkdir -p 命令会创建一个名为“objects”的目录,Tshark 会将提取的文件保存到这个目录中。-p 标志表示如果该目录已经存在,它不会显示错误信息:

mkdir -p objects

现在,我们将使用 Tshark 强大的 --export-objects 功能。这个命令会扫描数据包捕获文件,识别 HTTP 文件传输,并重建原始文件。--export-objects 后面的语法有两部分:“http”指定了协议,“./objects”是我们的输出目录:

tshark -r http.pcap --export-objects http,./objects

运行这个命令时会发生以下情况:

  1. Tshark 读取 http.pcap 文件(-r 标志)
  2. 它分析 HTTP 流量并识别文件传输
  3. 找到的每个文件都会被重建并保存到 ./objects 目录中

运行命令后,Tshark 会显示它提取的每个文件。例如,你可能会看到如下输出,显示文件已成功提取:

Exporting HTTP object 1: image1.jpg
Exporting HTTP object 2: document.pdf

这些文件现在可以在你的 objects 目录中进行进一步检查。在分析 Web 流量或在网络故障排除过程中调查文件下载时,这种技术特别有用。

列出 ./objects 目录下的文件

在这一步中,我们将查看上一步从数据包捕获文件中提取的 HTTP 对象。这些对象代表通过 HTTP 传输的文件,如图像、文档或脚本。通过列出 ./objects 目录的内容,我们可以验证哪些文件已成功导出,并为进一步分析做好准备。

首先,让我们导航到存储提取文件的项目目录。这样可以确保我们在正确的位置进行操作:

cd ~/project

为了查看所有提取的文件并获取详细信息,我们将使用带有两个有用选项的 ls 命令:

ls -lh ./objects

以下是每个选项的作用:

  • -l 以长格式列出文件,显示权限、大小和时间戳
  • -h 以人类可读的格式显示文件大小(KB、MB 而非字节)

你应该会看到类似以下的输出,显示从 HTTP 流量中提取的实际文件:

total 24K
-rw-r--r-- 1 labex labex 5.2K Jan 1 10:00 image1.jpg
-rw-r--r-- 1 labex labex 12K Jan 1 10:00 document.pdf
-rw-r--r-- 1 labex labex 1.5K Jan 1 10:00 script.js

如果你只需要知道提取了多少个文件(而不需要查看它们的详细信息),可以使用以下命令进行计数:

ls ./objects | wc -l

wc -l 部分用于统计输出中的行数,这对应于文件的数量。在我们的示例中,它将显示:

3

使用 -Y "http.request.uri" 过滤特定请求

在这一步中,我们将探讨如何使用 Wireshark 的命令行工具 tshark 从数据包捕获文件中过滤特定的 HTTP 请求。-Y 选项使我们能够应用强大的显示过滤器,只关注我们想要分析的网络流量。

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

cd ~/project

基本的命令结构是使用 tshark -r 读取数据包捕获文件,然后使用 -Y 加上我们的过滤表达式。在处理 HTTP 流量时,我们可以通过检查其 URI(统一资源标识符)路径来专门过滤 HTTP 请求数据包:

tshark -r http.pcap -Y "http.request.uri"

这个命令将处理 http.pcap 文件,并仅显示与我们的过滤器匹配的 HTTP 请求数据包。对于每个匹配的数据包,你将看到重要信息,包括:

  • 数据包编号(显示其在捕获文件中的位置)
  • 数据包捕获的时间戳
  • 源 IP 地址和目标 IP 地址
  • 完整的 HTTP 请求 URI 路径

以下是典型输出的样子:

10 1.234567 192.168.1.100 → 203.0.113.5 HTTP GET /images/logo.png HTTP/1.1
15 2.345678 192.168.1.100 → 203.0.113.5 HTTP GET /api/data.json HTTP/1.1

我们可以通过查找特定的文件类型或路径来使过滤器更加具体。例如,要仅查找对 PNG 图像文件的请求,我们可以修改过滤器以检查 URI 中是否包含“.png”:

tshark -r http.pcap -Y 'http.request.uri contains ".png"'

这种技术在分析 Web 流量以识别正在请求的特定资源,或对特定类型的 Web 请求进行故障排除时特别有用。显示过滤器语法使我们能够精确控制在分析中看到的数据包。

总结

在这个实验中,你学习了如何使用 Wireshark 的命令行工具 tshark 分析 HTTP 流量并提取传输的对象。通过处理 http.pcap 文件,你练习了使用 -r 选项查看数据包详细信息,并使用 --export-objects 将图像和文档等 HTTP 对象导出到指定目录。

你还探索了使用 -Y 选项过滤特定的 HTTP 请求,以便根据 URI 隔离流量。这些技术为通过 tshark 的命令行界面进行高效的网络分析和有针对性的文件提取提供了必要的技能。