Lire le contenu caché d’un Pass Navigo sur un Mac

La semaine dernière, j’expliquais comment charger un Pass Navigo en USB sur un Mac. C’est une application RATP, ils vendent le lecteur pas trop cher (7 €) et ça marche assez bien. Mais si on allait voir ce qu’il y a exactement dans le Pass ?

Les Pass Navigo sont basés sur une technologie assez classique, Calypso (utilisée aussi en Belgique à Bruxelles). Et il est donc possible de lire ce que la carte enregistre assez facilement. Si le Mobib belge enregistre des données sensibles (genre le nom, etc.), le Pass Navigo franciliens se contente de choses comme le type de Pass (ici un Intégrale) et les dernières stations validées (en théorie les trois dernières, dans mon cas, j’en ai quatre, dont une ancienne).

Navigo Intégral

Navigo Intégrale

Comment lire le Pass Navigo ?

Il y a quelques années, j’avais utilisé un site Internet qui permet de lire le contenu de la carte. Le site a disparu, mais le programme existe toujours. Il va donc falloir un lecteur de cartes, un serveur Web à la maison (on va supposer Mac OS X si vous êtes ici) et… c’est tout.

Première chose, activer Apache sous Mac OS X. Sous Lion ou Mountain Lion (sans la version Serveur), une simple commande suffit.

sudo apachectl start

Ensuite, on va télécharger Smart Tools sur github et on place le dossier atr dans Library/WebServer/Documents (toujours sous Lion/Mountain Lion, sous Snow Leopard, dans ~/Site).

Quand c’est fait, on lance un navigateur (dans mon cas Firefox) et on va à l’adresse http://localhost/atr/.

Le navigateur va vouloir installer un plug-in pour lire la carte, SConnect. Il vient de chez Gemalto (spécialiste des cartes à puce) et est normalement fiable.

La raison pour laquelle l’outil n’est pas en ligne est simple : SConnect ne fonctionne que si le site a un certificat SSL valide (i.e. accessible en https), ça évite en partie les soucis de sécurité… En local, ça fonctionne directement.

Une fois que c’est lancé, le lecteur doit apparaître dans la colonne de gauche, il suffit de cliquer dessus.

Le lecteur est reconnu

Le lecteur est reconnu

Un onglet Calypso Explorer s’ouvre, et il suffit d’explorer les valeurs. On trouve un peu de tout, dont notamment les heures des dernières validations (et souvent la ligne associée, ainsi que la gare).

Les trois dernières validations

Les trois dernières validations

Une vieille validation encore stockée

Une vieille validation encore stockée

C’est un code qui est utilisé pour identifier ligne et gare, mais en cherchant un peu, ça se trouve assez facilement. Une partie est par exemple disponible directement dans les Smart Tools. Pour la ligne, la valeur en hexa est juste le numéro de la ligne, en tout cas pour les métros.

Pour découvrir la gare de validation, c’est un peu compliqué. Premièrement, il faut récupérer la valeur EventLocationID. Dans notre cas, en hexadécimal, 0x1a70. On va ensuite la convertir en binaire, ce qui donne 0001 1010 0111 0000.

Les deux premiers bits ne servent pas. Les cinq suivants (01101) indiquent le code de la zone. En décimal, c’est donc le secteur 13. Les cinq suivants (00111) indiquent le code de la gare, ici la gare 7.

Maintenant, il suffit d’aller chercher sur un site qui répertorie les gares de métro pour découvrir que la gare 13-07 est Bercy sur la ligne 14.

Le calcul marche avec les lignes de métro, mais je ne connais pas le codage des gares SNCF ou celles de la RATP (et je n’ai pas cherché outre mesure). Ca doit se trouver en cherchant un peu, vu que le codage utilisé est a priori le même que celui utilisé sur les tickets de métro.