Après la réinitialisation, la communication entre le terminal et la carte fonctionne avec les APDU (Application Protocol Data Unit).

Voici un tableau regroupant les réponses APDU avec leur description pour le traitement EMV :

Types de réponse APDU:

  • (I) Info
  • (W) Warning
  • (E) Error 
  • (S) Security 
SW1SW2Type de réponseInfo (EN)Info (FR)
6EClass not supported.Classe non prise en charge.
61IResponse bytes still availableOctets de réponse toujours disponibles
61XXICommand successfully executed; ‘XX’ bytes of data are available and can be requested using GET RESPONSE.Commande exécutée avec succès; «XX» octets de données sont disponibles et peuvent être demandés à l'aide de GET RESPONSE.
62WState of non-volatile memory unchangedÉtat de la mémoire non volatile inchangé
620WNo information given (NV-Ram not changed)Aucune information donnée (NV-Ram non modifié)
621WNV-Ram not changed 1.NV-Ram non modifié 1.
6281WPart of returned data may be corruptedUne partie des données renvoyées peut être corrompue
6282WEnd of file/record reached before reading Le bytesFin de fichier / enregistrement atteinte avant la lecture de Le bytes
6283WSelected file invalidatedFichier sélectionné invalidé
6284WSelected file is not valid. FCI not formated according to ISOLe fichier sélectionné n'est pas valide. FCI non formaté selon ISO
6285WNo input data available from a sensor on the card. No Purse Engine enslaved for R3bcAucune donnée d'entrée disponible à partir d'un capteur sur la carte. Aucun moteur de bourse asservi pour R3bc
62A2WWrong R-MACMauvais R-MAC
62A4WCard locked (during reset( ))Carte verrouillée (pendant la réinitialisation ())
62CXWCounter with value x (command dependent)Compteur avec valeur x (dépendant de la commande)
62F1WWrong C-MACMauvais C-MAC
62F3WInternal resetRéinitialisation interne
62F5WDefault agent lockedAgent par défaut verrouillé
62F7WCardholder lockedTitulaire de la carte verrouillé
62F8WBasement is current agentLe sous-sol est l'agent actuel
62F9WCALC Key Set not unblockedJeu de clés CALC non débloqué
62FXW-
62XXWRFURFU
63WState of non-volatile memory changedL'état de la mémoire non volatile a changé
630WNo information given (NV-Ram changed)Aucune information donnée (NV-Ram changé)
6381WFile filled up by the last write. Loading/updating is not allowed.Fichier rempli par la dernière écriture. Le chargement / la mise à jour n'est pas autorisé.
6382WCard key not supported.Clé de carte non prise en charge.
6383WReader key not supported.Clé de lecteur non prise en charge.
6384WPlaintext transmission not supported.La transmission en texte brut n'est pas prise en charge.
6385WSecured transmission not supported.La transmission sécurisée n'est pas prise en charge.
6386WVolatile memory is not available.La mémoire volatile n'est pas disponible.
6387WNon-volatile memory is not available.La mémoire non volatile n'est pas disponible.
6388WKey number not valid.Numéro de clé non valide.
6389WKey length is not correct.La longueur de clé n'est pas correcte.
63C0WVerify fail, no try left.Vérifiez l'échec, aucun essai n'est laissé.
63C1WVerify fail, 1 try left.Vérifiez l'échec, 1 essai à gauche.
63C2WVerify fail, 2 tries left.Vérifiez l'échec, il reste 2 essais.
63C3WVerify fail, 3 tries left.Vérifiez l'échec, il reste 3 essais.
63CXWThe counter has reached the value ‘x’ (0 = x = 15) (command dependent).Le compteur a atteint la valeur 'x' (0 = x = 15) (en fonction de la commande).
63F1WMore data expected.Plus de données attendues.
63F2WMore data expected and proactive command pending.Plus de données attendues et commande proactive en attente.
63FXW-
63XXWRFURFU
64EState of non-volatile memory unchangedÉtat de la mémoire non volatile inchangé
640ENo information given (NV-Ram not changed)Aucune information donnée (NV-Ram non modifié)
641ECommand timeout. Immediate response required by the card.Délai d'expiration de la commande. Réponse immédiate requise par la carte.
64XXERFURFU
65EState of non-volatile memory changedL'état de la mémoire non volatile a changé
650ENo information givenAucune information donnée
651EWrite error. Memory failure. There have been problems in writing or reading the EEPROM. Other hardware problems may also bring this error.Erreur d'écriture. Panne de mémoire. Il y a eu des problèmes d'écriture ou de lecture de l'EEPROM. D'autres problèmes matériels peuvent également entraîner cette erreur.
6581EMemory failurePanne de mémoire
65FXE-
65XXERFURFU
66S
660SError while receiving (timeout)Erreur lors de la réception (délai d'attente)
661SError while receiving (character parity error)Erreur lors de la réception (erreur de parité des caractères)
662SWrong checksumSomme de contrôle incorrecte
663SThe current DF file without FCILe fichier DF actuel sans FCI
664SNo SF or KF under the current DFAucun SF ou KF sous le DF actuel
6669SIncorrect Encryption/Decryption PaddingRembourrage de chiffrement / déchiffrement incorrect
66XXS-
67E
670EWrong lengthMauvaise longueur
67XXElength incorrect (procedure)(ISO 7816-3)longueur incorrecte (procédure) (ISO 7816-3)
68EFunctions in CLA not supportedFonctions dans CLA non prises en charge
680ENo information given (The request function is not supported by the card)Aucune information fournie (la fonction de demande n'est pas prise en charge par la carte)
6881ELogical channel not supportedCanal logique non pris en charge
6882ESecure messaging not supportedMessagerie sécurisée non prise en charge
6883ELast command of the chain expectedDernière commande de la chaîne attendue
6884ECommand chaining not supportedChaînage de commandes non pris en charge
68FXE-
68XXERFURFU
69ECommand not allowedCommande non autorisée
690ENo information given (Command not allowed)Aucune information donnée (commande non autorisée)
691ECommand not accepted (inactive state)Commande non acceptée (état inactif)
6981ECommand incompatible with file structureCommande incompatible avec la structure des fichiers
6982ESecurity condition not satisfied.Condition de sécurité non satisfaite.
6983EAuthentication method blockedMéthode d'authentification bloquée
6984EReferenced data reversibly blocked (invalidated)Données référencées bloquées de manière réversible (invalidées)
6985EConditions of use not satisfied.Conditions d'utilisation non satisfaites.
6986ECommand not allowed (no current EF)Commande non autorisée (pas d'EF actuel)
6987EExpected secure messaging (SM) object missingObjet de messagerie sécurisée (SM) attendu manquant
6988EIncorrect secure messaging (SM) data objectObjet de données de messagerie sécurisée (SM) incorrect
698DReservedRéservé
6996EData must be updated againLes données doivent être mises à jour à nouveau
69E1EPOL1 of the currently Enabled Profile prevents this action.POL1 du profil actuellement activé empêche cette action.
69F0EPermission DeniedPermission refusée
69F1EPermission Denied – Missing PrivilegeAutorisation refusée - Privilège manquant
69FXE-
69XXERFURFU
6AEWrong parameter(s) P1-P2Mauvais paramètre (s) P1-P2
6A0ENo information given (Bytes P1 and/or P2 are incorrect)Aucune information donnée (les octets P1 et / ou P2 sont incorrects)
6A80EThe parameters in the data field are incorrect.Les paramètres du champ de données sont incorrects.
6A81EFunction not supportedFonction non prise en charge
6A82EFile not foundFichier non trouvé
6A83ERecord not foundEnregistrement non trouvé
6A84EThere is insufficient memory space in record or fileL'espace mémoire est insuffisant dans l'enregistrement ou le fichier
6A85ELc inconsistent with TLV structureLc incompatible avec la structure TLV
6A86EIncorrect P1 or P2 parameter.Paramètre P1 ou P2 incorrect.
6A87ELc inconsistent with P1-P2Lc incompatible avec P1-P2
6A88EReferenced data not foundDonnées référencées non trouvées
6A89EFile already existsLe fichier existe déjà
6A8AEDF name already exists.Le nom DF existe déjà.
6AF0EWrong parameter valueValeur de paramètre incorrecte
6AFXE-
6AXXERFURFU
6BE
6B0EWrong parameter(s) P1-P2Mauvais paramètre (s) P1-P2
6BXXEReference incorrect (procedure byte), (ISO 7816-3)Référence incorrecte (octet de procédure), (ISO 7816-3)
6CEWrong length LeLongueur incorrecte Le
6C0EIncorrect P3 length.Longueur P3 incorrecte.
6CXXEBad length value in Le; ‘xx’ is the correct exact LeMauvaise valeur de longueur dans Le; 'xx' est le Le exact exact
6DE
6D0EInstruction code not supported or invalidCode d'instruction non pris en charge ou non valide
6DXXEInstruction code not programmed or invalid (procedure byte), (ISO 7816-3)Code d'instruction non programmé ou invalide (octet de procédure), (ISO 7816-3)
6EE
6E0EClass not supportedClasse non prise en charge
6EXXEInstruction class not supported (procedure byte), (ISO 7816-3)Classe d'instructions non prise en charge (octet de procédure), (ISO 7816-3)
6FEInternal exceptionException interne
6F0ECommand aborted – more exact diagnosis not possible (e.g., operating system error).Commande abandonnée - un diagnostic plus précis n'est pas possible (par exemple, erreur du système d'exploitation).
6FFFECard dead (overuse, …)Carte morte (surutilisation,…)
6FXXENo precise diagnosis (procedure byte), (ISO 7816-3)Pas de diagnostic précis (octet de procédure), (ISO 7816-3)
9-
900ICommand successfully executed (OK).Commande exécutée avec succès (OK).
904WPIN not succesfully verified, 3 or more PIN tries leftLe code PIN n'a pas été vérifié avec succès, il reste 3 tentatives de code PIN ou plus
908Key/file not foundClé / fichier introuvable
9080WUnblock Try Counter has reached zeroDébloquer Try Counter a atteint zéro
910OKD'accord
911States.activity, States.lock Status or States.lockable has wrong valueStates.activity, States.lock Status ou States.lockable a une valeur incorrecte
912Transaction number reached its limitLe numéro de transaction a atteint sa limite
910CNo changesAucun changement
910EInsufficient NV-Memory to complete commandMémoire NV insuffisante pour terminer la commande
911CCommand code not supportedCode de commande non pris en charge
911ECRC or MAC does not match dataCRC ou MAC ne correspond pas aux données
9140Invalid key number specifiedNuméro de clé non valide spécifié
917ELength of command string invalidLongueur de la chaîne de commande non valide
919DNot allow the requested commandNe pas autoriser la commande demandée
919EValue of the parameter invalidValeur du paramètre non valide
91A0Requested AID not present on PICCAID demandé non présent sur PICC
91A1Unrecoverable error within applicationErreur irrécupérable dans l'application
91AEAuthentication status does not allow the requested commandL'état d'authentification n'autorise pas la commande demandée
91AFAdditional data frame is expected to be sentUne trame de données supplémentaire devrait être envoyée
91BEOut of boundaryHors limites
91C1Unrecoverable error within PICCErreur irrécupérable dans PICC
91CAPrevious Command was not fully completedLa commande précédente n'était pas complètement terminée
91CDPICC was disabled by an unrecoverable errorPICC a été désactivé par une erreur irrécupérable
91CENumber of Applications limited to 28Nombre de demandes limité à 28
91DEFile or application already existsLe fichier ou l'application existe déjà
91EECould not complete NV-write operation due to loss of powerImpossible de terminer l'opération d'écriture NV en raison d'une panne de courant
91F0Specified file number does not existLe numéro de fichier spécifié n'existe pas
91F1Unrecoverable error within fileErreur irrécupérable dans le fichier
920xIWriting to EEPROM successful after ‘x’ attempts.L'écriture dans l'EEPROM a réussi après les tentatives de «x».
9210EInsufficient memory. No more storage available.Mémoire insuffisante. Plus de stockage disponible.
9240EWriting to EEPROM not successful.L'écriture dans l'EEPROM n'a pas réussi.
931Integrity errorErreur d'intégrité
932Candidate S2 invalidCandidat S2 invalide
933EApplication is permanently lockedL'application est verrouillée en permanence
940ENo EF selected.Aucun EF sélectionné.
941Candidate currency code does not match purse currencyLe code de devise du candidat ne correspond pas à la devise de la bourse
942Candidate amount too highMontant du candidat trop élevé
942EAddress range exceeded.Plage d'adresses dépassée.
943Candidate amount too lowMontant du candidat trop faible
944EFID not found, record not found or comparison pattern not found.FID introuvable, enregistrement introuvable ou modèle de comparaison introuvable.
945Problems in the data fieldProblèmes dans le domaine des données
946ERequired MAC unavailableMAC requis indisponible
947Bad currency : purse engine has no slot with R3bc currencyMauvaise devise: le moteur de la bourse n'a pas de slot avec la devise R3bc
948R3bc currency not supported in purse engineLa devise R3bc n'est pas prise en charge dans le moteur de bourse
948ESelected file type does not match command.Le type de fichier sélectionné ne correspond pas à la commande.
9580Bad sequenceMauvaise séquence
9681Slave not foundEsclave introuvable
970PIN blocked and Unblock Try Counter is 1 or 2PIN bloqué et débloquer Try Counter est 1 ou 2
972Main keys are blockedLes touches principales sont bloquées
974PIN not succesfully verified, 3 or more PIN tries leftLe code PIN n'a pas été vérifié avec succès, il reste 3 tentatives de code PIN ou plus
9784Base keyTouche de base
9785Limit exceeded – C-MAC keyLimite dépassée - clé C-MAC
9786SM error – Limit exceeded – R-MAC keyErreur SM - Limite dépassée - Touche R-MAC
9787Limit exceeded – sequence counterLimite dépassée - compteur de séquences
9788Limit exceeded – R-MAC lengthLimite dépassée - longueur R-MAC
9789Service not availableService non disponible
982ENo PIN defined.Aucun code PIN défini.
984EAccess conditions not satisfied, authentication failed.Les conditions d'accès ne sont pas remplies, l'authentification a échoué.
9835EASK RANDOM or GIVE RANDOM not executed.ASK RANDOM ou GIVE RANDOM non exécuté.
9840EPIN verification not successful.La vérification du code PIN n'a pas réussi.
9850EINCREASE or DECREASE could not be executed because a limit has been reached.AUGMENTER ou DIMINUER n'a pas pu être exécuté car une limite a été atteinte.
9862EAuthentication Error, application specific (incorrect MAC)Erreur d'authentification, spécifique à l'application (MAC incorrect)
9901 PIN try left1 PIN essayer à gauche
994PIN not succesfully verified, 1 PIN try leftPIN non vérifié avec succès, 1 PIN essayer à gauche
9985Wrong status – Cardholder lockMauvais état - Verrouillage du titulaire de la carte
9986EMissing privilegePrivilège manquant
9987PIN is not installedLe code PIN n'est pas installé
9988Wrong status – R-MAC stateMauvais état - état R-MAC
9A02 PIN try left2 PIN essayer à gauche
9A4PIN not succesfully verified, 2 PIN try leftPIN non vérifié avec succès, 2 PIN essayer à gauche
9A71Wrong parameter value – Double agent AIDValeur de paramètre incorrecte - AID de l'agent double
9A72Wrong parameter value – Double agent TypeValeur de paramètre incorrecte - Type d'agent double
9D5EIncorrect certificate typeType de certificat incorrect
9D7EIncorrect session data sizeTaille de données de session incorrecte
9D8EIncorrect DIR file record sizeTaille d'enregistrement de fichier DIR incorrecte
9D9EIncorrect FCI record sizeTaille d'enregistrement FCI incorrecte
9D0AEIncorrect code sizeTaille de code incorrecte
9D10EInsufficient memory to load applicationMémoire insuffisante pour charger l'application
9D11EInvalid AIDAID non valide
9D12EDuplicate AIDAID en double
9D13EApplication previously loadedApplication précédemment chargée
9D14EApplication history list fullListe complète de l'historique des applications
9D15EApplication not openApplication non ouverte
9D17EInvalid offsetDécalage non valide
9D18EApplication already loadedApplication déjà chargée
9D19EInvalid certificateCertificat invalide
9D1AEInvalid signatureSignature non valide
9D1BEInvalid KTUKTU non valide
9D1DEMSM controls not setContrôles MSM non définis
9D1EEApplication signature does not existLa signature de l'application n'existe pas
9D1FEKTU does not existKTU n'existe pas
9D20EApplication not loadedApplication non chargée
9D21EInvalid Open command data lengthLongueur de données de commande d'ouverture non valide
9D30ECheck data parameter is incorrect (invalid start address)Vérifier que le paramètre de données est incorrect (adresse de début non valide)
9D31ECheck data parameter is incorrect (invalid length)Vérifier que le paramètre de données est incorrect (longueur non valide)
9D32ECheck data parameter is incorrect (illegal memory check area)Le paramètre de vérification des données est incorrect (zone de vérification de la mémoire illégale)
9D40EInvalid MSM Controls ciphertextTexte chiffré des contrôles MSM non valide
9D41EMSM controls already setContrôles MSM déjà définis
9D42ESet MSM Controls data length less than 2 bytesDéfinir une longueur de données MSM Controls inférieure à 2 octets
9D43EInvalid MSM Controls data lengthLongueur des données des contrôles MSM non valides
9D44EExcess MSM Controls ciphertextExcédent MSM Controls texte chiffré
9D45EVerification of MSM Controls data failedLa vérification des données des contrôles MSM a échoué
9D50EInvalid MCD Issuer production IDID de production de l'émetteur MCD non valide
9D51EInvalid MCD Issuer IDID d'émetteur MCD non valide
9D52EInvalid set MSM controls data dateLa valeur des données de contrôle MSM définie n'est pas valide
9D53EInvalid MCD numberNuméro MCD non valide
9D54EReserved field errorErreur de champ réservé
9D55EReserved field errorErreur de champ réservé
9D56EReserved field errorErreur de champ réservé
9D57EReserved field errorErreur de champ réservé
9D60EMAC verification failedLa vérification MAC a échoué
9D61EMaximum number of unblocks reachedNombre maximum de déblocages atteint
9D62ECard was not blockedLa carte n'a pas été bloquée
9D63ECrypto functions not availableFonctions cryptographiques non disponibles
9D64ENo application loadedAucune application chargée
9E0PIN not installedPIN non installé
9E4PIN not succesfully verified, PIN not installedPIN non vérifié avec succès, PIN non installé
9F0PIN blocked and Unblock Try Counter is 3PIN bloqué et débloquer Try Counter est 3
9F4PIN not succesfully verified, PIN blocked and Unblock Try Counter is 3Le code PIN n'a pas été vérifié avec succès, le code PIN est bloqué et le déblocage du compteur de tentatives est 3
9FXXCommand successfully executed; ‘xx’ bytes of data are available and can be requested using GET RESPONSE.Commande exécutée avec succès; 'xx' octets de données sont disponibles et peuvent être demandés à l'aide de GET RESPONSE.
9xXXApplication related status, (ISO 7816-3)Statut lié à l'application, (ISO 7816-3)

Comprendre EMV et les APDU

  • COMMANDE APU: 

Le terminal envoie une commande APDU à la carte. Cette commande a un en-tête obligatoire et un corps facultatif.

  • RÉPONSE  APU: 

La carte exécutera la commande et renverra une réponse APDU au terminal. L’APDU de réponse a un corps facultatif composé de données et une remorque obligatoire avec deux octets d’état « SW1 » et « SW2 ». SW1 et SW2 combinés sont le mot d’état (SW). Si le mot d’état a la valeur 0x9000 (SW1 = 0x90, SW2 = 0x00), la commande a été exécutée avec succès par la carte.

Définition Application Protocol Data Unit

Commande APDU
Field nameLength (bytes)Description
CLA1Classe d’instruction – indique le type de la commande, par exemple « interindustry » ou « proprietary »
INS1Code d’instruction – indique le code de commande, « write data » par exemple
P1-P22Paramètres d’instructions pour la commande, par exemple la position du curseur (offset) du fichier où écrire des données
Lc0, 1 ou 3Définit le nombre (Nc) d’octets envoyés par la commande
Données envoyéesNcNc octets
Le0, 1, 2 ou 3Définit le nombre (Ne) maximum d’octets attendus dans la réponse
Réponse APDU
RéponseNr (au maximum Ne)Donnée de réponse
SW1-SW2
(Statut de la réponse)
2Statut résultant de la commande, par exemple 90 00 (hexadecimal) indique que l’opération s’est effectuée avec succès.
Identification des contacts d'une carte à puce
LES SYSTÈMES D’EXPLOITATION POUR CARTE A PUCE 

Les Système d’Exploitation pour carte à puce sont appelés des “COS“. Voici quelques exemples: 

# La théorie en profondeur 

Structure des fichiers

Les fichiers d’une carte à puce sont organisés en arborescence. Le fichier le plus haut est le fichier maître (MF). Le MF possède un ou plusieurs fichiers de définition d’application (ADF). À l’intérieur d’un ADF se trouvent des fichiers élémentaires Applicaton (AEF) qui contiennent des données.
Vous pouvez sélectionner rapidement un ADF avec l’Application Identifier (AID). Dans un ADF, vous pouvez sélectionner des AEF avec le Short File Identifier (SFI).

APDU – Application Protocol Data Unit

Après la réinitialisation, la communication entre le terminal et la carte fonctionne avec les APDU.

Commande APDU

Le terminal envoie une commande APDU à la carte. Cette commande a un en-tête obligatoire et un corps facultatif.

Réponse APDU

La carte exécutera la commande et renverra une réponse APDU au terminal. L’APDU de réponse a un corps facultatif composé de données et une remorque obligatoire avec deux octets d’état “SW1” et “SW2”. SW1 et SW2 combinés sont le mot d’état (SW). Si le mot d’état a la valeur 0x9000 (SW1 = 0x90, SW2 = 0x00), la commande a été exécutée avec succès par la carte.

Lire le script EMV

Pour lire toutes les données de la carte, vous pouvez utiliser le script contenu dans la section suivante:

Ligne 06
Ce script fonctionne avec Mastercard ou VISA car les deux cartes utilisent des AID différents. Vous devrez activer l’AID correspondant à votre carte.

Ligne 13
Pour lire les données de la carte, nous devons d’abord sélectionner le bon ADF. Nous le ferons avec une commande SELECT encodée en tant que commande APDU de cas 4 et transmise à l’aide de card.sendApdu ():
La commande SELECT prend en charge les options suivantes:

La méthode card.sendAPDU () prend en charge un autre paramètre, qui est utilisé pour définir une liste de codes SW attendus. [0x9000] définit une liste avec une seule entrée 0x9000.

Ligne 17
Maintenant, nous créons une boucle qui commence par le premier AEF (SFI = 1) et se termine par SFI 31.

Ligne 19
Dans une deuxième boucle, le nombre record de chaque AEF sera itéré de 1 à 16.

Ligne 21
Avec la commande READ RECORD émise à l’aide de card.sendApdu (), nous pouvons obtenir les données.

Ligne 22
 Si le mot d’état a la valeur 0x9000, la commande a réussi et l’objet tlv sera imprimé.

# Passons à la pratique  

Développer et tester les opérations cryptographiques, Diagnostiquer et résoudre les problèmes de production de cartes, Comprendre EMV, Formulez des commandes et testez votre HSM via L’outil de développement  DEV BP-TOOLS.