到目前为止,我一直在使用 WinPcap 在 C# 中打开 pcap 文件:
[DllImport("wpcap.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
private extern static IntPtr pcap_open_offline(string fname, byte[] errbuf);
现在我想做一些类似于打开 pcap-ng 文件的事情,所以我得到了纳秒分辨率(我有一个新的嗅探器:-))
不幸的是,WinPcap 失败并出现此错误:“转储文件格式错误”
有人知道如何在 Windows 中使用 pcap-ng 吗?
干杯, 佩德罗
最佳答案
Libpcap 1.1.x 及更高版本支持读取一些 pcap-ng 文件(所有接口(interface)都具有相同的链路层 header 类型和快照长度的文件);但是,没有基于 libpcap 1.1.x 或 1.2.x 的 WinPcap 版本,因此没有可以读取 pcap-ng 文件的 WinPcap 版本。因此,在此类 WinPcap 版本发布之前,围绕 WinPcap 的 CLR 语言包装器将无法读取 pcap-ng 文件。
此外,libpcap/WinPcap API 目前不返回具有纳秒级分辨率的时间戳,因此即使您使用 libpcap 读取了具有纳秒级分辨率时间戳的文件,您也不会看到纳秒级分辨率时间戳。
目前,您必须编写自己的代码,或者围绕 Wireshark 的 Wiretap 库编写一个包装器。 (请注意,从一个 Wireshark 主要版本到另一个版本,Wiretap 的 API 会发生重大且不兼容的更改。)
关于c# - 如何在 C# 中打开 pcap-ng 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973337/