路由器是否可以获取附近未连接设备的 MAC 地址?我想编写一个应用程序,当特定的 MAC 地址在我拥有的路由器范围内时以某种方式通知我(电子邮件或其他东西)(该应用程序比这更具体,所以我不能使用预建工具,但如果它们是开源的他们可以提供帮助)。路由器将连接到互联网,设备是 iPhone,所以它一直在寻找 WiFi 接入点,所以我觉得所有的成分都在那里,但我不确定我要问的是否可能。如果有可能(即使仅通过重写路由器操作系统)需要什么?C和我希望的一样低...
3 回答
可以编程的基于 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 地址。然而,设备显示的附近网络列表不需要任何形式的连接到任何网络。相反,它们会监听接入点发出的信标。