Dekodieren von Magnetstreifendaten

Bis vor kurzem war das Auslesen von Kreditkartendaten so einfach wie das Durchziehen einer Karte durch ein Lesegerät (z. B. eines der vielen von ID TECH hergestellten Lesegeräte) und das Aufschlürfen der direkt aus dem Lesegerät kommenden Daten durch eine virtuelle Terminal-App (oder andere Apps). Die fraglichen Daten würden einfach als unverschlüsselte Tastenanschläge auf einem Bildschirm angezeigt.

Das waren noch Zeiten!

Es genügt zu sagen, dass sich die Dinge geändert haben. Heute geben Magnetstreifenlesegeräte in der Regel verschlüsselte Daten über USB aus (oft im HID-Modus und nicht im Tastaturmodus), und die meisten Kartenlesegeräte müssen heute zusätzlich zu den Magnetstreifenkarten auch Chipkarten verarbeiten. Chipkartendaten werden in Form von TLVs (Tags, Length, Values) ausgegeben und können ganz anders aussehen als die „einfachen alten Magnetstreifendaten“ der vergangenen Jahre. Außerdem sind sie ausnahmslos verschlüsselt.

In den letzten Beiträgen habe ich gezeigt, wie man Kreditkartendaten mit den branchenüblichen TDES- und AES-Entschlüsselungsalgorithmen in Verbindung mit den branchenüblichen (ANSI X9.24) DUKPT-Schlüsselableitungstechniken entschlüsselt, aber wir haben nicht darüber gesprochen, wie man überhaupt entschlüsselte Magnetstreifendaten erhält. Wie sehen nun „Kreditkarten-Magnetstreifendaten“ aus? Wie kann man sie beschaffen und entschlüsseln? Woher weiß man, welche Teile verschlüsselt sind?

Die Antwort auf die erste Frage (wie sehen die Magnetstreifendaten aus?) ist sehr unterschiedlich und hängt nicht nur von der Marke und dem Modell des verwendeten Kartenlesegeräts ab, sondern auch davon, ob die betreffende Transaktion per Magnetstreifen, Dip (EMV-Kontakt) oder kontaktloser/NFC-Interaktion durchgeführt wurde. Generell geht es um viel mehr als nur um das Lesen von Rohdaten. Sie erhalten auch eine KSN (Key Serial Number), die für die Entschlüsselung benötigt wird, und sammeln verschiedene Arten von Metadaten, die sich auf die Transaktion beziehen. Es stimmt, dass Sie vielleicht nur daran interessiert sind, (sagen wir) rohe Track-2-Daten zu erhalten, aber bei der Beschaffung dieser Daten müssen Sie sich auch mit vielen anderen Daten befassen.

Lassen Sie uns einen kurzen Blick auf ein reales Beispiel werfen, indem wir eine Starbucks-Geschenkkarte verwenden, die mir von einem schuldbeladenen Barista als Notlösung gegeben wurde, nachdem mir unerwartet der mesopotamische Kumquat-Absinth-Latte ausgegangen war. Wenn wir die Starbucks-Karte durch den Augusta-Kartenleser von ID TECH ziehen, der im Tastaturmodus und mit geöffnetem Notepad-Fenster (und dem Cursor im Textfenster) arbeitet, erhalten wir folgende Daten in Notepad:

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

Das ist viel mehr als „rohe Spurdaten“. Sie können die maskierten Trackdaten erkennen (die mit B% beginnen und viele Sternchen enthalten, die schließlich mit ?* enden), aber dahinter verbirgt sich die Primary Account Number (PAN), die eigentlich verschlüsselt ist. Das meiste, was Sie hier sehen, ist eine hexadezimale Darstellung der binären Daten, die aus dem Lesegerät kommen.

Die Entschlüsselung dieses großen Blocks ist einfach, wenn Sie sich auskennen. Am schnellsten lassen sich die Daten mit dem kostenlosen Parsomatic-Tool von ID TECH entschlüsseln, einem HTML-Formular, das alle Daten in verständlicher Form darstellt.

Jedes Kartenlesegerät hat seine eigene proprietäre Art der Darstellung von Kartendaten. ID TECH stellt Magnetstreifendaten in einem Format dar, das als Enhanced Encrypted MSR-Format bekannt ist. Das Format umfasst 26 Datenfelder; alle 26 Felder sind in Dokument P/N 80000502-001, ID TECH Encrypted Data Output, ausführlich beschrieben.

Um Ihnen eine Vorstellung davon zu geben, was auf der Karte steht, betrachten wir die ersten 5 Bytes der Daten (02 ED 01 80 1F). Laut Parsomatic enthalten diese 5 Bytes die folgenden Informationen:

STX 02
LENGTH ED 01
Kartencode Typ 80
Spurstatus (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)

