Banner 1

parseando el fichero consolidated.db

Hola a tod@s!
Como ya conoces, Iphone, al igual que otros smartphones, guarda información geográfica sobre los puntos en donde ha estado “el móvil”. Entre toda esta información, también se guarda la información de los puntos de acceso WI-FI que se encuentra en “el camino”, incluyendo su MAC.

Imagen 1.- Fichero Consolidated.db
En Seguridad Apple tienen un artículo bastante interesante sobre las aplicaciones existentes en Windows, las cuales extraen esta información y las pintan en Google Maps.
En el curso de Análisis Forense de dispositivos móviles que estamos impartiendo Juan Luis García Rambla y un servidor, y en donde nos estamos peleando con una serie de dispositivos, incluyendo el Iphone, estamos analizando esta información, junto con otras muchas más.
Uno de los puntos que tenemos que tocar, es la creación de herramientas simples que consigan extraer la información necesaria en alguno de los puntos de recogida de información.
Para ello, hemos preparado algunas demos con Python. Una de ellas, es la creación de dos scripts, los cuales extraerán y pintarán en Google Maps la información del fichero Consolidated.db de un Iphone 4.
El script lo único que hace es extraer los campos latitude y longitude de las tablas CellLocation y WifiLocation.

Imagen 2.- Campos WI-FI
Para ello, hemos utilizado un Wrapper llamado PyMaps, el cual pinta el mapa añadiendo las coordenadas extraídas previamente del fichero.
Los scripts no toman ningún parámetro como entrada, y únicamente tendremos que poner en un directorio creado previamente los siguientes ficheros:
Para el script GetCoords.py, una vez lanzado, éste devolverá un fichero HTML. Una vez abierto el fichero, podremos ver algo parecido a esto:

Imagen 3.- Extracción de coordenadas
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:
Imagen 4.- Extracción de coordenadas Wi-Fi
El código de los scripts….
GetCoords.py
01#Horrible Script para extraer las coordenadas del fichero Consolidated.db
02#El fichero se encuentra en el directorio private/var/root/Library/Caches/locationd
03#Horriblemente codeado por Silverhack
04import sys, sqlite3
05from PyMaps import Map, PyMap
06# Creamos un mapa
07NewMap = Map()
08NewMap.zoom = 3
09connection = sqlite3.connect("consolidated.db")
10cursor=connection.cursor()
11cursor.execute("SELECT Latitude,Longitude from CellLocation")
12for row in cursor:
13 print "La latitud es %s, y la longitud es %s" % (str(row[0]),str(row[1]))
14 </p>
15     # Latitud y longitud
16     # Importamos de la BD consolidated a las variables
17     # que posteriormente pasaremos al Script PyMaps
18 
19 latitud= str(row[0])
20 longitud = str(row[1])
21 
22  # Insertamos codigo html
23 pointhtml = "I see you..."
24 
25     # Anyadimos el punto al mapa
26 point = (latitud, longitud, pointhtml)
27 
28 NewMap.setpoint(point)
29 gmap = PyMap(key="clave", maplist=[NewMap])
30 
31 mapcode = gmap.pymapjs()
32showhtml = gmap.showhtml()
33print showhtml
34file = open('Coordenadas.html', 'w')
35file.writelines(showhtml)
36# Cerramos el fichero
37file.close()
GetWifi.py
01#Horrible Script para extraer las coordenadas WIFI junto con su MAC del fichero Consolidated.db
02#El fichero se encuentra en el directorio private/var/root/Library/Caches/locationd
03#Horriblemente codeado por Silverhack
04import sys, sqlite3
05from PyMaps import Map, PyMap
06# Creamos un mapa
07NewMap = Map()
08NewMap.zoom = 3
09connection = sqlite3.connect("consolidated.db")
10cursor=connection.cursor()
11cursor.execute("SELECT MAC, Latitude, Longitude from WifiLocation")
12for row in cursor:
13 print "La MAC es %s, La latitud es %s, y la longitud es %s" % (str(row[0]),str(row[1]),str(row[2]))
14  
15 
16     # Latitud y longitud
17     # Importamos de la BD consolidated a las variables
18     # que posteriormente pasaremos al Script PyMaps
19 
20 latitud= str(row[1])
21 longitud = str(row[2])
22 
23  # Insertamos codigo html
24 pointhtml = str(row[0])
25 
26     # Anyadimos el punto al mapa
27 point = (latitud, longitud, pointhtml)
28 
29 NewMap.setpoint(point)
30 gmap = PyMap(key="clave", maplist=[NewMap])
31 
32 mapcode = gmap.pymapjs()
33showhtml = gmap.showhtml()
34print showhtml
35file = open('WiFi.html', 'w')
36file.writelines(showhtml)
37# Cerramos el fichero
38file.close()
 Para la ejecución de los scripts, tan sólo tendremos que utilizar Python 2.6 y pysqlite.
Saludos!

AGRADECIMIENTOS TOTALES A:

http://windowstips.wordpress.com/

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay