
Dump du cache du service de localisation Android
Suite à l'indignation/réaction excessive sur Internet ces derniers jours concernant la révélation que l'iPhone dispose d'un cache pour son service de localisation, j'ai décidé de voir ce que mes appareils Android mettent en cache pour la même fonction.
Ceci est un extracteur rapide que j'ai bricolé pour analyser les fichiers du fournisseur de localisation Android.
Les fichiers sont nommés cache.cell et cache.wifi et se trouvent dans
/data/data/com.google.android.location/files sur l'appareil Android.
Vous aurez besoin d'un accès root à l'appareil pour lire ce répertoire.
Comment le désactiver :
Allez dans Paramètres -> Localisation et sécurité -> Utiliser les réseaux sans fil et décochez l'option.
Cela supprime les fichiers sur les appareils 2.3, mon appareil 2.2 conserve les fichiers mais cesse de les mettre à jour. Les autres versions sont inconnues pour le moment.
Utilisation :
$ parse.py <cache file>
Vous pouvez également passer l'option --gpx pour obtenir une sortie au format
GPX, puis utiliser gpsbabel ou un autre outil pour convertir les données dans le
format de votre choix :
$ parse.py --gpx cache.wifi > wifi.gpx
Remarque importante : en regardant l'ancien code source Android (ce code ne semble plus être ouvert par Google), il semble être fortement limité.
Cependant, les données ne sont purgées que lorsque de nouvelles informations sont ajoutées. Il n'y a pas de purge basée sur le temps, sauf si de nouvelles données sont ajoutées au cache. Cela pourrait laisser d'anciennes données si l'appareil a des mouvements limités.
// 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;
Exemple de sortie :
$ ./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 vous avez des questions ou des informations à partager, je suis joignable à [email protected]