首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在Mac上创建了字节序列0a 0d 0d 0a的奇怪的pcap标头?

是否在Mac上创建了字节序列0a 0d 0d 0a的奇怪的pcap标头?
EN

Stack Overflow用户
提问于 2013-03-05 18:58:35
回答 1查看 2.2K关注 0票数 1

我有一个PCAP文件,它是在使用mergecap的Mac上创建的,可以在Mac上使用苹果的libpcap进行解析,但不能在Linux系统上进行解析。组合文件有一个额外的16字节的头文件,它在4d 3c 2b 1a介绍之前包含0a 0d 0d 0a 78 00 00 00,这在pcap文件中很常见。下面是一个十六进制转储:

代码语言:javascript
运行
复制
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

有人知道这是什么吗?或者我如何使用libpcap在Linux系统上读取它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-06 02:14:57

我有一个

文件

不,你没有。你有一个pcap-ng file

可以在苹果电脑上使用苹果的libpcap进行解析的

libpcap 1.1.0和更高版本还可以读取一些pcap-ng文件( pcap API仅允许一个文件具有一个链接层标题类型、一个快照长度和一个字节顺序,因此仅支持所有部分具有相同字节顺序且所有接口具有相同链路层标题类型和快照长度的pcap-ng文件),OS X Snow Leopard和更高版本具有基于1.1.x的libpcap,因此它们可以读取这些文件。

(OS X Mountain Lion和更高版本已经调整了libpcap,允许它写入pcap-ng文件;-P标志使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字节长度开头的“块”序列,两者都以写入它们的主机的字节顺序。

它们被分成“部分”,每个部分以"Section Header Block“(SHB)开头;SHB的块类型是0x0a0d0d0a,它与字节顺序无关(这样您就不必知道字节顺序就可以读取SHB),并且包含回车符和换行符(例如,如果文件通过一个工具在UN*X系统和Windows系统之间传输,该工具认为它正在传输一个文本文件,并且“有益地”尝试修复行结束,那么SHB幻数将被损坏,很明显文件是通过这种方式传输的;可以将其视为shock indicator的等价物)。

0x78000000是长度;紧跟其后的是"byte-order magic“字段,它是0x1A2B3C4D (与pcap文件的0xA1B2C3D4幻数不同),其作用与pcap幻数相同,即:

  1. 它让代码识别文件是pcap-ng文件
  2. 它让代码确定节的字节顺序。

(不,在查找pcap幻数之前不需要知道长度;一旦找到了幻数,就检查长度以确保它至少是28,如果它小于或等于28,则以无效为由拒绝该块。)

有人知道这是什么吗?

一个(小端) pcap-ng文件。

,或者我如何使用libpcap在Linux系统上读取它?

要么在Linux系统上使用较新版本的libpcap (这可能意味着您正在使用的发行版的较新版本,或者可能只是意味着进行更新,如果这将使您获得1.1.0或更高版本的libpcap),使用Wireshark或TShark (它们有自己的用于读取捕获文件的库,支持原生pcap和pcap-ng格式,以及许多其他格式)阅读它,或者从tcpdump.org下载更新版本的libpcap,构建、安装,然后使用该版本的libpcap构建读取pcap-ng文件所需的任何其他工具,而不是系统附带的版本。

较新版本的Wireshark默认写入pcap-ng文件,包括在mergecap等工具中;您可以让它们编写带有-F pcap标志参数的pcap文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15222047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档