如何使用MAC地址获取GPS坐标?

3
我知道像skyhook这样的服务存在,但我无法找到API或如何使用它的信息。我有一个来自无线网络或甚至有线网络的MAC地址列表,我想获取用户的三角定位GPS坐标。
编辑:有人提到无法获取MAC地址信息?从Windows 7中,我执行了“netsh wlan show networks mode=bssid”,然后看到下面的内容。我假设BSSID中的地址是静态的并且至少相关?
SSID 6 : linksys
Network type            : Infrastructure
Authentication          : WPA-Personal
Encryption              : TKIP
BSSID 1                 : 00:0c:41:19:56:7b
     Signal             : 15%
     Radio type         : 802.11g
     Channel            : 6
     Basic rates (Mbps) : 1 2 5.5 11
     Other rates (Mbps) : 6 9 12 18 24 36 48 54

SSID 7 : KSJ
Network type            : Infrastructure
Authentication          : Open
Encryption              : WEP
BSSID 1                 : 00:18:01:95:e7:ca
     Signal             : 30%
     Radio type         : 802.11g
     Channel            : 2
     Basic rates (Mbps) : 1 2 5.5 11
     Other rates (Mbps) : 6 9 12 18 22 24 36 48 54

SSID 8 : benchhome
Network type            : Infrastructure
Authentication          : WPA-Personal
Encryption              : TKIP
BSSID 1                 : 00:0f:b5:e3:2e:24
     Signal             : 23%
     Radio type         : 802.11g
     Channel            : 11
     Basic rates (Mbps) : 1 2 5.5 11
     Other rates (Mbps) : 6 9 12 18 24 36 48 54
3个回答

5
记录一下,除非你与MAC地址停放在同一个子网并且有活动连接——也就是说,你从接入点接收到了IP地址——否则没有办法在没有外部因素的情况下(即使拿到MAC地址)确定Wi-Fi AP的IPv4地址。我很好奇Steven建议你如何解决这个问题(因为听起来你没有连接到这些网络)。不,ARP在这里无法帮助你。
值得思考的另一个问题是,一个使用RFC 1918地址标识自己的Wi-Fi AP。我的AP的IP地址是192.168.250.1,并且有自己的默认网关上游——那么我的AP上的IP的地理位置信息会给出什么?
每个无线接入点都有一个清晰的MAC地址来识别自己。SkyHook使用广播MAC地址和已知MAC地址对应的街道地址数据库来三角定位人所在位置。
SkyHook之所以在MAC/街道地址级别上运作,是因为GeoIP服务本质上是无用的。我的雇主拥有由RIPE分配的/20地址,这些地址从伦敦宣布;由于我的雇主是一家美国公司,几乎所有的GeoIP服务将这些IP地址定位在新泽西州。我很惊讶地发现,很少有GeoIP系统会检查公告ASN,但我偏离了主题...
话虽如此,SkyHook将已知的Wi-Fi AP MAC地址(没有IPv4)与蜂窝三角定位相结合,得到了非常准确的结果。根据SkyHook自己的说法,数据库主要由用户提交的AP支持。根据提交AP页面,他们使用MAC地址:

[...] 或者访问Skyhook支持站点了解什么是MAC地址以及如何获取它。

他们服务的最大优势似乎是接入点数据库。您完全不需要进行GeoIP,只需使用他们拥有的数据即可。我猜这是一个开源项目市场上的空缺?

我从未暗示过您可以解析AP的MAC地址,但您可以通过MAC地址解析客户端IP地址... IP地址分配给MAC地址,并且可以通过ARP查询MAC地址。 - monksy
你假设他可以连接到这些接入点,并且他没有将它们用于地理位置。SkyHook不会连接到它能够看到的接入点的MAC地址;它只是将它们报告给其数据库并计算位置。IPv4直到客户端建立连接之后才设置、分配或分发,你永远无法听取或查看ARP,除非建立了这样的连接。此外,你没有意识到许多AP会分配“192.168/16”地址——那怎么帮助你呢? - Jed Smith
你没有理解我的观点。traceroute 涉及 IPv4。在建立与 AP 的连接之前,您无法看到、处理或广播 ARP,也无法通过 IPv4 进行通信。而这个问题的提问者正在进行地理定位,并没有连接到相关的接入点。 - Jed Smith
只是好奇你为什么说无法获取AP MAC地址。我假设从BSSID给出的地址是相同的,但即使它们不同,它们也经常是静态的,对吧?请查看我的编辑。 - esac
1
哦,我完全同意这一点,为什么我必须仅基于MAC来查询。已点赞。我认为最重要的是你所说的。这是一个开源项目的利基/空缺。 - esac
显示剩余3条评论

3
您需要将MAC地址解析为IP地址,然后对IP地址进行主机查找。(这将告诉您用户连接的ISP)。但是很难从中获得准确的位置信息。但是,您可能能够确定MAC地址当前所在的国家和/或城市。
使用IP地址,您可能希望使用GeoIP等服务/数据库获取有关IP地址的某些地理信息。对于ISP位置,您需要找到ISP位置的数据库。
我查看了SkyHook的网站:他们是这样做的:
1. WiFi接入点:许多WIFI点不会更改,因此这有助于缩小用户可能的位置范围。 2. 手机塔,这些处于已知位置,通过3个或更多点可以用信号强度三角定位用户的非常精确的位置。
Microsoft也有类似于VirtualEarth的功能。

我知道这是可能的。Eye-Fi使用SkyHook来确定这一点。也许他们有一个合作伙伴关系,或者SkyHook的API是独家的。他们可能只有一个MAC地址和GPS坐标的数据库。创建起来非常简单,但如果我能以某种方式使用Skyhook或类似的东西,那将节省我很多时间。 - esac
4
这些信息非常不准确。居家网络定位服务把我的ADSL定位在约450英里之外的W Yorks Rochdale。而在工作时,我可能身处于荷兰的埃因霍温或芬兰的图尔库,这两个地方甚至都不在同一个国家。 - Jeremy McGee
就像我说的那样... 它会转到您的(基础)ISP。 - monksy
我将您的评分设为-1,原因在我的回答中。 - Jed Smith
我在使用GeoIP数据库时结果各异...大多数都是相距几个州...有些则在同一个城市... - monksy

3
Skyhook系统似乎只适用于移动设备。它使用设备自带的GPS软件、正在使用的WiFi接入点位置的知识或正在使用的基站的三角定位来确定位置。详情请点击这里
如果用户愿意共享他们的GPS位置,或者他们的WiFi接入点在Skyhook数据库中列出,最好的准确度就会出现。然而,除非用户正在导航到某个地方,否则大多数普通用户不会打开他们的GPS天线,而大多数私人或企业WiFi接入点也不会被列出。
因此,在实践中,这项服务只对用户同意的应用程序真正有用,例如公司使用的跟踪设备。
回退方法是使用IP的地理位置,正如我在上面的评论中提到的,这种方法非常不准确,实际上只适用于娱乐。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接