27 mayo 2011

El archivo de localización "cells.plist" de IOS3

Pese a que el tema de la localización que se publicó hace unos meses en IOS4 ya está un poco trillado. He querido portar el script de juanito para las versiones anteriores y de las que no se ha hablado tanto, además creo que no hay ninguna aplicación que lo haga hasta la fecha.

La diferencia principal entre los teléfonos con IOS4 (iPhone 3GS o iPhone 4) y los que llevan versiones IOS3 es que este fichero no se almacena en el ordenador cuando se realiza una copia de seguridad de iTunes, además de no estar accesible para el usuario si el móvil no tiene jailbreak.

En la nueva versión este fichero de tipo binario "plist", pasó de ser "/private/var/root/Library/Caches/locationd/cells.plist" al sqllite de nombre "consolidated.db".

El script en cuestión, para el que hace falta tener biplist y pymaps instalado:

from biplist import *
from PyMaps import Map, PyMap
from datetime import datetime
NewMap = Map()
NewMap.zoom = 3
try:
    plist = readPlist("cells.plist")
    for v in plist.values():
        print v
        a, latitud, longitud, d, f, appledate = v.split(",")
        appledate = int(float(appledate))
        tstamp = appledate + 978307200
        tstamp = str(datetime.fromtimestamp(int(tstamp)))
        pointhtml = tstamp
        point = (latitud, longitud, pointhtml)
        print "La lat es %s, y la long es %s el dia %s" % (latitud,longitud,tstamp)
        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)
    file.close()
except (InvalidPlistException, NotBinaryPlistException), e:
    print "Not a plist:", e


El resultado es muy poco fiable, ya que este trazado me pertenece a mí y ahí se marcan sitios que no he visitado (15km de error):


2 comments :

silverhack dijo...

Muy pero que muy guapo alex!
Y no conocía la extensión biplist para python!!
Gracias!

Alejandro Ramos dijo...

Muchas gracias Silvi!!