pcap 监控模式可用但不起作用

pcap monitor mode available but doesn't work

上下文:

我正在写一个程序,在带有ar9331芯片的openwrt路由器上使用pcap在监控模式下抓包。 我在桌面上用 pcap 1.1(我的 openwrt 版本中存在)测试程序,发现一个问题:pcap_can_set_rfmon 返回 true,pcap_set_rfmon 返回成功,但尝试激活捕获导致“monitor mode is '支持”错误。

Google 搜索显示了与 wireshark 类似问题的错误报告。其中一条评论说,对于某些 Wi-Fi 设备,问题是由旧版本的 pcap 引起的,它使用了另一个库的旧版本。 我更新了pcap版本到1.5.3,问题解决了。

问题: 当我将我们的程序移植到 Openwrt 时,问题又出现了。但是现在从较新的 openwrt 分支将 libpcap 包更新到版本 1.5.3 没有帮助。

遗憾的是,当 libpcap 与 libnl 链接时,Linux 上的 libpcap 监控模式代码效果最佳,但由于各种原因(包括使用 libpcap 和 libnl 的程序的问题,以及链接的 libnl 版本与链接 libpcap 的版本不同)。

这需要在 libpcap 中重做。它可能最终会用 "helper process" 来完成,libpcap 运行 可以做各种事情;如果使用 libpcap 的程序异常退出,并且允许将需要特殊权限的数据包捕获操作限制在辅助进程中,而不是要求使用 libpcap 的程序 运行 具有这些权限,这也将改善清理。这是我相当长的待办事项列表。

最好的解决方法可能是使用 airmon-ng 打开监控模式,如 the Wireshark Wiki page on Wi-Fi capturing 中所述。