1

デバイスで libpcap を使用して C でキャプチャしていますが、これは pcap によるモニター モードでの設定をサポートしていません (pcap_can_set_rfmon は -6 を返します)。しかし、コマンドラインで iw と iwconfig を使用して監視モードに設定できるので、手動で設定してからプログラムを実行します。また、pcap 関数 pcap_set_rfmon を使用してネットワーク デバイスを監視モードに設定できる Mac でもキャプチャしています。

エラー処理と利便性の理由から、pcap を使用して、デバイスが既に監視モードになっているかどうかを実際に確認する方法があるかどうか疑問に思っていました。答えが見つかりませんでした (ポジティブでもネガティブでも)。多分ここにいる誰かがこれに答えることができますか?

4

1 に答える 1

0

デバイスで libpcap を使用して C でキャプチャしていますが、これは pcap によるモニター モードでの設定をサポートしていません (pcap_can_set_rfmon は -6 を返します)。

pcap_can_set_rfmon()-6 を返しますか? それはPCAP_ERROR_RFMON_NOTSUPpcap_can_set_rfmon()返されるはずのない です。問題が発生した場合にのみエラー値を返すことになっています。監視モードを設定できないと判断した場合は 0 を返し、設定できると判断した場合は 1 を返すことになっています。pcap_set_rfmon()-6を返すということですか?そしてpcap_can_set_rfmon()、それは「うまくpcap_set_rfmon()いくはず」という意味ですか?

しかし、コマンドラインで iw と iwconfig を使用して監視モードに設定できるので、手動で設定してからプログラムを実行します。

これらのコマンドのいずれかを root として実行しますsudoか?

デバイスがすでに監視モードになっているかどうかを pcap で実際に確認する方法があるかどうか疑問に思っていましたが、

いいえ。 の結果が成功するpcap_can_set_rfmon()かどうかを正しく示す必要pcap_set_rfmon()があり、プロミスキャス モードの場合と同様に、既にオンになっているかどうかに関係なく、プログラムが監視モードを要求する必要があるという考えです。

残念ながら、現在 Linux にはいくつかの問題があります。ほとんどの場合、非 mac80211 メカニズムが libpcap で mac80211 メカニズムと同様にうまく機能しないこと (より多くの権限が必要になる、NetworkManager と衝突するなど) と、mac80211 メカニズムが利用できないことの組み合わせです。 libpcap は現在、libpcap を使用するために絶えず変化する API libnl を必要とするためです (netlink ソケットを直接使用して修正する必要がある場合があります)。これによりpcap_set_rfmon()、機能するはずの場合に機能しなくなります。

于 2012-11-06T19:23:10.393 に答える