我有一些从以太网适配器捕获数据的代码。我使用以下步骤来获取数据(在确定设备名称后,格式为"rpcap://\ device \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 */)当使用从WindowsSystem32\ npcap文件夹加载的Npcap dll "wpcap.dll“运行此命令时,我收到对pcap_handler回调的调用,但回调中的所有参数始终为零:
header->caplen == 0
header->len == 0
header->ts.tv_sec == 0
header->ts.tv_usec == 0unsigned char*数据不为空,但它所指向的内存仅为零。
当我仅使用"Program Files (x86)\ Win10Pcap \x64“(当前最新版本)中的Win10Pcap v10.2.5002 wpcap.dll运行完全相同的代码时,一切工作正常,并且我正确地获得了捕获的数据。代码在大约一年前就可以工作了,所以可能对npcap进行了一些更改,导致了行为的不同,但我找不到为什么在回调中没有提供数据。
npcap安装和dll是Wireshark v3.2.4 64位安装的一部分,当运行Wireshark并在同一以太网适配器上捕获数据时,数据在Wireshark中正确显示,因此npcap库在该情况下工作正常。
谁能给我一个提示,问题可能出在哪里?我在64位Windows 10上运行代码。因为它以前是有效的,所以npcap v0.9991中可能有一个更改,它改变了行为或要求,以获取捕获的数据,但我不知道是哪个导致了问题。
致以最好的问候,冈纳
发布于 2020-07-01 10:27:23
这可能是Npcap issue #178,它已经在Npcap 0.9992中修复了,所以它也应该在当前版本中得到修复(在我写这篇文章的时候是0.9994)。升级您的Npcap安装。
https://stackoverflow.com/questions/62555449
复制相似问题