获取路由器范围内的设备的MAC地址

路由器是否可以获取未连接到它的附近设备的MAC地址? 我想编写一个应用程序,当某个特定的MAC地址进入我所拥有的路由器范围内时,会以某种方式通知我(电子邮件或其他东西)(该应用程序比这更具体,因此我不能使用预构建的工具但是如果它们是开源的他们可以帮忙)。 路由器将连接到互联网,设备是一个iPhone,所以它一直在寻找WiFi接入点,所以我觉得所有的成分都在那里,但我不知道我问的是否可能。 如果可能(即使只是通过重写路由器操作系统)将采取什么措施? C和我希望的水平一样低……

您可以编程的基于Linux的路由器,通常意味着运行OpenWRT或DD-WRT的路由器可以执行此操作; 您可以将路由器置于监控模式,并让tcpdump或tshark监听该特定的MAC地址。 如果需要,您可以编写自己的捕获应用程序,使用libpcap进行监听。 如果您只能扫描活动通道,则路由器可能同时提供接入点。

您还可以收听标准路由器的日志,但问题是手机必须至少尝试关联才能在路由器记录任何内容之前; 使用linux路由器,您可以只监听发送任何数据包的MAC地址。

我最喜欢的基于Linux的路由器来自Ubiquiti ,因为他们的RouterStation Pro是为运行OpenWRT而构建的,所以没有黑客和完整的硬件文档。

取决于路由器。 有些路由器具有完全开放的操作系统,例如Linksys WRT54GL,其中存在OpenWRT,DD-WRT和Tomato操作系统。 您可以(例如)开发一个简单的bash脚本来解释日志文件并通过电子邮件发送给您。

您遇到其他路由器可能会有所不同。 许多都有可通过http或telnet访问的日志文件,因此即使您无法在路由器上运行自己的代码,也可以从外部解释。

我猜测通过路由器你实际上是指一个wifi接入点(可能集成到家用路由器),你说的是wifi连接。 然后不,这是不可能的。 当设备至少尝试连接到其网络时,接入点仅知道MAC地址。 但是,设备显示的附近网络列表不需要任何forms的连接到任何网络。 相反,他们会监听接入点发出的信标。