2017-07-20 4 views
0

私はwinpcapを使用してスイッチによって送信される特定のネットワークトラフィックをキャプチャするプログラムを作成しています。ネットワークアダプタがWinPCapと有線または無線で接続されているかどうかを確認するにはどうすればよいですか?

しかし、ワイヤレスデバイスはこれらのパケットを受信することはありません。そのため、ネットワークアダプタがワイヤレスまたはワイヤレスであるかどうかを判断する方法を理解しようとしています(ワイヤレスアダプタでのキャプチャを省略することができます)。

私が最初に考えたのは、選択されたインターフェイスのメディアをチェックすることです(現在、そのアダプタのIPアドレスに基づいて選択されています。つまり、IPアドレスがある場合は接続されています)。問題は、pcap_datalink()は、有線か無線かにかかわらず、DLT_EN10MBを返します。

次の思考は、(それがあるか、有線ではない場合、したがってと)デバイスが監視モードに設定することができないなら、私に教えてくださいpcap_can_set_rfmon()を、試してみました。しかし、これを使用しようとすると2019のリンクエラーが発生するようですが、Airpcapを使用しないとWindows上でサポートされていない機能と思われます。

他に何を試してもわかりませんが、誰かがポインタを持っていれば素晴らしいかもしれません。私は、システム上の各アダプタが何であるのかを判断してから、WinPCapで使用されるデバイス名と一致させるためにNDISを使用しなければならないと、どれほど難しく複雑になるのだろうと思っています。 lib/WinPCapの社内では?

ありがとうございます!

答えて

0

私には、Windowsシステム用のソートの解決策があります。

接続するネットワークに基づいて、選択するアダプタの場合、そのアダプタに関連付けられているIPアドレスと、GetAdaptersInfoによって生成されたオブジェクトの各IPアドレスを比較できます。それらが一致すれば、同じオブジェクトの "タイプ"がイーサネットであるかどうかを見ることができます。

if ((pAdapterInfo->Type == MIB_IF_TYPE_ETHERNET) && (WINVER > _WIN32_WINNT_WS03)) 
{ 
} 

また、Windowsのバージョンも確認してください。それはVista(Winver 6以降)からのみであるため、IF_TYPE_IEEE80211に返されるアダプタはワイヤレスです。

WinPCapを使用していませんが、もう一度その可能性はわかりません。私はすでに他の場所でこれらのWindowsライブラリを使用しているので、これはプラットフォーム固有の妥協案であると考えました。うまくいけば、それは他の誰かにある日助けて!

関連する問題