Trazando la ruta geográfica de nuestra víctima

Índice:
1.-Introducción
2.-Preparando el documento
3.-Analizando el documento usando PHP
4.-Caso real: recopilando, analizando y arreglando

Actualmente no funciona, debido a que al parecer, Google tiene deshabilitada la respuesta JSON de cuando enviamos una petición para geolocalizar

1.-Introducción

Últimamente no paro de hablar de la geolocalización a través de las MAC gracias a Google, y no es para menos. El hecho de que sabiendo una MAC de un router obtengamos la localización geográfica muy exacta (igual falla en unos metros) puede ser benificioso y a la vez peligroso.

Programas como Prey, hacen de esta característica que parezca buena y beneficiosa por si nos roban un dispositivo capacitado para acceder a la red, como un móvil, tablet o notebook.

Sin embargo, todo tiene su lado negativo, y realmente esto de cierta manera atenta contra la privacidad de las personas, en mayor o en menor medida: imaginemos que disponemos de un programa para movil que va captando las MACs y a raiz de eso, se geolocaliza y obtiene la dirección. Tendriamos el móvil totalmente controlado. ¿Y si instalásemos este programa en un dispositivo de una persona ajena? Podriamos saber en todo momento por dónde ha pasado.

De hecho, existe algo muy parecido, y se llama Creepy. Este programa, a partir de una cuenta de twitter, puede situar en el mapa los puntos en los que hay tweets de un usuario en donde se haya geolocalizado a la hora de escribirlos.
Sin embargo, esto no es intrusivo, ya que el usuario es quien decide si poner o no su localización.

Volviendo al tema de antes, se me ocurrió diseñar un script que, a partir de un array con direcciones MACs, te geolocalice y trace una ruta en GMaps. De esta manera, si tuvieramos “algo” capaz de obtener las MACs que nos rodean durante un viaje, podriamos saber la ruta que ha seguido (siempre aproximadamente).

Como no sé programar para Android, al menos todavia, no sé muy bien si esto sería fácil o difícil de programar para un móvil/tablet, pero me he valido de la suite de aircrack (concretamente de airodump y aircrack) para poner a prueba el script que pondré a continuación para probar esto mismo.

Lo que hago es lo siguiente:
1.-Con el airodump capturo paquetes durante todo el viaje o trayecto.
2.-Una vez capturados, uso aircrack y redirecciono la salida para tener todas las MACs en un txt.
3.-Posteriormente lo filtro bien para tener un txt del tipo:
aa:aa:aa:aa:aa:aa
bb:bb:bb:bb:bb:bb
cc:cc:cc:cc:cc:cc
...

4.-Finalmente, leo mediante un script en PHP el txt generado y usando las APIs de GMaps y la de la geolocalización, establezco los puntos y trazo la ruta.

2.-Preparando el documento

Antes de todo, hacemos una captura con el airodump y nos vamos a dar un paseo:
$ airodump-ng mon0 -w captura --output-format pcap

Una vez tengamos todos los datos, nos generará un fichero llamado captura-01.cap. Vamos a abrirlo con el aircrack redireccionando su salida en un txt.
$ aircrack-ng captura-01.cap > documento.txt

Una vez hagamos esto, tenemos todos los datos guardados en el fichero documento.txt. Ahora, simplemente tenemos que filtrar el documento para obtener uno que quede como dije anteriormente:
$ cat documento.txt | grep -e '[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]' -o > macs.txt

Vamos a usar un poco el sentido común: si estamos en una ciudad y damos un paseo de cinco minutos, podemos acabar con varios centenares de direcciones MAC. Esto a la hora de pasarlo como argumento y usarlo para localizar puede que tarde mucho, e incluso es bastante inutil. ¿Para qué queremos 10 direcciones MACs que nos deberian de situar en el mismo sitio? Con una nos deberia bastar, ¿no?

Lo único que se me ocurre para filtrar un poco más, y obtener menos direcciones MAC, son dos cosas: obtener solo las MACs de routers que usan WPA (que son mucho menos que los de WEP, tristemente) o usar las direcciones MAC de redes en las que hemos capturado algún paquete (ya que si vamos andando, de muchas no capturaremos nada).

Para ayudarnos a la hora de crear un filtro para estos dos casos, miraremos la estructura de una captura pasada por aircrack:

