问题陈述
调用pcap_activate()结果PCAP_ERR_RFMON_NOTSUP错误,即不支持RF监视器模式.
上下文
我正在编写小型C程序,其工作是在监视器模式下监听笔记本电脑的wifi卡.笔记本电脑正在运行Ubuntu 12.04 LTS.我运行了airmon-ng start wlan0命令,之后出现了mon0接口.以下显示运行airmon命令后iwconfig命令的输出:
$ iwconfig
mon0 IEEE 802.11bgn Mode:Monitor Tx-Power=16 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
eth0 no wireless extensions.
lo no wireless extensions.
wlan0 IEEE 802.11bgn ESSID:"SKY88F48"
Mode:Managed Frequency:2.412 GHz Access Point: 7C:4C:A5:3B:33:59
Bit Rate=52 Mb/s Tx-Power=16 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=43/70 Signal level=-67 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:4 Invalid misc:415 Missed beacon:0
Run Code Online (Sandbox Code Playgroud)
题
在我的程序中,我使用设备mon0创建网络句柄pcap_create().然后我成功设置了快照长度和混杂模式.
当我检查是否可以使用pcap_can_set_rfmon()方法设置rfmon时,它返回正数.然后我使用pcap_set_rfmon()成功通过的方法设置rfmon .我也设置了超时.最后当我调用pcap_activate()它时返回错误PCAP_ERR_RFMON_NOTSUP,即不支持RF监视器模式.我正在以root身份运行我的程序.
有一点需要注意的是,我安装了wireshark并开始监听mon0,成功捕获了所有流量.
小智 7
您不需要在mon0上设置rfmon模式 - 它本身就处于监控模式.抓住它; 这就是你对Wireshark的所作所为.
由于各种原因而与之相关
libnl有多个不兼容的版本,所以选择正确的版本来构建libpcap显然是分销构建者的痛苦;
选择与使用libnl和libpcap的应用程序使用的版本不同的版本,由于上述不兼容性而导致可怕的问题;
用于Linux的libpcap rfmon模式代码最适合大多数设备,它使用libnl(实质上,它创建一个新的monN接口,复制airmon-ng的功能,打开该接口进行捕获,并在捕获完成时删除它),是不是因为libpcap的配置在很多Linux发行版能不能用libnl.
因此,它在Linux上运行不正常.
编写libpcap代码直接使用netlink套接字,而不是通过libnl,是在我的待办事项列表中,但不幸的是,它在该列表上的许多其他问题背后.
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |