Comment décoder les données d’une bande magnétique

Jusqu’à récemment, la lecture des données d’une carte de crédit était aussi facile que de glisser une carte dans un lecteur (comme l’un des nombreux lecteurs fabriqués par ID TECH) et de faire en sorte qu’une application de terminal virtuel (ou d’autres applications) avale les données de la piste à mesure qu’elles sortent directement du lecteur. Les données en question apparaîtraient simplement sous forme de frappes sur un écran, en clair.

C’était le bon temps !

Il suffit de dire que les choses ont changé. Aujourd’hui, les lecteurs de cartes magnétiques sortent généralement des données cryptées, par USB (souvent en mode HID, plutôt qu’en mode clavier), et la plupart des lecteurs de cartes doivent aujourd’hui gérer des cartes à puce en plus des cartes à bande magnétique. Les données des cartes à puce se présentent sous la forme de TLV (tags, length, values) et peuvent avoir un aspect assez différent des « simples données de la bande magnétique » des années passées. De plus, elles sont invariablement cryptées.

Dans des billets récents, j’ai montré comment décrypter les données de carte de crédit à l’aide des algorithmes de décryptage TDES et AES standard de l’industrie en conjonction avec les techniques de dérivation de clé DUKPT standard de l’industrie (ANSI X9.24), mais nous n’avons pas parlé de la façon d’obtenir des données de bande magnétique décodées en premier lieu. À quoi ressemblent maintenant les « données de carte de crédit à bande magnétique » ? Comment pouvez-vous les obtenir et les décoder ? Comment savez-vous quelles parties sont cryptées ?

La réponse à la première question (à quoi ressemblent les données de la bande magnétique ?) varie beaucoup, selon non seulement la marque et le modèle de l’équipement de lecture de carte que vous utilisez, mais aussi selon que la transaction en question a été effectuée via une interaction mag swipe, dip (contact EMV), ou sans contact/NFC. En général, vous faites beaucoup plus que simplement lire les données brutes des pistes. Vous obtenez également un KSN (Key Serial Number), qui est nécessaire pour le décryptage, et récoltez divers types de métadonnées relatives à la transaction. C’est vrai, vous pourriez n’être intéressé que par l’obtention (disons) des données brutes de la piste 2, mais dans le processus d’obtention, vous allez devoir traiter beaucoup d’autres données aussi.

Regardons rapidement un exemple du monde réel en utilisant une carte cadeau Starbucks qui m’a été donnée par un barista culpabilisé comme une réparation après avoir été inopinément à court de Mesopotamian Kumquat-Absinthe Latte. Si nous passons la carte Starbucks dans le lecteur de carte Augusta d’ID TECH en mode clavier, avec la fenêtre Notepad ouverte (et le curseur dans la fenêtre de texte), nous obtenons les données suivantes dans Notepad:

02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03

C’est beaucoup plus que des « données de piste brutes ». Vous pouvez reconnaître les données de suivi masquées (qui commencent par B% et contiennent de nombreux astérisques, se terminant finalement par ?*), mais elles cachent le numéro de compte primaire (PAN), qui est en fait crypté. La plupart de ce que vous voyez ici est une représentation hexadécimale des données binaires qui sortent du lecteur.

L’analyse grammaticale de ce gros bloc de données est facile si vous avez du savoir-faire. La façon la plus rapide de le décoder est de faire passer les données par l’outil gratuit Parsomatic d’ID TECH, qui est un formulaire HTML capable de rendre tous les morceaux de données de façon intelligible.

Chaque lecteur de carte a sa propre façon propriétaire de représenter les données de la carte. ID TECH représente les données de la bande magnétique dans un format connu sous le nom de format MSR crypté amélioré. Ce format comprend 26 champs de données ; ces 26 champs sont décrits en détail dans le document P/N 80000502-001, ID TECH Sortie de données cryptées.

Pour vous donner une idée de ce que contient la carte, considérons les 5 premiers octets de données (02 ED 01 80 1F). Selon Parsomatic, ces 5 octets contiennent les informations suivantes :

STX 02
LENGTH ED 01
Code de la carte. Type 80
Etat de la piste (1F)
0------- 0 Reserved for future use-0------ 1: Field 10 optional bytes length exists (0: No Field 10)--0----- 1: Track 3 sampling data exists (0: Track 3 sampling data does not exist)---1---- 1: Track 2 sampling data exists (0: Track 2 sampling data does not exist)----1--- 1: Track 1 sampling data exists (0: Track 1 sampling data does not exist)-----1-- 1: Track 3 decode success (0: Track 3 decode fail)------1- 1: Track 2 decode success (0: Track 2 decode fail)-------1 1: Track 1 decode success (0: Track 1 decode fail)

Le premier octet (02) est simplement STX, l’octet de « départ ». Les deux octets suivants (ED 01) représentent la longueur, en hex, de la charge utile globale des données (little-endian : ED 01 signifie en fait 0x01ED ou 493 octets de données). Le type de Card Encode est 0x80, ce qui (en anglais) signifie que notre lecteur considère qu’il s’agit d’une carte financière. Track Status (valeur : 0x1F) est un octet d’état contenant des drapeaux de huit bits, pour vous faire 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 les données n’existent que sur les pistes 1 et 2.

Regardons rapidement les 5 octets suivants. Selon Parsomatic, ces octets, et leurs significations sont les suivants :

.

