【问题标题】:pcap files and endiannesspcap 文件和字节序
【发布时间】:2013-02-06 00:43:29
【问题描述】:

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

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

我一直在寻找一种方法来创建大端捕获文件,或者在线下载一个示例,但无济于事。

我也对 pcap 中的小端或大端到底是什么感到困惑。据我了解,libpcap 捕获了它在网络上看到的内容。

【问题讨论】:

    标签: endianness pcap libpcap tcpdump


    【解决方案1】:

    嗯,一种方法是在大端机器上运行 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 捕获他们在网络上看到的内容,但是他们添加了一个文件头,例如,数据包的链路层头类型,并添加到每个packet 一个数据包头,给出数据包的时间戳,数据包出现在网络上的长度,以及捕获的字节数(如果捕获程序被告知以最大大小“切片”数据包,以减少捕获时的 CPU 和 I/O 带宽,例如,如果只有链路层、网络层和传输层标头感兴趣)。 那个信息是什么是大端或小端;实际数据包 data 的顺序与它在网络上的顺序无关(尽管数据包元数据,例如 802.11 的无线电信息,可能采用标准字节顺序,例如 radiotap 的 little-endian无线电信息,或者可能是主机字节顺序,就像 Linux USB 元数据一样)。

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      • 或使用 tcpdump,只需执行“sudo tcpdump -r inputpcapfile -w 输出pcapfile"

      这样您可以将 pcap 文件转换为与您的计算机具有相同的字节序。假设您的计算机使用 little endian,而 pcap 文件是 big endian,则保存的文件将使用 little endian。 这仅适用于一种方式,无法使用它来转换为您的计算机以外的其他字节序。

      【讨论】:

        猜你喜欢
        • 2014-11-02
        • 2013-09-06
        • 1970-01-01
        • 1970-01-01
        • 2013-04-15
        • 2018-12-11
        • 2021-08-28
        • 1970-01-01
        • 2012-06-29
        相关资源
        最近更新 更多