Malheureusement, en se connectant sur le site rechargercommandernavigo.fr, mon système d'exploitation n'est pas supporté. Et pour cause, seul Windows et MacOS sont supportés. Que se passe-t-il en changeant mon user-agent ? La configuration a l'air d'être bonne ! En cliquant sur continuer, ça coince un peu. Message d'erreur, mon lecteur n'est pas connecté. Dommage, ça aurait pu fonctionner. Mais il est hors de question que je baisse les bras.
Reverse-engineering
Si les pré-requis sont bons, il doit y avoir un applet java qui se cache dans ma page. Effectivement :
<iframe id="applet" src="applet.jsp" width="1px"
height="1px" frameborder="0"></iframe>
A priori, le javascript situé dans carte.js communique avec l'applet, qui communique avec le lecteur de cartes.
Et si on décompilait le jar (RITMxAppletCardClient.jar) ? En utilisant l'excellent JD-GUI, j'ai appris que l'API utilisée pour communiquer est javax.smartcardio. Vraisemblablement, le problème se situe sur mon système. En utilisant le code de l'applet (qui d'ailleurs est très proche des exemples de code pour SmartCardIO) suivant et en le compilant :
TerminalFactory factory = TerminalFactory.getDefault(); List terminals = factory.terminals().list(); for (CardTerminal aTerminal : terminals) { System.out.println(aTerminal); }
Je me rends compte qu'aucun lecteur n'est détecté. Je cherche dans la documentation de SmartCardIO ce qu'il me manque : les librairies pour accéder au lecteur de carte !
Installation de PC/SC
J'installe via pacman (pour ArchLinux) : pcsc-tools et pcsclite (ou pour ubuntu, pcscd libpcsclite1 pcsc-tools). Il faut ensuite lancer le démon pcscd, et vérifier avec pcsc_scan que le lecteur est correctement détecté.PC/SC device scanner V 1.4.20 (c) 2001-2011, Ludovic RousseauCompiled with PC/SC lite version: 1.8.3 Using reader plug'n play mechanism Scanning present readers... 0: Alcor Micro SCR001 00 00 Mon Nov 19 16:48:52 2012 Reader 0: Alcor Micro SCR001 00 00 Card state: Card removed, Mon Nov 19 16:48:56 2012 Reader 0: Alcor Micro SCR001 00 00 Card state: Card inserted, ATR: 3B XX XX XX XX ATR: 3B 6F XX XX ... + TS = 3B --> Direct Convention + T0 = 6F, Y(1): 0110, K: 15 (historical bytes) TB(1) = 00 --> VPP is not electrically connected TC(1) = 00 --> Extra guard time: 0 + Historical bytes: 80 XX XX XX XX Category indicator byte: 80 (compact TLV data object) Tag: 5, len: A (card issuer's data) Card issuer data: 08 XX XX XX Tag: 8, len: 2 (status indicator) SW: 9000 Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): .. 3B 6F 00 00 80 5A .. 0[1-5] .. .. .. .. .. .. .. .. 82 90 00 Card supporting a Calypso application Rev 1 Typically: French "Navigo" transport card
En revanche, l'applet ne fonctionne toujours pas ! C'est un bug connu dans les distributions (ou dans java, tout dépend du point de vue !), qui va chercher les librairies au mauvais endroit :
SunPCSC accesses the PC/SC stack via theIl ne reste plus qu'à trouver la librairielibpcsclite.so
library. It looks for this library in the directories/usr/$LIBISA
and/usr/local/$LIBISA
, where$LIBISA
is expanded tolib
on 32-bit platforms,lib/64
on 64-bit Solaris platforms, andlib64
on 64-bit Linux platforms.
libpcsclite.so
et faire un lien symbolique au bon endroit. Pour Archlinux :$ sudo mkdir /usr/local/lib64
$ cd /usr/local/lib64
$ sudo ln -s /usr/lib/libpcsclite.so.1 libpcsclite.so
Retour sur le site navigo :
Marchi!
ReplyDeletebonjour,
ReplyDeletepour les novices, est ce qu'il y a un mode d'emploi abrégé et plus compréhensible ? J'ai linux sur mon pc HP et un chargeur navigo sans savoir quoi en faire finalement...
Merci d'avance !
Hello,
ReplyDeleteMon article était plus un "proof of concept" pour signaler que la Ratp aurait aussi pu fournir le support de linux assez facilement.
Ca m'a en plus permis de comprendre comment fonctionne les smartcards dans java. Mais au final, c'est beaucoup de bidouille pour recharger, et du coup, j'utilise mon mac :)
Donc une méthode pour les novices, a part installer windows...
Salut, la méthode du user agent switch n'a plus l'air de fonctionner sur le nouveau site rechargercommandernavigo.fr ? Une idée?
ReplyDeleteEn revanche mon lecteur Alcor Micro AU9520 est bien reconnu mais j'ai du installer les dernières versions de pcsc, celles fourni pour Ubuntu 12.04 sont obsolètes (depuis http://packages.debian.org/wheezy/ )
Trop top, merci ! Effectivement rien d'insurmontable. Je n'ai pas vérifié si le lien symbolique était réellement nécessaire, je l'ai créé sans trop me poser de questions.
ReplyDeletePour info, par rapport au commentaire d'au dessus, je n'ai eu aucun souci sous chromium avec l'extension "chromium UA spoofer"
testé sous Debian wheezy
How to make money from online casino games
ReplyDeleteOnline casino bonuses and promotions There are a variety หาเงินออนไลน์ of different 1xbet korean bonuses offered to help you deccasino win money online and in real money. You can get
No Deposit Bonus Casinos 2021 - Win Real Money at US
ReplyDeleteWe list https://vannienailor4166blog.blogspot.com/ 10 best online gri-go.com casinos https://jancasino.com/review/merit-casino/ with no deposit bonuses in the US. Find wooricasinos.info the best USA no deposit bonus codes and get your free spins