我有一个由 Wireshark 创建的“.pcapng”二进制文件。
如何检测其中每个新包的开头?
是否有任何特定的字节序列?
或者,如何检测包的结束?
我有一个由 Wireshark 创建的“.pcapng”二进制文件。
如何检测其中每个新包的开头?
是否有任何特定的字节序列?
或者,如何检测包的结束?
(我见过母语不是英语的人说“packages”而不是“packets”——这两个词都来自同一个词“pack”,并且同一个词可能用于其他语言中的两个概念——所以我假设您指的是网络数据包;在英语中通常不使用“包”。)
PCAP Next Generation Dump File Format文档中描述了 pcap-NG 文件格式。pcap-NG 文件是一系列块;每个块在开头都有一个长度字段(在结尾处,以简化向后扫描文件)。并非所有块都包含数据包;执行的块是数据包块、扩展数据包块和简单数据包块。
请注意,libpcap 1.1 及更高版本可以读取 pcap-NG 文件,因此任何使用 libpcap 读取捕获文件的程序都可以,如果动态喜欢 libpcap 并在 libpcap 共享库为 1.1 或更高版本的系统上运行,或者与 libpcap 静态链接1.1 或更高版本,可以使用与读取 pcap 文件相同的 API 读取一些 pcap-NG 文件,而无需对程序进行任何更改。(pcap-NG 文件包含多个接口,其中并非所有接口都具有相同的链路层标头类型或快照长度,因为当前的 libpcap API 不支持这一点。)没有基于 libpcap 1.1 的 WinPcap 版本或更高版本,因此 WinPcap 目前不能用于读取 pcap-NG 文件。
另一个可以读取 pcap-NG 文件的库是NTAR库。但是,它只能读取 pcap-NG 文件,不能读取 pcap 文件。