Posteriormente, es fácil deducir que podriamos filtrarlos de la siguiente manera. En el primer caso (solo las WPA):
$ cat documento.txt | grep 'WPA (' | grep -e '[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]' -o > macs.tx

En el segundo caso (WEPs con datos)
$ cat documento.txt | grep 'WEP (' | grep -e '[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]:[0-F][0-F]' -o > macs.tx

3.-Analizando el documento usando PHP

No tengo mucho que decir aquí, ya que el código viene completamente comentado, así que haré un resumen de su funcionamiento.

Tengo una matriz con las MACs. Lo que hago es, a partir de esa matriz, obtener una matriz de localizaciones (en orden siempre) usando la Google Geolocation API. Posteriormente simplemente es usar la API de Google Maps de la que uso 3 funciones: establecer un mapa, establecer los puntos, y trazar una ruta entre los puntos.

Aquí va el código:




 

';



function trazar_ruta($matriz){
/*A partir de una matriz, trazaremos la ruta entre las direcciones MAC
  ya que tenemos las coordenadas. El contenido será del tipo
  matriz[0]=a,b;
  matriz[1]=c,d; Siendo a,b,c,d coordenadas */
  
echo '
  var flightPlanCoordinates = [
  ';
  //Ponemos todos los valores de los puntos a unir
  foreach($matriz as $clave => $valor)
     echo "new google.maps.LatLng(" . $valor . "),
";
  
//Configuramos las caracteristicas: color, opacidad y tamaño
	echo '
  ];
 
  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

 
  flightPath.setMap(map);

	';
	
}

function poner_punto($coordenadas,$titulo){
/* Esta función nos permite poner un punto en el mapa
   tenemos que darle las coordenadas, y el título que tendrá ese punto

*/
	
//Establecemos las coordenadas
echo "var coordenadas = new google.maps.LatLng(" . $coordenadas[0] . "," . $coordenadas[1] . ");
";

//Lo ponemos en el mapa
echo '  var marker = new google.maps.Marker({ //opciones
      position: coordenadas,
      map: map,
      //Nombre del mapa
      title:"' . substr(str_replace("-",":",$titulo), 0, -1) . '"
      //Titulo (visible cuando colocamos el ratón sobre el punto)
  });
';
	
}



function obtener_coordenadas($mac, &$resultado){
/* Esta función nos permite guardar en "resultado" (pasado por referencia)
   las coordenadas de la mac pasada en el primer parámetro
*/ 
	
//Datos que enviaremos
$datos_completos = '{version:"1.1.0",request_address:true,wifi_towers:[{mac_address:"' . $mac . '"}]}';
 
//Iniciamos cURL
$ch = curl_init();
//Configuramos cURL
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $datos_completos);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_URL,'www.google.com/loc/json'); 
 
$respuesta = curl_exec($ch);
curl_close($ch);
 
//Obtenemos la respuesta y posteriormente la decodificamos
$respuesta = json_decode($respuesta, true);
 
//Para terminar, pasamos los resultados a los valores que posteriormente usaremos
$resultado[0]=$respuesta['location']['latitude'];
$resultado[1]=$respuesta['location']['longitude'];

}


?>



  

4.-Caso real: recopilando, analizando y arreglando

Esta mañana decidí poner a prueba lo que he escrito anteriormente: puse el portatil a escanear y me fui desde donde vivo actualmente hasta la universidad para posteriormente analizarlo y ver si consigo trazar la ruta correctamente.

Para empezar, antes de salir de casa, puse la tty3 (para poder cerrar el portatil sin que se suspenda o apague) de mi Fedora escaneando con airodump y recogiendo paquetes de datos. Al llegar a la uni, filtreé los datos recogidos como anteriormente puse, generando 3 resultados distintos:
-606 MACs en total
-33 MACs con datos WEP (de las 606)
-35 MACs con WPA (de las 606)

Al script de geolocalizar y trazar rutas se le pueden pasar todos los datos que queramos, como si le pasamos over 9000 MACs, lo que pasa que hay que recordar que tenemos un timeout por defecto puesto en 60, por lo que dependiendo de nuestra velocidad de conexión podremos tratar más o menos MACs. Por ejemplo, en la uni puedo tratar hasta 225 MACs, pero en casa, alrededor de 100.

