La suite de l’article d’introduction sur la réalisation d’un espion pour carte à puce.
Afin de rendre les choses plus explicites on commence par un petit schéma :
Le micro-contrôleur va lire les niveaux logiques qui circulent sur les entrées/sorties de la carte à puce. Pour cela il est nécessaire d’utiliser une rallonge. La construction de cette rallonge est décrite dans l’article précèdent :
Plus tard, une interface de lecture, pour les humains, sera développée avec un écran LCD. Au cous du développement, nous aurons besoin de réaliser des transactions. Cette article va traiter de la mise en place de l’environnement de test et de la lecture des données d’une carte bancaire.
Notez que nous utilisons une carte bancaire mais que ceci aurait pu marcher avec n’importe quelle autre carte à puce.
Lecteur de carte à puce
Afin de dialoguer avec la carte à puce, nous utiliserons un lecteur de carte à puce de type PC/SC. Ces lecteurs sont des lecteurs pour PC qui se connectent en USB. Il existe des librairies pour faciliter l’utilisation de ces lecteurs en Java. J’ai acheté le mien sur le site de Monéo : Boutique Moneo
une fois branché, il est nécessaire d’installer les drivers du lecteur. Pour ma Debian cela donne ça :
$:sudo apt-get install libpcsclite1 $:sudo apt-get install libacsccid1 $:sudo apt-get install pcsc-tools |
Pour vérifier que l’installation s’est bien déroulée, on insère une carte dans notre lecteur et on le lance dans un terminal :
$pcsc_scan PC/SC device scanner V 1.4.18 (c) 2001-2011, Ludovic Rousseau Compiled with PC/SC lite version: 1.7.4 Using reader plug'n play mechanism Scanning present readers... 0: ACS ACR 38U-CCID 00 00 Mon Jun 11 20:03:00 2012 Reader 0: ACS ACR 38U-CCID 00 00 Card state: Card inserted, ATR: 3F 65 25 08 66 04 6C 90 00 ATR: 3F 65 25 08 66 04 6C 90 00 + TS = 3F --> Inverse Convention + T0 = 65, Y(1): 0110, K: 5 (historical bytes) TB(1) = 25 --> Programming Param P: 5 Volts, I: 1 milliamperes TC(1) = 08 --> Extra guard time: 8 + Historical bytes: 66 04 6C 90 00 Category indicator byte: 66 (proprietary format) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3F 65 25 08 66 04 6C 90 00 3F 65 25 .. .. 04 6C 90 .0 Carte Bancaire (Frenc |
Si vous recevez une réponse du type, alors le driver pcsc est correctement installé.
Analyse de la réponse
L’ATR (Answer to reset) provient de la carte et nous indique quel protocole doit être utilisé aussi bien en terme de durée d’un caractère que de signification d’un niveau logique. Nous y reviendrons plus en détails lorsqu’il s’agira de programmer notre espion puisqu’il devra se caler sur le rythme de la transaction.
Dans le prochain article nous parlerons de l’échantillonnage à proprement parlé et nous montrerons comment se synchroniser avec les données de la carte.
Si vous souhaitez reproduire les échanges de l’article http://oversimple.fr/que-trouve-t-on-dans-une-carte-bancaire/ vous pouvez utiliser le programme gscriptor présent dans le paquetage pcsc-tool que vous venez de télécharger.
It’s oversimple, isn’t it?