私のイーサネットネットワーク上でレベル2のパケットを収集しようとしています。そのネットワーク上で起こっている唯一のことは、デバイスがieee1722/AVBフレームを吐き出していることです。 私はWinPcapをインストールし、most basic exampleで始まりました。 pcap_next_ex
への各呼び出しは、パケットが受信されていないことを示す0を返しています。私はWiresharkをオープンし、そのインターフェースで監視を開始しました。そこで、私のプログラムはパケットを受信し始めます。Wiresharkが起動するまで、WinPcapはパケットを収集しません。
私はこれを、インテルI218-LMと格安Ethernet-To-USBドングルの2つのインターフェースで試しました。 AVBネットワークに接続された両方のインターフェイスは、そのインターフェイス上でWiresharkで監視を開始するまでフレームを返しません。 Wiresharkの助けを借りずに、そのネットワークに接続すると、両方ともランダムなオフィスのイーサネットトラフィックが表示されます。
私もDLT_EN10MB
(変更なし)とDLT_RAW
(関数がエラーを返します)の両方にリンクタイプを設定するpcap_open
後pcap_set_datalink
を呼び出して試してみました。他のタイプのどれも私にとっては関係がありませんでした。
もちろん、WiresharkはWinPcap自体を使用していますが、この作業を行うためにWiresharkが何をしているのか分かりません。何が起きてる?
更新:私のアプリケーションが終了したときに気付きましたが、Wiresharkでのキャプチャも停止しました。私は両方同時にアクティブにすることができますが、私のアプリケーションは最初にキャプチャを開始する必要があります。 pcap_finalldevs_ex
またはpcap_open_live
が呼び出された後、Wiresharkのキャプチャが停止していました。 Wiresharkがどのように初期化されているのかわかりませんが、すべての条件付き有効/無効ブロックのためにそのコードを実行するのは難しいです。
すでに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 –
です。それは私に 'pcap_set_datalink'を試してもらうためのものです。私はそこにあるすべてのものをあまりにも近づかなかったので、私は最終的にそこに戻って行くつもりです。 – flndr
私はWinDumpを試しましたが、これは私のプログラムと同じ動作です - Wiresharkでキャプチャを再開するまではパケットがありません。私は、それは私のところでは愚かな監視の問題ではないことを意味すると思います。 – flndr