Podemos cambiar el timeout yéndonos al fichero php.ini y cambiando los valores (que están en segundos) de max_execution_time y max_input_time. Recordad que si tenemos corriendo nuestro servidor, para que se hagan efectivos los cambios habría que reiniciarlo.

Los puntos verdes muestran el inicio y el fin desde donde recogí datos. La primera imagen refleja el resultado de usar las 33 MACs con datos WEP:

Esta segunda imagen, es la de las 35 MACs que usan WPA:

Como podemos ver, en algunos puntos se nos va un poco de la ruta, pero creo que eso es debido a que hay repetidores aquí por la ciudad para tener WiFi gratis (además de los propios de la uni) y eso desestabiliza un poco.

Vamos a tratar ahora de solucionar el problema del límite de MACs que anteriormente dijimos ya que, esta captura la he realizado en 15 minutos.. Si fueran horas, tendriamos decenas de miles de direcciones. Para ello, lo que hacemos es pasar la matriz por una función cuyo algoritmo determine qué direcciones MAC deberiamos de eliminar para no pasar el límite.

Por ejemplo, si tenemos 5 MACs y queremos buscar dos, pues obviamente cogeriamos la primera y la última. Si tuvieramos 20 MACs con un límite de 4, podriamos coger 1 cada 5, y así sucesivamente.

El siguiente código no es el más eficaz ni el más perfecto, ya que le dediqué 5 minutos en hacerlo, pero funciona, y nos permite parsear una matriz y establecer otra a partir de un límite:

function reducir(&$matriz, &$resultado, $limite=100){
	$total=count($matriz);
	if($total>$limite) {
	  $division = $total/$limite;
	  $division = explode(".",$division);
	  $division = $division[0];
	
	  for($a=0;$a<$limite;$a++)
	    $resultado[$a]=$matriz[$a*$division];
	  unset($matriz);
	 //$matriz = $nueva;
	}
	//En caso contrario no hace falta modificar
	echo "

"; }

Un saludo, lipman

Usando la Geolocalización MAC en nuestro favor. Parte II

Anteriores entradas relacionadas:
[Análisis] Prey, software antirrobo de Código Abierto
Usando la Geolocalización MAC en nuestro favor. Parte I

Actualmente no funciona, debido a que al parecer, Google tiene deshabilitada la respuesta JSON de cuando enviamos una petición para geolocalizar

Índice:
1.-Geolocalización con un script en PHP mediante file_get_contents
2.-Geolocalización con un script en PHP mediante cURL
3.-Geolocalización a través de la shell (también usando cURL)
4.-Geolocation API Specification (W3C)

Siguiendo el hilo argumentativo del análisis que hice a Prey, hice una primera parte que quedó un poco escueta, sobre la que hablé de Geolocalización MAC. Pudimos usar un software para tratar de geolocalizar MACs, e incluso desde la página del MapXSS de Samy. Pero nos quedó pendiente una cosa: geolocalizar MACs por nuestros medios.

En esta entrada voy a tratar 4 formas distintas de geolocalizar una MAC, tres de ellas (las primeras) usando la API de Google. Dos de estas formas serán a través de scripts en PHP: uno de ellos usando cURL, y otro mediante file_get_contains. La otra forma, un tanto curiosa, será a través de la shell (en la que también necesitaremos tener cURL instalado). Con respecto a la forma que no usa la API de Google, usaremos la especificación de la W3C para geolocalizar, que está disponible en algunos navegadores.

1.-Geolocalización con un script en PHP mediante file_get_contents

Los dos primeros métodos funcionan internamente igual: hacemos una enviamos una petición JSON mediante POST, esperando recibir una respuesta que deberiamos de recibir, y posteriormente cuando la tengamos, la decodificamos y obtenemos un array con todos los valores y datos que deseamos, nuestra preciada dirección.

Antes de poner el código, una pequeña aclaración: si probamos este código en un servidor web remoto de algún hosting, es muy probable (casi 100%) de que no funcione. Esto tendriamos que probarlo en nuestro propio servidor PHP. Esto es debido a que los hostings deshabilitan (o deberian) la función file_get_contents por una vulnerabilidad que se encontró en la misma.

Aquí dejo el código explicado:

array(
    'method' => "POST",
    'header'  => 'Content-type: application/x-www-form-urlencoded',
    'content' => $datos
  )
);

//Utilizamos file_get_contents para hacer la petición a la API de Google
$respuesta = file_get_contents(
    'http://www.google.com/loc/json',
    false,
    stream_context_create($datos_completos)
);

//Decodificamos lo que nos devuelve
$respuesta = json_decode($respuesta, true);

//Obtenemos los resultados
echo "Direccion Geografica aproximada:
"; foreach($respuesta['location']['address'] as $clave => $valor) echo $clave . ": " . $valor . "
"; echo "Coordenadas aproximadas:
"; echo "Latitud: " . $respuesta['location']['latitude'] . "
Longitud: " . $respuesta['location']['longitude']; ?>

A continuación escribiré una estructura de tipo árbol de los datos que nos devuelve Google tras este envio, ya que nos devuelve una matriz multidimensional, y viene bien saber el contenido de esta:


$respuesta (Array)

>access_token
>location: Array
|-->latitude
|-->longitude
|-->accuracy
|-->address: Array
|---|-->country
|---|-->country_code
|---|-->region
|---|-->country
|---|-->city
|---|-->street
|---|-->postal_code

2.-Geolocalización con un script en PHP mediante cURL

Aquí si ponemos el mismo código que enviamos en el script anterior, no nos funciona, así que tendremos que modificar la petición como veremos a continuación de una manera todavía más sencilla. Además de eso, tendriamos que cambiar la parte de file_get_contents por el cURL. Este código si que deberia de funcionarnos en un servidor remoto, y digo deberia porque yo no lo he conseguido, solo he conseguido que me aparezca el robot de Google tan mono advirtiéndome de un error “temporal” que no tengo ni idea de porqué puede ser… Pero vamos, que en nuestro servidor casero si que funciona.

Aquí el código:


//Datos que enviaremos
$datos_completos = '{version:"1.1.0",request_address:true,wifi_towers:[{mac_address:"xx-xx-xx-xx-xx-xx"}]}';

//Iniciamos cURL
$ch = curl_init();
//Configuramos cURL
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $datos_completos);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_URL,'www.google.com/loc/json'); 

$respuesta = curl_exec($ch);
curl_close($ch);

//Obtenemos la respuesta y posteriormente la decodificamos
$respuesta = json_decode($respuesta, true);

//Para terminar, printeamos los resultados
echo "Direccion Geografica aproximada:
"; foreach($respuesta['location']['address'] as $clave => $valor) echo $clave . ": " . $valor . "
"; echo "Coordenadas aproximadas:
"; echo "Latitud: " . $respuesta['location']['latitude'] . "
Longitud: " . $respuesta['location']['longitude'];

Esto nos devolverá exáctamente el mismo resultado que el anterior script.

3.-Geolocalización a través de la shell (también usando cURL)

Ya por último, acabaremos esta entrada geolocalizando de la forma más sencilla, a través de la shell, en la que solo tenemos que escribirlo y lo recibimos inmediatamente, como veremos en la siguiente imagen.

Usaremos el comando de cURL, por lo que propiamente es hacer lo mismo que en el segundo apartado, pero con la shell:


curl -d '{version:1.1.0,request_address:true,wifi_towers:[{mac_address:xx-xx-xx-xx-xx-xx}]}' www.google.com/loc/json

4.-Geolocation API Specification (W3C)

Para los que usamos twitter, esta especificación no nos deberia de parecer nueva, ya que desde hace tiempo tenemos la opción de añadir desde donde twitteamos usando este método.

A continuación, el código que nos permite esto:











Tras ejecutarlo en Firefox por ejemplo, nos saldrá un aviso de si queremos compartir nuestra localización, que igual a alguno le suena haber visto anteriormente:

Y nos saldrá esto:

A veces no me funciona, igual es que tiene algún límite de peticiones por tiempo (como algunas APIs). Lo curioso (y bueno) del asunto, es que si analizamos con Wireshark los datos, podemos ver que pasan por SSL.

Para terminar con este apartado, decir que en el siguiente enlace disponemos más detalladamente datos relativos al uso de esta Geolocation API.

Saludos, lipman

Usando la Geolocalización MAC en nuestro favor. Parte I

Entradas relacionadas:
[Análisis] Prey, software antirrobo de Código Abierto
Usando la Geolocalización MAC en nuestro favor. Parte II

Actualmente no funciona, debido a que al parecer, Google tiene deshabilitada la respuesta JSON de cuando enviamos una petición para geolocalizar

1.-Introducción
2.-Geolocalización a través de la dirección IP
3.-Geolocalización a través de la dirección MAC
4.-Investigando cómo funciona la Geolocalización a través de las MAC
5.-Usando la Geolocalización MAC en nuestro favor

Esta entrada tiene segunda parte

1.-Introducción

La geolocalización, nombre compuesto de geo (tierra) y localización, hace referencia a saber el lugar en el que algo o alguien se encuentra situado con respecto a la Tierra.

Con el avance de las tecnologías tendemos a controlar y estar más controlados todo tipo de cosas, incluida nuestra posición. Desde hace años están diseñando cada vez más sistemas de localización (GPS) incorporados desde en los teléfonos móviles, hasta en relojes, y no nos asombraremos cuando hasta nuestro perro tenga un sistema de localización incorporado.

2.-Geolocalización a través de la dirección IP

Hace unos años recuerdo esas páginas, que a dia de hoy siguen existiendo, que se pusieron de moda porque permitian localizar una dirección IP. No creo que fuera el único que se dirigiese a una página para averiguar mi IP y posteriormente pegarla en una página de esas, con la desilusión que supuso saber que realmente me decía que estaba en otro sitio (bastante lejos) del que estaba. Creo recordar que siempre me han dicho que estoy en Madrid, y cuando descubrí esto pensé: “bueno, al menos permite saber en qué pais estoy, que lujazo!”.

Intentamos geolocalizar una máquina conectada a un router corriente (la nuestra propia) en un geolocalizador como podría ser este. En mi caso recibo que estoy en Madrid (como recordaba). Esto es debido a que nuestro proveedor de Internet está relacionado con esa situación. Si localizas tu IP y eres de España, lo más probable es que te localice en Madrid o Barcelona.

Por otro lado, las máquinas que actúan de servidores web para alojar websites, al tratar de localizarlas nos encontramos con la misma historia, aunque no nos devuelven en Madrid, sino en cualquier otro sitio (dependiendo del hosting). Por ejemplo, hago ping a www.delanover.com para saber la IP y esta la pongo en el geolocalizador. Me devuelve que está localizada en Orlando.

Cuando nos referimos a los ordenadores conectados a routers comunes y corrientes, es más que obvio que ha de haber una cercanía física entre cualquier dispositivo que comparta IP en la misma red (ya que ha de estar conectado a la misma red para que más de un dispositivo tenga esa IP). Sin embargo, el concepto “cercanía física” no existe cuando hablamos de Internet, y al igual que pueden existir diversos ordenadores con la misma IP, pueden existir diversas páginas web con la misma IP (que al fin y al cabo, siguen siendo computadores conectados a la red).

¿Cómo averiguar páginas con la misma IP?
Hagamos ping otra vez a delanover.com desde la consola de windows por ejemplo. Nos devuelve la IP 67.23.226.44. Ahora nos vamos al buscador Bing de Microsoft, y buscamos: IP:67.23.226.44 y los resultados encontrados son los que comparten IP con delanover.com. Para comprobarlo siempre se puede realizar un ping a cada resultado obtenido.

La geolocalización IP como podemos observar es totalmente inexacta, ya que depende del proveedor que tengamos de Internet para devolvernos una localización u otra. Pero existe otra alternativa. Vamos a pensar: ¿Algo que sea único? Claro! La dirección MAC de las tarjetas wireless.

3.-Geolocalización a través de la dirección MAC

Aquí se haya el principal motivo del post: la geolocalización por MAC.

Espera, espera, ¿cómo es posible que puedan localizar mi ordenador a través de su MAC? Bueno, técnicamente son imposibles de localizar sin más, aunque realmente no hablamos de las MAC de las tarjetas wireless que tienen los ordenadores, sino de la de los routers (aunque claro, si estás conectado a Internet a través de uno de ellos, tu ordenador necesariamente va a estar cerca de tu router, así que se podría decir que te localiza igualmente).

Me interesé acerca de la geolocalización a través de MAC a partir del post acerca de Prey, software capaz de, entre otras cosas, darnos una localización más o menos exacta de dónde se encuentra nuestro punto de acceso.

4.-Investigando cómo funciona la Geolocalización a través de las MAC

Retomando un poco el post acerca de Prey, vamos a analizar un par de paquetes interesantes mediante Wireshark que capturamos en el momento en que el ordenador robado subía sus datos al servidor de Prey para que desde otro ordenador se viesen a través del panel de control:

Nos fijamos que este paquete usa JSON para transmitir información interesante, en concreto (acerca del router): nuestra MAC, nuestro ESSID, el canal, el ruido, y la señal. En el host al que se dirige pone que va hacia el panel de control de prey (cosa obvia) pero.. ¿cuál es esa IP de destino que aparece? ¿A donde está enviando esos datos?

Vamos a ver, vayamos al navegador y escribamos 209.85.229.147. Sorpresa! nos lleva a Google. En este momento me vienen a la cabeza numerosas noticias sobre Google y el tema de la privacidad que abordaremos más adelante, de momento sigamos con nuestro análisis:

Siguiente paquete, justo el segundo debajo del que hemos analizado primero:

Si en el anterior paquete veiamos que la IP de origen era 192.168.2.102 (mi IP local) y el destino era la IP esa de Google, ahora vemos que es al revés. Recordamos que estamos tratando con aplicaciones JSON, que se basan en el envío, procesamiento y recibo de información, por eso que una vez enviada y procesada la información, la recibimos.

Lo que recibimos exáctamente son: coordenadas de latitud y longitud, pais, código del pais, región, condado, ciudad e incluso la calle, aunque simplemente con las coordenadas ya tenemos todo el resto, puesto que podemos usar Google Maps para ver dónde se encuentra.

Conclusión de todo esto
Mediante Google, somos capaces de, a partir de la MAC de nuestro punto de acceso, obtener las coordenadas geográficas de dónde se encuentra de manera muchísimo más exacta que lo que la localización IP nos permitía.

Como dije antes, me venían a la cabeza unas cuantas noticias acerca de la supuesta violación de la privacidad de Google recopilando información gráfica. Me refiero a Google StreetView (eso que nada más enterarnos de que existe, lo primero que todos hacemos es buscar nuestra casa para ver cómo se ve). Pero había una cosa más que los coches de Google recogían, y era información acerca de nuestros puntos de acceso, básicamente la MAC y la localización de donde se encuentran. Por esto se montó un poco de revuelo en Alemania, como podemos leer en esta noticia de meses atrás.

Lo que nos queda claro, es que si tenemos un punto de acceso bastante reciente, no tienen porqué tenerlo localizado, aunque personalmente puse Internet hace unos seis meses y me localiza exáctamente la dirección de casa.

5.-Usando la Geolocalización MAC en nuestro favor

Cuando a Google lo acusaron de atentar contra la privacidad por el tema de obtener datos de las MACs alegó que son datos públicos a los que tiene acceso todo el mundo y claro, si Google tiene acceso, e incluso si Prey tiene acceso, ¿por qué no nosotros mismos?

Como dije anteriormente y pudimos ver en los paquetes capturados por Wireshark, se usa JSON para el envío, procesamiento y recibo de la información que queremos.

En esta página explican bastante bien cómo funciona, incluso ponen a disposición una herramienta (en realidad es un conjunto de herramientas) para descargar y a partir de la dirección MAC, obtener la dirección geográfica.

Descargar el software: link
Requiere Windows y .NET Framework 3.5 SP1

Nada más tener instalado el programa en nuestro ordenador, nos vamos a la ruta de instalación y buscamos la siguiente ruta, que por defecto es C:\O2\O2Scripts_Database\_Scripts\APIs\Google. Justo ahí, deberiamos tener un script, cuyo nombre es Tool – Find Physical Location via MAC Address (using Google’s APIs), que podemos ejecutar gracias a la herramienta instalada, en la que simplemente tenemos que poner la dirección MAC que queremos escanear (separada por guiones) y no solo tendremos las coordenadas, sino que aparece directamente en el mapa, acorde a la imagen:

También hablan de una herramienta online para ello: http://www.samy.pl/mapxss/

Samy Kamkar, autor de esa web, dió una conferencia el pasado 2010 en el Blackhat, en cuyo final de la conferencia apuntaba a la Geolocalización a través de la MAC (video recomendado, si quereis ver solo la parte de la geolocalización, es a partir de 41:37). Explica bastante bien cómo lo usa para “conocer a una chica” (el video se titula How I met your Girlfriend).

Saludos, lipman