Article technique
Comment décoder les données MagStripe
Jusqu'à récemment, lire les données d'une carte de crédit était aussi simple que de glisser une carte dans un lecteur (comme l'un des nombreux lecteurs fabriqués par ID TECH) et de laisser une application de terminal virtuel (ou toute autre application) absorber les données de piste directement à la sortie du lecteur. Ces données s'affichaient alors simplement sous forme de frappes à l'écran, en clair, sans chiffrement.
C'était le bon vieux temps !
Il va sans dire que les choses ont bien changé. Aujourd'hui, les lecteurs MagStripe restituent généralement des données chiffrées via USB (souvent en mode HID plutôt qu'en mode clavier), et la plupart des lecteurs de cartes doivent également prendre en charge les cartes à puce en plus des cartes à bande magnétique. Les données des cartes à puce se présentent sous forme de TLV (tags, longueurs, valeurs) et peuvent être très différentes des « données de bande magnétique classiques » d'autrefois. Elles sont, de surcroît, systématiquement chiffrées.
Dans articles récents, j'ai montré comment déchiffrer des données de carte de crédit en utilisant les algorithmes de chiffrement standard du secteur TDES et AES, combinés aux techniques de dérivation de clés DUKPT conformes aux normes industrielles (ANSI X9.24). Cependant, nous n'avons pas abordé la façon d'obtenir des données de bande magnétique décodées en premier lieu. À quoi ressemblent aujourd'hui les « données de bande magnétique de carte de crédit » ? Comment les obtenir et les décoder ? Comment savoir quelles parties sont chiffrées ?
Aujourd'hui, les lecteurs de cartes restituent généralement des données chiffrées via USB (souvent en mode HID plutôt qu'en mode clavier), et la plupart d'entre eux doivent également prendre en charge les cartes à puce en plus des cartes à bande magnétique.
La réponse à la première question (à quoi ressemblent les données de bande magnétique ?) varie considérablement selon le type et le modèle du matériel de lecture de cartes utilisé, mais aussi selon que la transaction a été réalisée par glissement de la bande magnétique, par insertion (EMV contact) ou par interaction sans contact/NFC. En général, il ne s'agit pas simplement de lire des données de piste brutes. Il faut également obtenir un KSN (Key Serial Number), indispensable au déchiffrement, et collecter diverses métadonnées relatives à la transaction. Certes, vous pourriez n'être intéressé que par les données brutes de la piste 2, mais pour les obtenir, vous devrez inévitablement traiter de nombreuses autres données.
Prenons un exemple concret avec une carte cadeau Starbucks qu'un barista, pris de remords, m'a offerte en guise de dédommagement après avoir été à court de Latte Kumquat-Absinthe de Mésopotamie. Si l'on glisse la carte Starbucks dans le lecteur de cartes Augusta d'ID TECH fonctionnant en mode clavier, avec une fenêtre Notepad ouverte (et le curseur positionné dans la zone de texte), voici les données qui s'affichent dans Notepad :
02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03
Il s'agit de bien plus que de simples « données de piste brutes ». On reconnaît les données de piste masquées (qui commencent par B% et contiennent de nombreux astérisques, pour se terminer par ?*), mais celles-ci dissimulent le numéro de compte principal (PAN), qui est en réalité chiffré. La majeure partie de ce que vous voyez ici est une représentation hexadécimale des données binaires provenant du lecteur.
L'analyse de ce volumineux bloc de données est aisée si l'on sait comment procéder. La façon la plus rapide de le décoder consiste à faire passer les données dans le Parsomatic outil, qui est un formulaire HTML capable d'afficher l'ensemble des données de manière claire et lisible.
Chaque lecteur de carte dispose de sa propre méthode propriétaire pour représenter les données de carte. ID TECH représente les données de piste magnétique dans un format appelé Enhanced Encrypted MSR format. Ce format comprend 26 champs de données, tous décrits en détail dans le document P/N 80000502-001, ID TECH Encrypted Data Output.
Pour vous donner une idée du contenu de la carte, examinons les 5 premiers octets de données (02 ED 01 80 1F). Selon Parsomatic, ces 5 octets contiennent les informations suivantes :
Le premier octet (02) est simplement STX, l'octet de « début ». Les deux octets suivants (ED 01) représentent la longueur, en hexadécimal, de l'ensemble du payload de données (little-endian : ED 01 correspond en réalité à 0x01ED, soit 493 octets de données). Le type d'encodage de carte est 0x80, ce qui signifie (en clair) que notre lecteur identifie cette carte comme une carte de paiement. Le Track Status (valeur : 0x1F) est un octet d'état contenant des indicateurs sur huit bits, permettant de savoir quelles pistes étaient présentes sur la bande magnétique (jusqu'à 3 pistes possibles) et lesquelles ont été lues avec succès. Dans ce cas, les 3 pistes physiques ont toutes été lues avec succès, mais des données ne sont présentes que sur les pistes 1 et 2.
Examinons rapidement les 5 octets suivants. Selon Parsomatic, ces octets et leurs significations sont les suivantes :
Sur une carte de paiement, la piste 1 peut comporter jusqu'à 79 octets ; la piste 2, jusqu'à 40 octets ; et la piste 3, jusqu'à 107 octets. Dans notre exemple, nous disposons de 76 octets (hex 0x4C) de données pour la piste 1 et de 40 octets (0x28) pour la piste 2 (la piste 3 ne contient aucun octet). Ces longueurs sont importantes à connaître non seulement pour analyser les données de piste masquées, mais aussi pour déterminer la longueur des versions chiffrées des pistes. La longueur chiffrée diffère de la longueur native réelle de la piste, car les données de piste doivent être complétées (paddées) pour atteindre une longueur finale multiple de 8 pour le chiffrement TDES, ou multiple de 16 pour l'AES.
Comment savoir si les données sont chiffrées en TDES ou en AES ? Cette information se trouve dans le bit 4 de l'octet d'état Clear/Mask Data Sent Status (comme indiqué ci-dessus). Il existe également un octet d'état Encrypted/Hash Data Sent Status (indiqué ci-dessus) permettant de savoir si des données de piste chiffrées (et des hachages de validation) sont présentes et si un KSN existe.
Nous accédons ensuite aux données masquées des pistes 1 et 2, suivies de leurs versions chiffrées, puis de certaines données de hachage (dans ce cas, toutes à zéro) et d'autres données (décrites ci-dessous). Notez que Parsomatic a converti les données de piste ASCII en représentation hexadécimale ci-dessous :
Remarquez que Parsomatic insère un lien « Déchiffrer ces données » à côté des données chiffrées (voir ci-dessus). En cliquant sur ce lien, vous accédez à l'outil Outil de chiffrement/déchiffrement, où les données en question peuvent être consultées sous forme déchiffrée.
Les derniers champs de données comprennent le numéro de série du lecteur, le numéro de série de clé (KSN), un LRC, une somme de contrôle et un ETX (fin de transmission). Le LRC est simplement une valeur d'octet représentant le XOR (ou exclusif) de tous les octets de données utiles, tandis que la somme de contrôle est une somme arithmétique sur un octet (sans tenir compte des dépassements, bien entendu) de tous les octets du contenu. Le LRC et la somme de contrôle permettent de vérifier l'intégrité des données utiles. (Ils sont un peu plus simples et plus rapides à calculer qu'un véritable CRC.)
Conclusion
Comme vous pouvez le constater, les données de piste magnétique vont bien au-delà des simples « données de piste ». Nous n'avons même pas abordé la signification de certains champs de données (nous pourrons peut-être y revenir dans un prochain article), ni évoqué les données EMV (ce qui nécessitera assurément un article à part entière). Mais ce guide devrait vous donner un bon point de départ si vous cherchez à décoder les données provenant d'un lecteur de carte bancaire ID TECH.
Pour plus d'informations, consultez (comme je l'ai mentionné précédemment) notre documentation technique sur le format de données MSR chiffrées améliorées : ID TECH Encrypted Data Output. OU cliquez sur le lien ci-dessous pour franchir la première étape vers des paiements simplifiés !
