我该如何实现这一点?我看到了关于如何使用它打开它的帖子,Apple802.11.framework
但没有关于如何关闭它的帖子。我运行了洗涤程序,现在我被困在监控模式。请帮忙!
sudo ifconfig en0 -promisc
返回“错误值”,我一定是使用了错误的开关?监控模式的语法和开关是什么?我需要通过框架来执行吗?
答案1
只有当正在运行的进程将其保持在监控或混杂模式时,它才会保持该模式。您正在运行的任何工具可能仍在运行,或者生成了仍在运行的后台进程。
识别并终止该进程,您将恢复正常。
答案2
仅当正在运行的进程将其保持在监控或混杂模式时,它才会停留在监控或混杂模式。
虽然我们在 El Capitan 上运行时大多数时候都是这样的:
# sudo tcpdump -p -I -i enX -y IEEE802_11
tcpdump 退出后,接口可能会卡在监控模式(X
无线网卡支持监控模式的话)。注意我说的是“可能”。这不是错误。有几次它恢复到了正常模式。大多数时候都没有。
随后运行此命令即可修复该问题(这是我对您的问题的回答):
# sudo tcpdump -I -i enX -p
这让我们相信 tcpdump 或 Mac OS X 以及它们之间的交互方式存在问题(问题也可能出在介于两者之间的 libpcap 上)。
我们继续阅读 libpcap 的源代码,发现了许多关于 Mac OS X 上监控模式的宝贵信息,这些宝贵信息反过来又指出,选择特定的 DLT 模式(使用 tcpdump 上的 -y 标志)会导致 Mac OS X 将接口置于监控模式(无需 libpcap 的额外工作)。此外,与其他系统相反,当 libpcap 在 Mac OS X 上运行时,似乎不会对监控模式状态进行任何特殊清理。
在我们的案例中,我们必须能够获取 802.11 管理帧(探测请求),同时保持基站关联和连接。
我们最终构建了一个直接与 libpcap 交互的程序,并pcap_set_rfmon(pcap, 1)
在激活接口上的捕获之前简单地请求监控模式(不选择 DLT 模式)。退出时,程序只需关闭捕获句柄,一切恢复正常(索伦之眼消失),网卡仍与网络关联。整个执行过程中互联网访问都正常。