Das erste Byte (02) ist einfach STX, das „Start“-Byte. Die nächsten beiden Bytes (ED 01) stellen die Länge der gesamten Daten-Nutzlast in Hexadezimalzeichen dar (Little-Endian: ED 01 bedeutet eigentlich 0x01ED oder 493 Byte Daten). Der Kartenkodierungstyp ist 0x80, was (auf Englisch) bedeutet, dass unser Lesegerät diese Karte für eine Geldkarte hält. Track Status (Wert: 0x1F) ist ein Statusbyte, das 8-Bit-Flags enthält, um Ihnen mitzuteilen, welche Spuren auf dem Magnetstreifen vorhanden waren (es können bis zu 3 sein) und welche erfolgreich gelesen wurden. In diesem Fall wurden alle 3 physischen Spuren erfolgreich gelesen, aber Daten sind nur auf den Spuren 1 und 2 vorhanden.

Werfen wir einen kurzen Blick auf die nächsten 5 Bytes. Laut Parsomatic sind diese Bytes und ihre Bedeutungen wie folgt:

Spur 1 Länge 4C
Spur 2 Länge 28
Spur 3 Länge 00
Status der gesendeten Daten löschen/maskieren (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
Status der gesendeten Daten verschlüsselt/hash (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

Auf einer Geldkarte, Spur 1 kann bis zu 79 Byte lang sein; Spur 2 kann bis zu 40 Byte lang sein; Spur 3 kann bis zu 107 Byte lang sein. In diesem Fall haben wir 76 Bytes (hex 0x4C) Daten für Spur 1 und 40 Bytes (0x28) Daten für Spur 2. (Spur 3 hatte null Bytes.) Diese Längen sind wichtig zu wissen, nicht nur für das Parsing der maskierten Spurdaten, sondern auch für die Bestimmung der Längen der verschlüsselten Versionen der Spuren. Die verschlüsselte Länge unterscheidet sich von der tatsächlichen nativen Spurlänge, weil die Spurdaten auf eine endgültige Länge aufgefüllt werden müssen, die bei TDES-Verschlüsselung ein Vielfaches von 8 und bei AES ein Vielfaches von 16 ist.

Woher wissen wir, ob die Daten TDES- oder AES-verschlüsselt sind? Diese Information befindet sich in Bit 4 des Statusbytes Clear/Mask Data Sent (wie oben gezeigt). Es gibt auch ein Statusbyte „Encrypted/Hash Data Sent“ (siehe oben), das Ihnen mitteilt, ob verschlüsselte Track-Daten (und Validierungs-Hashes) vorhanden sind und ob eine KSN existiert.

Nun kommen wir zu den maskierten Daten von Track 1 und Track 2, gefolgt von den verschlüsselten Versionen dieser Daten, gefolgt von einigen Hash-Daten (in diesem Fall alle Nullen) und einigen anderen Daten (siehe unten). Beachten Sie, dass Parsomatic die ASCII-Spurdaten wie folgt in eine Hex-Darstellung konvertiert hat:

Spur1 Daten 25 2A 36 30 31 30 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 3F 2A
Track1 Verschlüsselte Daten 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 Entschlüsselung dieser Daten
Spur2 Verschlüsselte Daten 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 Entschlüsseln dieser Daten
Spur 1 Hashed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Spur 2 Hashed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Leser-Seriennummer 36 31 33 54 35 33 35 36 31 38
KSN 62 99 49 00 75 00 02 A0 03 08
LRC 10
Checksumme 8E
ETX 03

Beachten Sie, dass Parsomatic neben den verschlüsselten Daten (siehe oben) einen Link „Diese Daten entschlüsseln“ einfügt. Wenn Sie auf diesen Link klicken, gelangen Sie zum Verschlüsselungs-/Entschlüsselungs-Tool von ID TECH, wo die betreffenden Daten in entschlüsselter Form angezeigt werden können.

Zu den letzten Datenfeldern gehören die Seriennummer des Lesegeräts, die Seriennummer des Schlüssels (KSN), eine LRC, eine Prüfsumme und ETX (Ende der Übertragung). Die LRC ist einfach ein Byte-Wert, der das XOR (exklusives ODER) aller Nutzdatenbytes darstellt, während die Prüfsumme eine arithmetische Ein-Byte-Summe (natürlich ohne Überlauf) aller Bytes der Nutzdaten ist. Die LRC und die Prüfsumme können verwendet werden, um die Integrität der Nutzdaten zu überprüfen. (Sie sind etwas einfacher und schneller zu berechnen als ein richtiger CRC.)

Abschluss

Wie Sie sehen, steckt in den Magnetstreifendaten viel mehr als nur die „Spurdaten“. Wir sind noch nicht einmal auf die Bedeutung einiger Datenfelder eingegangen (vielleicht können wir das in einem späteren Beitrag tun). Wir haben auch noch nichts über EMV-Daten gesagt (was definitiv einen weiteren Beitrag erfordern wird). Aber dies sollte Ihnen den Einstieg erleichtern, wenn Sie versuchen, Daten aus einem ID TECH-Kreditkartenlesegerät zu entschlüsseln.

Weitere Informationen finden Sie (wie bereits erwähnt) in unserer technischen Dokumentation über das Enhanced Encrypted MSR-Datenformat: ID TECH Encrypted Data Output. ODER klicken Sie auf den nachstehenden Link, um den ersten Schritt in Richtung eines optimierten Zahlungsverkehrs zu machen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.