RyP*_*eck 6 endianness tcpdump pcap libpcap
对pcap文件运行file命令将打印出以下内容:
$ file pcap.pcap
pcap.pcap: tcpdump capture file (little-endian) - version 2.4 ....
Run Code Online (Sandbox Code Playgroud)
我一直在寻找一种方法来创建一个big-endian捕获文件,或者在线下载一个样本,但无济于事.
我也很困惑pcap中究竟是小端还是大端.据我所知,libpcap捕获了它在线上看到的内容.
小智 10
好吧,一种方法是在大端机器上运行tcpdump或Wireshark; 例如,尝试使用运行OS X的旧的基于PowerPC的Mac.
除此之外,关于获取它们的唯一方法是查看Wireshark Wiki的SampleCaptures页面,看看是否有任何捕获被描述为已完成,例如,基于SPARC的机器或基于PowerPC的机器(或者是大端MIPS机器,例如SGI机器,但不是DEC机器),或者在Wireshark错误数据库中查找包含在big-endian机器上进行捕获的错误.libpcap/WinPcap以主机字节顺序写出捕获文件 - 目标是在写出实时捕获时消除字节交换开销,将负担转移到读取文件的程序.
并且,是的,libpcap/WinPcap捕获他们在线上看到的内容,但是他们添加了一个文件头,例如,给出了数据包的链路层头类型,并为每个数据包添加了一个数据包头,为其提供了时间戳.数据包,网络上出现的数据包长度,以及捕获的字节数(如果捕获程序被告知以最大大小"切片"数据包,以减少CPU和I/O带宽例如,当捕获时,只有链路层,网络层和传输层标头是有趣的). 这些信息是big-endian或little-endian; 实际的分组数据的顺序与它在网络上的顺序不同(尽管分组元数据,例如802.11的无线电信息,可能是标准的字节顺序,例如用于radiotap无线电信息的little-endian ,或者可能在主机字节中顺序,就像Linux USB元数据的情况一样).