pcap_handler回调仅在使用 NPCAP v0.9991 时包含空数据包

pcap_handler callback contains empty packets only when using npcap v0.9991

本文关键字:v0 NPCAP 9991 数据包 包含空 handler 回调 pcap      更新时间:2023-10-16

我有一些代码应该从以太网适配器捕获数据。我正在使用以下步骤来获取数据(在确定设备名称后,格式为:"rpcap://\设备\NPF_{0C5[...]C89}"(:

deviceHandle = pcap_open(device_name, 65536, 1 /* promiscous */, 100, NULL, errbuf)

然后运行一个循环(直到捕获应该停止(:

pcap_dispatch(deviceHandle, -1, pcap_handler, userHandle /* unsigned char* to user handle */)

当使用从Windows\System32\Npcap文件夹加载的npcap dll"wpcap.dll"运行时,我收到对pcap_handler回调的调用,但回调中的所有参数始终为零:

header->caplen == 0
header->len == 0
header->ts.tv_sec == 0
header->ts.tv_usec == 0

无符号 char* 数据不是 NULL,但它指向的内存仅为零。

当我仅使用 Win10Pcapv10.2.5002 wpcap 运行完全相同的代码时.dll来自"程序文件 (x86(\Win10Pcap\x64"(当前最新版本(一切正常,我正确获取捕获的数据。该代码大约在一年前就可以工作了,因此可能对 npcap 进行了更改,从而导致行为不同,但我找不到为什么回调中没有提供数据。

npcap 安装和 dll 是 Wireshark v3.2.4 64 位安装的一部分,当运行 Wireshark 并在同一以太网适配器上捕获数据时,数据会正确显示在 Wireshark 中,因此 npcap 库在这种情况下工作正常。

谁能给我一个提示,问题可能在哪里?我正在 64 位 Windows 10 上运行代码。由于它之前一直在工作,因此 npcap v0.9991 可能已经发生了变化,该更改了行为或要求以获取我不知道导致问题的捕获数据。

此致敬意 贡纳尔

这可能是 Npcap 问题 #178,该问题已在 Npcap 0.9992 中修复,因此也应该在当前版本中修复(截至我撰写本文时为 0.9994(。 升级您的 Npcap 安装。