pcap文件和字节顺序

时间:2013-02-20 20:47:06

标签: endianness pcap libpcap tcpdump

对pcap文件运行file命令将打印出 -

的内容
$ file pcap.pcap
pcap.pcap: tcpdump capture file (little-endian) - version 2.4 ....

我一直在寻找一种方法来创建一个big-endian捕获文件,或者在线下载一个样本,但无济于事。

我也很困惑pcap中究竟是小端还是大端。据我所知,libpcap捕获了它在线上看到的东西。

3 个答案:

答案 0 :(得分:9)

嗯,一种方法是在大端机器上运行tcpdump或Wireshark;例如,尝试使用运行OS X的旧的基于PowerPC的Mac。

除此之外,关于获取它们的唯一方法是查看,例如the Wireshark Wiki's SampleCaptures page,看看是否有任何捕获被描述为已经完成,例如,基于SPARC的机器或PowerPC基于机器(或大端MIPS机器,如SGI机器,但不是DEC机器),或查找the Wireshark bug database中包含在大端机器上进行捕获的错误。 libpcap / WinPcap以主机字节顺序写出捕获文件 - 目标是在写出实时捕获时消除字节交换开销,将负担转移到读取文件的程序。

而且,是的,libpcap / WinPcap捕获他们在线上看到的内容, BUT 他们添加了一个文件头,例如,为数据包提供链路层头类型,并添加到每个数据包标题包,给出数据包的时间戳,网络上出现的数据包长度,以及捕获的字节数(如果捕获程序被告知以最大大小“切片”数据包,以便在捕获时减少CPU和I / O带宽,例如,只有链路层,网络层和传输层标头是有趣的)。 那个信息是什么是大端或小端的;实际的数据包数据的顺序与它在网络上的顺序不同(尽管数据包元数据,例如802.11的无线电信息,可能是标准的字节顺序,例如{{3的小端)无线电信息,或者可能是主机字节顺序,就像Linux USB元数据一样。)

答案 1 :(得分:2)

无耻的插件,但我写了一个实用程序转换 pcap文件的字节顺序:

https://github.com/ehrmann/pcap-endianness-converter

答案 2 :(得分:0)

要转换pcap文件的字节顺序,您还可以使用wireshark或tcpdump:

  • 使用wireshark,只需打开文件并保存即可,无需修改。保存的文件将具有与您的计算机相同的字节顺序。

  • 或使用tcpdump,只需执行" sudo tcpdump -r inputpcapfile -w outputpcapfile"

通过这种方式,您可以将pcap文件转换为与计算机具有相同的字节顺序。假设您的计算机使用小端并且pcap文件是大端,则保存的文件将使用小端。 这只能以一种方式工作,使用它来转换为其他字节序是不可能的。