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