在Mac OS上使用c ++将外部WiFi卡设置为监视模式

问题描述

我正在运行Mac OS Catalina,并且具有无线ALFA网卡(支持监视模式)。我目前可以使用以下代码将标准Mac OS拥有的驱动程序设置为监视模式:

 int main(int argc,char **argv)
{
    char errbuf[PCAP_ERRBUF_SIZE];
    char dev[] = "en0";
    pcap_t *handler=pcap_create(dev,errbuf);
 
    if (handler == NULL){
        printf("unable to put in monitor mode\n");
        return -1;
    }
    if(pcap_set_rfmon(handler,1) == 0){
        printf("monitor mode enabled\n");
    }
    pcap_set_snaplen(handler,2048);
    pcap_set_promisc(handler,0);
    pcap_set_timeout(handler,10000);
    int status = pcap_activate(handler);
    
    return 0;
}

这利用了pcap plus plus模块,该模块使用libpcap并且导入是#include <pcap.h>

正如我所说,当我在计算机随附的普通WiFi卡上使用该卡时,它将进入监视模式。当我在"en7"的ALFA网卡上使用它时,它甚至会打印出monitor mode enabled(我的成功消息)。但是,未启用卡上的监视模式。我总是以root特权运行代码,所以我已经知道不是那样。另外,我不知道这是否对您很重要,但是我已经能够使用它来嗅探网络上的数据包。

这些是我能想到的唯一原因/解决方案。如果有人知道,请告诉我,我可能没有想到真正的解决方案。

  1. 驱动程序不支持。也许可以克服它?
  2. 就像我之前提到的,找到一种超越某些功能并将其强制进入监视模式的方法
  3. 使代码直接与USB设备交互,并使其进入监视模式。

(3可能是唯一可行的方法,但是,我不知道该如何实现)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)