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 la 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) récupérer les données de piste telles qu'elles sortaient directement du lecteur. Les données en question s'affichaient simplement sous forme de frappes clavier à l'écran, en clair et non chiffrées.
C'était le bon temps !
Les choses ont bien changé depuis. Aujourd'hui, les lecteurs MagStripe transmettent 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 gérer les cartes à puce en plus des cartes à piste 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 piste magnétique classiques » d'autrefois. De plus, elles sont invariablement chiffrées.
Dans articles récents, j'ai montré comment déchiffrer les données de carte de crédit à l'aide des algorithmes de chiffrement TDES et AES standard du secteur, combinés aux techniques de dérivation de clés DUKPT conformes à la norme ANSI X9.24 — mais nous n'avons pas abordé la manière d'obtenir les données MagStripe décodées en premier lieu. À quoi ressemblent aujourd'hui les « données de piste magnétique » d'une carte de crédit ? Comment les obtenir et les décoder ? Comment savoir quelles parties sont chiffrées ?
Aujourd'hui, les lecteurs de cartes transmettent 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 gérer les cartes à puce en plus des cartes à piste magnétique.
La réponse à la première question (à quoi ressemblent les données MagStripe ?) varie considérablement selon le type et le modèle de l'équipement de lecture utilisé, mais aussi selon que la transaction a été effectuée par glissement de la piste magnétique, par insertion (EMV contact) ou par interaction sans contact/NFC. En règle générale, il ne s'agit plus 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 ne cherchez peut-être qu'à récupérer les données brutes de la piste 2, mais pour y parvenir, vous devrez traiter bien d'autres données.
Examinons rapidement un exemple concret avec une carte cadeau Starbucks qu'un barista plein de remords m'a offerte en guise de compensation après avoir manqué de Latte Kumquat-Absinthe de Mésopotamie. Si l'on glisse la carte Starbucks dans le lecteur Augusta de ID TECH fonctionnant en mode clavier, avec une fenêtre Notepad ouverte (et le curseur positionné dans la zone de texte), voici ce qui s'affiche 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, jusqu'au ?*), 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 issues du lecteur.
Analyser ce bloc de données est simple si vous savez comment procéder. Le moyen le plus rapide de le décoder est de faire passer les données par l'outil gratuit de ID TECH : Parsomatic , un formulaire HTML capable de restituer l'ensemble des données de manière lisible et compréhensible.
Chaque lecteur de carte possè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) correspond simplement à STX, l'octet de « début ». Les deux octets suivants (ED 01) représentent la longueur, en hexadécimal, de la charge utile globale des données (en 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 huit indicateurs binaires, permettant de savoir quelles pistes étaient présentes sur la bande magnétique (il peut y en avoir jusqu'à 3) et lesquelles ont été lues avec succès. Dans ce cas, les 3 pistes physiques ont é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 suivants :
Sur une carte de paiement, la piste 1 peut contenir jusqu'à 79 octets ; la piste 2, jusqu'à 40 octets ; et la piste 3, jusqu'à 107 octets. Dans notre cas, la piste 1 contient 76 octets (hex 0x4C) de données et la piste 2 en contient 40 (0x28). (La piste 3 ne contenait aucun octet.) Ces longueurs sont importantes à connaître, non seulement pour extraire 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 par un rembourrage (padding) pour atteindre une longueur multiple de 8 dans le cas d'un 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 figure dans le bit 4 de l'octet d'état Clear/Mask Data Sent Status (comme indiqué ci-dessus). Un octet d'état Encrypted/Hash Data Sent (également illustré ci-dessus) indique par ailleurs si des données de piste chiffrées (et des hachages de validation) sont présentes, et si un KSN existe.
Nous arrivons maintenant 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), ainsi que 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 de ID TECH 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 l'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 d'un octet (sans tenir compte du dépassement, bien entendu) de tous les octets de la charge utile. 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 rapides à calculer qu'un CRC classique.)
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 pas encore abordé la signification de certains champs de données (un sujet que nous pourrons peut-être traiter dans un prochain article), ni mentionné les données EMV (qui feront certainement l'objet d'un article à part entière). Cela dit, ces explications devraient vous donner un bon point de départ si vous cherchez à décoder les données provenant d'un lecteur de carte de crédit ID TECH.
Pour plus d'informations, consultez (comme mentionné précédemment) notre documentation technique sur le format de données MSR chiffré amélioré : ID TECH Encrypted Data Output. OU cliquez sur le lien ci-dessous pour franchir la première étape vers des paiements simplifiés !
