デバイスで libpcap を使用して C でキャプチャしていますが、これは pcap によるモニター モードでの設定をサポートしていません (pcap_can_set_rfmon は -6 を返します)。
pcap_can_set_rfmon()
-6 を返しますか? それはPCAP_ERROR_RFMON_NOTSUP
、pcap_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()
、機能するはずの場合に機能しなくなります。