2012-11-06 64 views
1

我在設備上使用libpcap捕獲C,不支持通過pcap在監視模式下設置(pcap_can_set_rfmon返回-6)。但我可以在命令行中使用iw和iwconfig將其設置爲監視模式,所以我手動執行該操作,然後運行該程序。 我也在我的Mac上捕獲,我可以使用pcap函數pcap_set_rfmon將網絡設備設置爲監視模式。pcap C檢查是否處於監視模式

我想知道是否有pcap的方式來實際檢查設備是否已處於監視模式,只是出於錯誤處理和便利的原因。我沒有找到答案(正面或負面)。所以也許有人可以回答這個問題?

回答

0

我在設備上使用libpcap捕獲C,不支持通過pcap在監視模式下設置(pcap_can_set_rfmon返回-6)。

pcap_can_set_rfmon() return -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()不能在應該能夠工作的情況下工作。

+0

對不起,我混淆了一點......'pcap_can_set_rfmon()'返回1,所以監視器模式可能可用。 'pcap_set_rfmon()'也會成功,即返回0.但是,當pcap_activate()返回-6(PCAP_ERROR_RFMON_NOTSUP)時,它已經處於監視模式以及不在監視模式。這就是爲什麼我首先使用iw開始將設備設置爲監控模式的原因。那麼可能是Linux的庫問題(使用Ubuntu 10.10 Server)?如果我忘記將設備置於監視模式,那麼檢查設備是否已處於監視模式的選項將很好地通知我自己。 – Cravid

相關問題