Piste 1 Longueur 4C
Piste 2 Longueur 28
Piste 3 Longueur 00
État d’envoi des données effacées/masquées (83)
1------- Bit 7: 1 Serial Number present; 0 not present-0------ Bit 6: 1 PIN Encryption Key; 0 Data Encryption Key--0----- Bit 5: 1 Chip present on card. (First byte of service code was '2' or '6'.) Use EMV transaction if possible.---0---- Bit 4: 0 TDES; 1 AES----0--- Bit 3: 1 if fixed key; 0 DUKPT Key Management-----0-- Bit 2: 1 if Track3 clear/mask data present------1- Bit 1: 1 if Track2 clear/mask data present-------1 Bit 0: 1 if Track1 clear/mask data present
État d’envoi des données cryptées/hachées (9B)
1------- Bit 7: if 1, KSN present-0------ Bit 6: if 1, session ID present --0----- Bit 5: if 1, track3 hash data (SHA digest) present---1---- Bit 4: if 1, track2 hash data (SHA digest) present----1--- Bit 3: if 1, track1 hash data (SHA digest) present-----0-- Bit 2: if 1, track3 encrypted data present------1- Bit 1: if 1, track2 encrypted data present-------1 Bit 0: if 1, track1 encrypted data present

Sur une carte financière, La piste 1 peut comporter jusqu’à 79 octets ; La piste 2 peut avoir jusqu’à 40 octets de long ; La piste 3 peut avoir jusqu’à 107 octets. Dans ce cas, nous avons 76 octets (hex 0x4C) de données pour la piste 1 et 40 octets (0x28) de données pour la piste 2. (Ces longueurs sont importantes à connaître, non seulement pour analyser les données de la piste masquée mais aussi pour déterminer les longueurs des versions cryptées des pistes. La longueur cryptée est différente de la longueur native réelle de la piste parce que les données de piste doivent être paddées à une longueur finale qui est un multiple de 8 pour le cryptage TDES, ou un multiple de 16 pour l’AES.

Comment savons-nous si les données sont cryptées par TDES par rapport à celles cryptées par AES ? Cette information se trouve dans le bit 4 de l’octet d’état Clear/Mask Data Sent (comme indiqué ci-dessus). Il y a également un octet d’état Encrypted/Hash Data Sent (illustré ci-dessus) pour vous faire savoir si des données de piste cryptées (et des hachages de validation) sont présentes et si un KSN existe.

Maintenant, nous arrivons aux données masquées de la piste 1 et de la piste 2, suivies des versions cryptées de celles-ci, suivies de quelques données de hachage (dans ce cas, tous les zéros), et d’autres données (décrites ci-dessous). Notez que Parsomatic a converti les données de piste ASCII en une représentation hexagonale ci-dessous :

.

Données de la piste 1 25 2A 36 30 31 30 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 38 37 36 35 5E 30 32 35 34 2F 53 45 52 56 49 43 45 52 45 43 4F 56 45 52 59 55 53 44 5E 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A
Track2 Data 3B 36 30 31 30 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 38 37 36 35 3D 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A
Piste 1 Données cryptées 95 02 5C 86 98 7E 4F 7D D0 7D 58 73 0E B7 9F DF B9 0A B7 F2 3E 6E CA 6F 4F 04 A6 7B F5 11 EE 13 F9 50 90 3B DE 77 62 46 80 C4 60 E9 C3 6C 4F 91 36 25 6B B9 3A 38 CB 98 F9 56 26 DC FA F9 33 5C E0 A2 13 07 4C C1 CD 84 CC 91 13 98 E0 67 56 C4 Décryptage de ces données
Piste 2 Données cryptées 64 AB 03 6B 69 42 28 AD A7 EC 01 8F 49 5A 01 3A F8 A0 4C 97 62 88 FE 2F 80 27 1E 6E 53 D9 87 DE 19 AC A2 70 7B FF 2C 78 Décryptez ces données
Piste 1 Haché 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Piste 2 Haché 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Numéro de série du lecteur 36 31 33 54 35 33 35 36 31 38
KSN 62 99 49 00 75 00 02 A0 03 08
LRC 10
Checksum 8E
ETX 03

Notez que Parsomatic insère un lien « Decrypt this data » à côté des données cryptées (voir ci-dessus). Si vous cliquez sur ce lien, il vous amène à l’outil de cryptage/décryptage d’ID TECH, où les données en question peuvent être visualisées sous forme décryptée.

Les derniers champs de données comprennent le numéro de série du lecteur, le numéro de série de la clé (KSN), un LRC, une somme de contrôle et 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 (en négligeant le débordement, évidemment) de tous les octets des données utiles. Le LRC et la somme de contrôle peuvent être utilisés pour vérifier l’intégrité des données utiles. (Ils sont un peu plus faciles et plus rapides à calculer qu’un CRC correct.)

Conclusion

Donc, comme vous pouvez le voir, les données d’une bande magnétique comportent beaucoup plus que les « données de piste ». Nous n’avons même pas abordé la signification de certains des champs de données (nous pourrons peut-être y revenir dans un prochain billet). Nous n’avons pas non plus parlé des données EMV (ce qui nécessitera certainement un autre article). Mais cela devrait vous permettre de commencer si vous essayez de décoder les données sortant d’un lecteur de cartes de crédit ID TECH.

Pour plus d’informations, assurez-vous (comme je l’ai dit plus tôt) de consulter notre documentation technique sur le format de données MSR cryptées améliorées : ID TECH Encrypted Data Output. OU cliquez sur le lien ci-dessous pour faire le premier pas vers des paiements simplifiés !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.