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

时间:2010-02-15 09:27:11

标签: iphone c networking operating-system router

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:-1)

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