我在设备上使用libpcap在C中捕获,不支持通过pcap在监视模式下设置(pcap_can_set_rfmon返回-6)。但我可以在命令行上使用iw和iwconfig在监控模式下设置它,所以我手动执行,然后运行程序。 我也在我的Mac上捕获,我可以使用pcap函数pcap_set_rfmon将网络设备设置为监控模式。
我想知道是否有办法让pcap实际检查设备是否已处于监控模式,只是出于错误处理和方便的原因。我没有找到答案(积极或消极)。那么也许有人可以回答这个问题?
答案 0 :(得分:0)
我在设备上使用libpcap在C中捕获,不支持通过pcap在监视模式下设置(pcap_can_set_rfmon返回-6)。
pcap_can_set_rfmon()
返回-6?那个PCAP_ERROR_RFMON_NOTSUP
pcap_can_set_rfmon()
不应该返回的pcap_set_rfmon()
;如果出现问题,它只应该返回一个错误值,如果它认为你不能设置监控模式,它应该返回0,如果它认为可以,则它应该返回1。你的意思是pcap_can_set_rfmon()
返回-6?是pcap_set_rfmon()
,这意味着" sudo
应该工作"?
但我可以在命令行中使用iw和iwconfig在监控模式下设置它,所以我手动执行,然后运行程序。
您是否以root用户身份运行这些命令,例如与pcap_can_set_rfmon()
?
我想知道是否有办法让pcap实际检查设备是否已处于监控模式,
没有。我们的想法是pcap_set_rfmon()
的结果应该正确地表明pcap_set_rfmon()
是否会成功,并且程序应该请求监控模式,无论它是否已经启用,就像它们使用混杂模式一样。
不幸的是,Linux目前存在一些问题 - 主要是非mac80211机制的组合与libpcap不兼容,因为mac80211机制(需要更多权限,与NetworkManager冲突等)和mac80211机制不兼容可供libpcap使用,因为libpcap目前需要不断变化的API libnl才能使用它们(可能需要通过直接使用netlink套接字来修复)。这会导致{{1}}无法在能够工作的情况下工作。