用于从 OSX Yosemite 上的适配器中删除 monitor/promisc 的命令

用于从 OSX Yosemite 上的适配器中删除 monitor/promisc 的命令

我该如何实现这一点?我看到了关于如何使用它打开它的帖子,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 模式)。退出时,程序只需关闭捕获句柄,一切恢复正常(索伦之眼消失),网卡仍与网络关联。整个执行过程中互联网访问都正常。

相关内容