2017-06-15 32 views
0

我试图收集我的以太网上的2级数据包。该网络上唯一发生的事情是设备正在吐出ieee1722/AVB帧。 我已经安装了WinPcap,并开始使用most basic example。对pcap_next_ex的每个呼叫返回0,表示没有收到数据包。我打开了Wireshark,并开始在该接口上进行监视 - 在那里,我的程序开始接收数据包。WinPcap不会收集任何数据包,直到Wireshark启动

我试过这两个接口,内置英特尔I218-LM和廉价的以太网到USB加密狗。连接到AVB网络的两个接口都不会返回帧,除非我在该接口上开始在Wireshark中进行监视。如果没有Wireshark的协助,它们都会在连接到该网络时显示随机的办公室以太网流量。

我也打过电话pcap_set_datalinkpcap_open后设置链路类型为两DLT_EN10MB(无变化)和DLT_RAW(函数返回错误)。其他类型似乎都与我无关。

当然,Wireshark本身使用WinPcap,但我无法弄清楚Wireshark是如何做到这一点的。这里发生了什么?

更新:我注意到当我的应用程序退出时,它也停止了Wireshark上的捕获。我可以同时处于活动状态,但我的应用程序需要先开始捕捉。我发现Wireshark在pcap_finalldevs_expcap_open_live被调用后停止捕获。我找不到Wireshark是如何初始化与我不同的,尽管他们的代码由于所有的条件启用/禁用块而很难遵循。

+1

我假设您已经查看过Wireshark源代码,但如果您无法弄清楚Wireshark正在做什么,那么您可能需要查看WinDump源代码?请参阅:https://www.winpcap.org/windump/install/default.htm,具体来说,源代码位于:https://www.winpcap.org/windump/install/bin/windump_3_9_5/WDumpSrc_3_9_5.zip –

+0

I有 - 这就是让我尝试'pcap_set_datalink'的原因。我没有太紧密地跟随所有事情,所以我最终会回到那里。 – flndr

+0

我刚刚尝试过WinDump,它和我的程序具有相同的行为 - 在Wireshark中重新启动捕获之前没有数据包。我认为这意味着我不是一个愚蠢的监督问题。 – flndr

回答

0

事实证明,我已经安装了Windows的Nmap的一个非常旧的版本,其中包括可用于代替winpcap的npcap。我卸载npcap,重新启动,现在我的应用程序工作得很好。

相关问题