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

标签 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 吗?

干杯, 佩德罗

最佳答案

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/

相关文章:

libpcap - pcap 进入 qthread

c# - 从 C# 在 SQL Server 中并行化大量插入(以获得更好的时间性能)

c# - 如何在 WPF 中捕获 DataTemplate 的实例化?

c# - 您如何查看已注册的 httphandlers 的集合?

c - Pcap 不完全类型

android - Android NDK 构建中的 libpcap 静态链接错误(对 pcap API 的 undefined reference )

c# - 事件通过委托(delegate)提供附加功能

networking - 按域过滤

python - 如何使用 python 通过特定协议(protocol)过滤 pcap 文件?

c - 在 C 中查找主机地址范围