使用 Google Geolocation API 通过 MAC 地址对 802.11 接入点进行地理定位
现在大多数浏览器都内置了对 Google Geolocation API 的支持.他们通过向 Google 发送附近 802.11 接入点(其信标被您的计算机捕获的那些)的 MAC 地址来做到这一点.
Support for the Google Geolocation API is now built in to most browsers. They do this, in part, by sending to Google the MAC address of nearby 802.11 access points (those whose beacons are captured by your computer.)
我有大量从不同位置捕获的 802.11 数据包.我正在寻找 802.11 接入点的地理定位.假设我们只有他们的 mac 地址.这应该可以通过使用 Google Geolocation API 来实现.
I have a large number of 802.11 packets captured from various locations. I'm looking to geolocate the 802.11 access points. Assume that we only have their mac addresses. This should be possible by using the Google Geolocation API.
迄今为止我发现可能对此有所帮助的来源包括:
Sources that I've found to date that might be helpful on this include:
- 来自 Mozilla 1.9.1 代码库的地理定位源代码
- 关于监控 WiFi 接入点的 MDN 文章
- MDN 关于使用地理位置的文章
- Mozilla WebDev 关于在浏览器中使用地理定位的文章
第一个可能是最好的选择.问题是,我不确定如何使用那里的示例并实际创建一个程序,让我通过管道输入 MAC 地址并输出纬度/经度对.我也不确定如何从 Unix/MacOS 命令行运行 JavaScript.
The first is probably the best bet. Problem is, I'm not sure how to use the example there and actually create a program that lets me pipe in the MAC addresses and output lat/long pairs. I'm also not sure how to run JavaScript from a Unix/MacOS command line.
我知道这有很多问题要问,但是有人知道我应该从哪里开始吗?
I know that this is a lot to ask, but does anybody have any clue where I should start?
推荐答案
<?php
$mac = $_SERVER['argv'][1];
$postData = '{
"version": "1.1.0",
"wifi_towers": [{
"mac_address": "' . $mac . '",
"ssid": "0",
"signal_strength":-72
}]
}';
$opts = array(
'http'=>array(
'method' => "POST",
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postData
)
);
$response = file_get_contents(
'http://www.google.com/loc/json',
false,
stream_context_create($opts)
);
$loc = json_decode($response, true);
echo $loc['location']['latitude'];
echo ',';
echo $loc['location']['longitude'];
命令行用法:
php geo.php "mac addy here"
相关文章