Bonjour à tous,
Je dois pouvoir lire et écrire des infos sur des cartes à puce de type Siemens SLE 4432/4442 répondant aux normes ISO 7816 à partir d'un lecteur série répondant aux mêmes normes.
Je n'ai aucune doc concernant le lecteur (le cd qui va avec est gentiment retiré d'office par le fournisseur et pas moyen de contacter le constructeur en Chine).
Voici mon problème :
lors de l'envois/réception de trames vers le/du lecteur, le dernier octet correspond à un cheksum ou un crc8 que je n'arrive pas à calculer.
J'ai essayé les algorithmes de modulos 256, crc8 etc sans trouver.
J'espère qu'en donnant des exemples de trames, quelqu'un pourra m'aider à comprendre quel algoritme est utilisé pour calculer le dernier octet envoyé ou reçu (a mon avis, cela doit correspondre à des normes d'autres lecteurs plus connus).
voici des exemples de trames envoyées au lecteur:
en orange : le nombre d'octets envoyés après (sans l'octet final)
en bleu : le nombre d'octets de données attendus dans la réponse
en rouge : l'octet de vérification (cheksum ou autre)
AA B0 00 07 80 00 00 00 00 00 0A 97
Si dans cette trame je change la valeur bleue et rouge de la manière suivante (-2), celà fonctionne et je reçois bien 2 caractères en moins dans la réponse.
AA B0 00 07 80 00 00 00 00 00 08 95
autres exemple de trames qui fonctionnent :
AA 61 00 07 77 00 00 00 20 00 10 8B
AA 61 00 07 77 00 00 00 30 00 30 BB
AA 61 00 07 77 00 00 00 2E 00 01 94
par contre, une mauvaise trame envoyée au lecteur me renvoye comme réponse une trame dont le dernier octet peut-être calculer sur base d'un checksum modulo 256:
55 8A 00 00 DF
(55+8A) mod 256 = DF un hasard ?
J'espère que quelqu'un pourra m'éclairer sur le sujet parce que je ne sait plus par ou chercher.
Merci d'avance.
Partager