
Volcador de caché del servicio de ubicación de Android
Tras la indignación/sobrerreacción de los últimos días en internet ante la revelación de que el iPhone tiene una caché para su servicio de localización, decidí echar un vistazo a lo que mis dispositivos Android almacenan en caché para la misma función.
Este es un volcador rápido que armé para analizar los archivos del proveedor de ubicación de Android.
Los archivos se llaman cache.cell y cache.wifi y se encuentran en /data/data/com.google.android.location/files en el dispositivo Android.
Necesitarás acceso root al dispositivo para leer este directorio.
Cómo deshabilitarlo:
Busca Ajustes -> Ubicación y seguridad -> Usar redes inalámbricas y desmárcalo.
Esto elimina los archivos en dispositivos 2.3, mi dispositivo 2.2 conserva los archivos pero deja de actualizarlos. Otras versiones son desconocidas en este momento.
Uso:
$ parse.py <cache file>
También puedes pasar la opción --gpx para obtener la salida en formato GPX, luego usa gpsbabel o algo para obtener los datos en el formato que prefieras:
$ parse.py --gpx cache.wifi > wifi.gpx
Nota importante: mirando el antiguo código fuente de Android (parece que Google ya no lo mantiene abierto) parece estar muy limitado.
Sin embargo, los datos solo se podan cuando se añade información nueva. No hay poda basada en tiempo a menos que se añadan nuevos datos a la caché. Esto podría llevar a que haya datos antiguos si el dispositivo tiene poco movimiento.
// Maximum time (in millis) that a record is valid for, before it needs
// to be refreshed from the server.
private static final long MAX_CELL_REFRESH_RECORD_AGE = 12 * 60 * 60 * 1000; // 12 hours
private static final long MAX_WIFI_REFRESH_RECORD_AGE = 48 * 60 * 60 * 1000; // 48 hours
// Cache sizes
private static final int MAX_CELL_RECORDS = 50;
private static final int MAX_WIFI_RECORDS = 200;
Ejemplo de salida:
$ ./parse.py cache.wifi
db version: 1
total: 47
key accuracy conf. latitude longitude time
50:63:13:57:42:7e 80 92 57.689354 11.994763 04/11/11 10:03:51 +0200
e0:cb:4e:7e:cc:53 75 92 57.689340 11.994495 04/11/11 10:03:51 +0200
4c:54:99:14:47:68 57 92 57.708979 11.916581 04/11/11 01:14:53 +0200
00:26:18:0a:ad:cb 60 92 57.709699 11.917637 04/13/11 08:40:36 +0200
00:22:15:28:3f:7a 60 92 57.699467 11.979340 04/13/11 11:52:16 +0200
00:22:3f:a7:d9:fd 65 92 57.699442 11.979343 04/13/11 11:52:16 +0200
$ ./parse.py cache.cell
db version: 1
total: 41
key accuracy conf. latitude longitude time
240:5:15:983885 1186 75 57.704031 11.910801 04/11/11 20:03:14 +0200
240:5:15:983882 883 75 57.706322 11.911692 04/13/11 01:41:29 +0200
240:5:75:4915956 678 75 57.700175 11.976824 04/13/11 11:52:16 +0200
240:5:75:4915953 678 75 57.700064 11.976629 04/13/11 11:53:09 +0200
240:7:61954:58929 1406 75 57.710205 11.921849 04/15/11 19:46:31 +0200
240:7:15:58929 -1 0 0.000000 0.000000 04/15/11 19:46:32 +0200
240:5:75:4915832 831 75 57.690024 11.998419 04/15/11 16:13:53 +0200
Si tienes alguna pregunta o información que te gustaría compartir, puedes contactarme en [email protected]