问题陈述
Calling pcap_activate()
结果是PCAP_ERR_RFMON_NOTSUP
错误,即不支持 RF 监控模式。
Context
我正在编写一个小型 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
Question
在我的程序中,我使用以下命令在设备 mon0 上创建网络句柄pcap_create()
。然后我成功设置了快照长度和混杂模式。
当我检查是否可以设置 rfmon 时,使用pcap_can_set_rfmon()
方法,它返回正值。然后我使用设置 rfmonpcap_set_rfmon()
成功通过的方法。我也设置了超时。最后当我打电话的时候pcap_activate()
它返回错误PCAP_ERR_RFMON_NOTSUP
,即不支持 RF 监控模式。我正在以 root 身份运行我的程序。
需要注意的一件事是,我安装了wireshark并开始监听mon0,它成功捕获了所有流量。
您不需要在 mon0 上设置 rfmon 模式 - 它本质上处于监视模式。只需捕捉它即可;这就是您使用 Wireshark 所做的。
由于各种原因与
libnl 有多个不兼容的版本,因此选择正确的版本来构建 libpcap 显然对于发行版构建者来说是一件痛苦的事情;
选择与同时使用 libnl 和 libpcap 的应用程序所使用的版本不同的版本,由于上述不兼容性而导致可怕的问题;
Linux 的 libpcap rfmon 模式代码最适合大多数设备,它使用 libnl (本质上,它创建一个新的 monN 接口,复制 airmon-ng 的功能,打开该接口进行捕获,并在捕获完成时将其删除),是not由于配置了 libpcap,因此在许多 Linux 发行版中启用not使用 libnl.
因此,它在 Linux 上运行得不太好。
为 libpcap 编写代码以直接使用 netlink 套接字,而不是通过 libnl,在我的待办事项列表中,但不幸的是,它落后于该列表中的许多其他问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)