iPhone, l'espion

Publié le par Kurisutofu

 

Bonjour,

 

Ça fait un bon moment que j'ai pas donné de nouvelles et je m'en excuse!

 

Pour me faire pardonner, voici mon premier article technique … youhou!

 

Si vous n'avez pas lu, je vous apprend donc que des chercheurs ont remarqué que l'iPhone enregistrait vos coordonnées géographiques, ou plutôt, la position des tours de téléphonie cellulaire.

Tout cela est apparemment fait pour vous fournir la localisation GPS plus rapidement.

 

Tout les téléphones le font, ce n'est pas un problème car les données enregistrées sont cryptées … enfin, sauf sur l'iPhone … Et pire, quand vous synchronisez l'iPhone au PC, iTunes garde une copie de ces données!

 

Alors qu'est-ce que ca veut dire?

Eh bien disons que madame suspecte que monsieur la trompe et veut savoir où il était, il lui suffit de trouver le fichier de base de données de l'iPhone de son cher et tendre et elle a toute les coordonnées.

Enfin, plusieurs problèmes se posent à elle; Où est le fichier? Comment lire la base de données? Comment interpréter ces données?

 

Si vous possédez un mac, c'est facile, il vous suffit de télécharger le programme que les chercheurs on créé à cette adresse:

https://github.com/petewarden/iPhoneTracker

 

Pour ceux qui n'ont pas de mac, vous pouvez attendre que quelqu'un adapte le logiciel (j'ai pas le temps sinon je vous l'aurais fait;-)) ou bien, plus amusant, vous prenez les choses en mains!

 

C'est l'objet de cet article.

 

Où est le fichier?

Il y a deux façon de le récupérer, sur le PC ou sur l'iPhone.

N'ayant pas accès au PC pour le moment, je vais vous décrire comment accéder au fichier sur l'iPhone, mais pour cela, il vous faut un iPhone «jailbreaké».

 

Pour localiser le fichier, j'ai utilisé l'application iFile qui est un explorateur de fichier.

Le fichier se trouve dans le répertoire /var/root/Library/Caches/locationd et se nomme consolidated.db.

 

Avec iFile, vous pouvez créer votre serveur web que vous pourrez ensuite accéder depuis votre navigateur internet. Pour cela, vous devrez être sur le même réseau wifi.

 

Voici le fichier dans iFile :

ifile.png

Dans iFile, cliquer sur l'icône représentant le wifi (deuxième en partant de la gauche, en bas):

serveurWeb-copie-1.png

Voilà votre serveur web lancé.

 

Vous avez donc le serveur en place, il nous reste plus qu'a y accéder dans le navigateur internet.

On peut voir tout à la fin que l'adresse de mon serveur est 192.168.1.28 et le port est 10000. Votre adresse sera surement différente.

C'est exactement ces informations que l'on va mettre dans la barre d'adresse du navigateur internet :

webserverHome

Rendez-vous dans le bon répertoire  /var/root/Library/Caches/locationd

webserveurNavigate

Vous pouvez voir dans la liste le fichier consolidated.db, cliquez dessus et enregistrez-le où vous le souhaitez.

 

Voilà, nous avons récupéré le fichier.

 

Comment lire la base de données?

Le fichier que l'on vient de récupérer est une base données sqllite. Il nous faut donc un logiciel pour l'ouvrir et naviguer dedans pour en lire les données.

Je suis actuellement sur une machine Linux et j'utilise le logiciel Sqliteman.

Sur windows, vous pouvez utiliser des logiciel comme sqlitebrowser http://sourceforge.net/projects/sqlitebrowser/.

Ce qu'il vous faut est un explorateur de base de données sqlite, cherchez sur google.

 

Mes captures d'écrans seront fait sur Sqliteman mais le principe est le même pour les autres logiciel.

open

Après installation de votre logiciel, ouvrez-le et choisissez ouvrir. Sélectionnez le fichier que l'on vient de télécharger.

 

Nous avons ouvert la base de données, maintenant il faut en extraire les informations.

open

Une base de données, pour ceux qui ne connaissent pas est composée de tables contenant des données spécifiques. Par exemple, la table client contiendrait des informations sur les clients de l'entreprise avec leur nom, adresse, téléphone etc … Où nom, adresse et téléphone sont des champs (ou colonne) de la table.

Ici, les tables qui nous intéressent sont celllocation (position des tours cellulaires), wifilocation (position des bornes wifi), cdmacelllocation (position des tours cellulaires CDMA) et leur versions locales celllocationlocal et cdmacelllocationlocal.

 

Pour ceux qui connaissent le maniement des bases de données, vous pourrais voir que ces tables contiennent les champs Timestamp, Longitude et Latitude. Pour les autres, je vous l'apprend:-)

Ne vous inquiétez pas, il n'est pas nécessaire de savoir voir la liste des champs pour retrouver nos informations, puisque maintenant que je vous l'ai dit, vous les connaissez.

 

Timestamp représente la date et heure en nombre secondes écoulées depuis Janvier 2001 (je l'ai su en regardant le code source de l'application crée par les chercheurs). Pour sqllite, nous devons baser le temps écoulé depuis Janvier 1970 donc nous devons ajouter la différence qui est de 978307200 secondes, si l'on en croit le site http://calendarhome.com.

 

Latitude et Longitude sont assez facile à comprendre.

 

Nous savons ce que nous voulons, il nous faut le demander à la base de données.

Dans le logiciel, nous pouvons exécuter des commandes en langage SQL. Je ne sais pas quel logiciel vous utiliserez donc je vous laisse le soins de trouver où vous devais taper les commandes.

Pour moi, comme vu sur l'image ci-dessous, c'est facile, c'est le grand champs blanc.

 

Voici la commande à exécuter pour avoir les données :

 

SELECT distinct 'Cell' as 'Type',

datetime(Timestamp+(978307200), 'unixepoch', 'localtime') as 'date',

Latitude || ', ' || Longitude as coordinates

from celllocation

union all

SELECT distinct 'Wifi',

datetime(Timestamp+(978307200), 'unixepoch', 'localtime') as 'date',

Latitude || ', ' || Longitude as coordinates

from wifilocation

union all

SELECT distinct 'Local Cell',

datetime(Timestamp+(978307200), 'unixepoch', 'localtime') as 'date',

Latitude || ', ' || Longitude as coordinates

from celllocationlocal

union all

SELECT distinct 'CDMA Cell',

datetime(Timestamp+(978307200), 'unixepoch', 'localtime') as 'date',

Latitude || ', ' || Longitude as coordinates

from cdmacelllocation

union all

SELECT distinct 'local CDMA Cell',

datetime(Timestamp+(978307200), 'unixepoch', 'localtime') as 'date',

Latitude || ', ' || Longitude as coordinates

from cdmacelllocationlocal

order by date

 

Si vous souhaitez voir les données dans l'ordre décroissant, remplacez

order by date

par

order by date desc

 

Exécutez la commande et voici vous devriez avoir une liste comme ci-dessous.

results

 

Comment interpréter les données ?

Nous avons maintenant une liste de date avec les coordonnées géographiques, mais comment où se trouvent ces endroit?

resultOnly

Il vous suffit juste de copier les coordonnées dans google map !

gmap

Vous ne pouvez y mettre qu'une coordonnée à la fois. Il y a plusieurs façons de faire le tout à la fois mais je n'ai pas encore essayé donc on va s'arrêter là;-)

 

Amusez-vous bien!

 

Kurisutofu.

 

Publié dans Technique

Commenter cet article