vy3*_*y32 2 cross-platform pcap pcap-ng
我有一个在 Mac 上创建的 PCAP 文件,mergecap可以使用 Apple 的 libpcap 在 Mac 上解析该文件,但无法在 Linux 系统上解析。组合文件有一个额外的 16 字节标头,其中包含pcap 文件中常见的介绍0a 0d 0d 0a 78 00 00 00。4d 3c 2b 1a这是一个十六进制转储:
0000000: 0a0d 0d0a 7800 0000 4d3c 2b1a 0100 0000 ....x...M<+.....
0000010: ffff ffff ffff ffff 0100 4700 4669 6c65 ..........G.File
0000020: 2063 7265 6174 6564 2062 7920 6d65 7267 created by merg
0000030: 696e 673a 200a 4669 6c65 313a 2037 2e70 ing: .File1: 7.p
0000040: 6361 7020 0a46 696c 6532 3a20 362e 7063 cap .File2: 6.pc
0000050: 6170 200a 4669 6c65 333a 2034 2e70 6361 ap .File3: 4.pca
0000060: 7020 0a00 0400 0800 6d65 7267 6563 6170 p ......mergecap
Run Code Online (Sandbox Code Playgroud)
有人知道这是什么吗?或者如何在 Linux 系统上使用 libpcap 读取它?
小智 6
我有一个 PCAP 文件
不,你不知道。您有一个pcap-ng 文件。
可以在 Mac 上使用 Apple 的 libpcap 进行解析
libpcap 1.1.0 及更高版本还可以读取一些 pcap-ng 文件(pcap API 只允许文件具有一种链路层标头类型、一种快照长度和一种字节顺序,因此只有所有部分都有的 pcap-ng 文件相同的字节顺序,所有接口都支持相同的链路层标头类型和快照长度),并且 OS X Snow Leopard 及更高版本具有基于 1.1.x 的 libpcap,因此它们可以读取这些文件。
(OS X Mountain Lion 及更高版本对 libpcap 进行了调整,以允许它也写入-Ppcap-ng 文件;该标志使 tcpdump 写出 pcap-ng 文件,并在一些传出数据包上附加文本注释,指示该进程的进程 ID 和进程名称。发送它们的进程 - pcap-ng 允许将文本注释附加到数据包中。)
但在Linux系统上无法解析
您的 Linux 系统可能有较旧的 libpcap 版本。(注意:不要对Debian 和 Debian 衍生版本调用 libpcap 包“libpcap0.8”感到困惑 - 它们不再使用 libpcap 0.8。)
组合文件有一个额外的 16 字节标头,其中包含 0a 0d 0d 0a 78 00 00 00
pcap-ng 文件是一系列“块”,以 4 字节块类型和 4 字节长度开头,两者均按照写入它们的主机的字节顺序排列。
它们被分成“部分”,每个部分都以“部分标题块”(SHB)开头;SHB 的块类型是 0x0a0d0d0a,它与字节顺序无关(这样您就不必知道读取 SHB 的字节顺序)并包含回车符和换行符(这样如果文件是,对于例如,通过一个工具在 UN*X 系统和 Windows 系统之间传输,该工具认为它正在传输文本文件并且“有帮助地”尝试修复行结尾,SHB 幻数将被损坏,并且很明显该文件是通过以这种方式传输而损坏;将其视为相当于冲击指示器)。
0x78000000 是长度;接下来是“字节顺序魔术”字段,即 0x1A2B3C4D(与 pcap 文件的 0xA1B2C3D4 魔术数字不同),其用途与 pcap 魔术数字相同,即:
(不,在查找 pcap 幻数之前,您不需要知道长度;找到幻数后,您可以检查长度以确保它至少为 28,并且如果它小于或等于28,您拒绝该块,因为该块无效。)
有人知道这是什么吗?
一个(小端)pcap-ng 文件。
或者如何在 Linux 系统上使用 libpcap 读取它?
要么在具有较新版本的 libpcap 的 Linux 系统上阅读它(这可能意味着您正在使用的任何发行版的较新版本,或者可能只是意味着进行更新,如果这将为您提供 1.1.0 或更高版本的 libpcap) ,使用 Wireshark 或 TShark(它们有自己的用于读取捕获文件的库,支持本机 pcap 和 pcap-ng 格式以及许多其他格式)读取它,或者从 tcpdump.org 下载较新版本的libpcap,构建它,安装它,然后构建使用该版本的 libpcap 而不是系统附带的版本来读取 pcap-ng 文件所需的任何其他工具。
较新版本的 Wireshark 默认写入 pcap-ng 文件,包括在 mergecap 等工具中;你可以让他们使用标志参数 .pcap 来编写 pcap 文件-F pcap。
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |