Menú principal

martes, 10 de mayo de 2011

Parseando consolidated con "horribles" scripts by Silverhack

Desde que saltó a la luz iPhoneTracker han aparecido muchas herramientas para interpretar la información contenida en consolidated.mdbd, pero Juan Garrido "Silverhack", como buen profesional del análisis forense que es, han decidido hacerse sus "horribles" scripts en Python para parsearlo manualmente.

Estos scripts los está utilizando en el Curso de Análisis Forense de Dispositivos Móviles, y los ha puesto a disposición de los que los quieran utilizar en su trabajo, o simplemente para aprender, en Internet. Para ello  el script extrae los campos latitude y longitude de las tablas CellLocation y WiFiLocation del fichero consolidated.

Figura 1: Datos en fichero de consolidated

Para pintarlo, utiliza un Wrapper de Python llamado PyMaps, que pinta el mapa añadiendo las coordenadas extraídas previamente del fichero en Google Maps. Los scripts no toman ningún parámetro como entrada, y únicamente hay que poner en un directorio creado previamente los siguientes ficheros:

- Los scripts
- El fichero consolidated

Para el script GetCoords.py, una vez lanzado, devolverá un fichero HTML con algo parecido a esto:

Figura 2: Paseos de Silverhack con el iPhone 4 por Madrid

En el caso del script GetWifi.py, una vez lanzado, éste devolverá un fichero HTML. Una vez abierto el fichero, podremos ver algo parecido a esto:

Figura 3: Paseos por Móstoles de Silverhack en i64 y su barrio...

Puedes seguir todo el trabajo de Silverhack en su blog: Diario de Juanito. Los scripts, que puedes utilizar libremente son:

GetCoords.py
#Horrible Script para extraer las coordenadas del fichero Consolidated.db
#El fichero se encuentra en el directorio private/var/root/Library/Caches/locationd
#Horriblemente codeado por Silverhack
import sys, sqlite3
from PyMaps import Map, PyMap
# Creamos un mapa
NewMap = Map()
NewMap.zoom = 3
connection = sqlite3.connect("consolidated.db")
cursor=connection.cursor()
cursor.execute("SELECT Latitude,Longitude from CellLocation")
for row in cursor:
print "La latitud es %s, y la longitud es %s" % (str(row[0]),str(row[1]))
</p>
# Latitud y longitud
# Importamos de la BD consolidated a las variables que posteriormente pasaremos al Script PyMaps
latitud= str(row[0])
longitud = str(row[1])
# Insertamos codigo html
pointhtml = "I see you..."
# Anyadimos el punto al mapa
point = (latitud, longitud, pointhtml)
NewMap.setpoint(point)
gmap = PyMap(key="clave", maplist=[NewMap])
mapcode = gmap.pymapjs()
showhtml = gmap.showhtml()
print showhtml
file = open('Coordenadas.html', 'w')
file.writelines(showhtml)
# Cerramos el fichero
file.close()

GetWifi.py
#Horrible Script para extraer las coordenadas WIFI junto con su MAC del fichero Consolidated.db
#El fichero se encuentra en el directorio private/var/root/Library/Caches/locationd
#Horriblemente codeado por Silverhack
import sys, sqlite3
from PyMaps import Map, PyMap
# Creamos un mapa
NewMap = Map()
NewMap.zoom = 3
connection = sqlite3.connect("consolidated.db")
cursor=connection.cursor()
cursor.execute("SELECT MAC, Latitude, Longitude from WifiLocation")
for row in cursor:
print "La MAC es %s, La latitud es %s, y la longitud es %s" % (str(row[0]),str(row[1]),str(row[2]))
# Latitud y longitud
# Importamos de la BD consolidated a las variables
# que posteriormente pasaremos al Script PyMaps
latitud= str(row[1])
longitud = str(row[2])
# Insertamos codigo html
pointhtml = str(row[0])
# Anyadimos el punto al mapa
point = (latitud, longitud, pointhtml)
NewMap.setpoint(point)
gmap = PyMap(key="clave", maplist=[NewMap])
mapcode = gmap.pymapjs()
showhtml = gmap.showhtml()
print showhtml
file = open('WiFi.html', 'w')
file.writelines(showhtml)
# Cerramos el fichero
file.close()

1 comentario:

Artículos relacionados

Otras historias relacionadas

Entradas populares