获取 WiFi 路由器的唯一标识符

有没有办法获得特定wifi路由器的任何唯一标识符?

我正在尝试编写一个Android应用程序,该应用程序需要知道它连接到哪个路由器。我知道Android提供了一种获取当前连接网络的BSSID的方法,但令我惊讶的是,这并不是唯一的。
我发现在双频路由器上,两个不同的设备可以获得两个不同的BSSID,即使它们位于同一SSID上。
我是否可以获取任何其他参数来唯一标识我连接到的wifi?如果允许的话,我很想尝试一些第三方库,因为我非常确定Android没有比给我BSSID更好的方法打包。

编辑:我试图找出谁都把他们的家庭wifi(通过应用程序)设置为与我相同的Wi-Fi。每个用户设置他们的“家庭Wi-Fi”,该Wi-Fi保存在服务器上(mac地址是我正在保存的)。然后,每个用户都可以查询谁都使用他们的Wi-Fi,以及他们当前是否连接到该Wi-Fi。“谁在我的wifi上”的查询是通过搜索与我连接到的MAC地址相同的MAC地址来完成的。如果我的家有双频,这将失败,因为它们可以连接到第二个频率(因此是第二个MAC)。


答案 1

您假设这将为两个不同的频段返回两个不同的地址是正确的,因为它们本质上是两个不同的接入点,一个2.4GHz和一个5 GHz,简单地包装在同一个包中。我编写了一个快速应用程序,用于获取并显示可以使用该类获得的所有可用字段。当我连接到接入点的 2.4 GHz 频段时,详细信息如下:getBSSID()WifiInfo

enter image description here

请注意,您可以判断您已连接到 2.4 GHz 频带(“频率:2452”)。对 5 GHz 频段重复该过程将显示以下内容:

enter image description here

如您所见,两个不同频段的MAC地址仅相差一个数字;我不知道是否所有路由器都是这种情况。如果确实如此,那么您可以通过分析MAC地址(BSSID)和频率的组合来最终确定您连接到哪个接入点。


答案 2

可悲的是,没有保证唯一标识特定接入点的方法。您可以使用SSID,MAC等来接近它,但它不一定每次都有效,如果有人愿意,他们仍然可以欺骗它。

如果您希望考虑不同的WiFi接口(1)(而不是支持它的物理设备),那么根据定义,MAC地址就是您需要的(除非损坏的设备错误地重用MAC)。

(1)我使用“接口”这个词,因为可以在同一接口上支持多个网络(即SSID)。接口实际上是单个频率的单通道。


推荐