2017-06-15 33 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,重新啓動,現在我的應用程序工作得很好。

相關問題