如何在C#中打开pcap-ng文件

时间:2012-01-23 14:41:18

标签: c# pcap libpcap winpcap

到目前为止,我一直在使用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?

干杯, 佩德罗

3 个答案:

答案 0 :(得分:6)

Libpcap 1.1.x及更高版本支持读取一些pcap-ng文件(其中所有接口具有相同的链路层头类型和快照长度);但是,没有基于libpcap 1.1.x或1.2.x的WinPcap版本,因此没有可以读取pcap-ng文件的WinPcap版本。因此,WinPcap周围没有CLR语言包装器能够读取pcap-ng文件,直到出现这样的WinPcap文件。

此外,libpcap / WinPcap API目前不返回纳秒分辨率的时间戳,因此即使您使用libpcap读取了具有纳秒分辨率时间戳的文件,也不会看到纳秒分辨率的时间戳。

现在,你必须编写自己的代码,或者在Wireshark的Wiretap库中编写一个包装器。 (请注意,Wiretap的API受到从Wireshark主要版本到另一个版本的重大且不兼容的更改。)

答案 1 :(得分:3)

我移植了WinPcap to libpcap 1.7.3,现在它可以打开pcap-ng文件并支持纳秒时间戳分辨率。

答案 2 :(得分:0)

你尝试过使用sharpPcap吗?不确定它是否支持它(现在不能尝试),但它确实支持打开捕获文件以及iirc: http://sourceforge.net/apps/mediawiki/sharppcap/index.php?title=Main_Page