Come decodificare i dati Magstripe

Fino a poco tempo fa, leggere i dati della carta di credito era facile come far scorrere una carta attraverso un lettore (come uno dei tanti lettori prodotti da ID TECH) e avere un’applicazione terminale virtuale (o altre applicazioni) per assorbire i dati della traccia mentre esce direttamente dal lettore. I dati in questione apparirebbero semplicemente come battute su uno schermo, non criptati.

Questi erano i tempi!

Basta dire che le cose sono cambiate. Oggi, i lettori a banda magnetica generalmente emettono dati criptati, su USB (spesso in modalità HID, piuttosto che in modalità tastiera), e la maggior parte dei lettori di carte oggi deve gestire carte a chip oltre alle carte a banda magnetica. I dati delle carte con chip assumono la forma di TLV (tag, lunghezza, valori) e possono avere un aspetto molto diverso dai “semplici vecchi dati a banda magnetica” degli anni passati. Inoltre, sono invariabilmente criptati.

Nei post recenti, ho mostrato come decriptare i dati delle carte di credito utilizzando gli algoritmi di decriptazione standard del settore TDES e AES insieme alle tecniche di derivazione delle chiavi standard del settore (ANSI X9.24) DUKPT, ma non abbiamo parlato di come ottenere i dati della banda magnetica decodificati. Che aspetto hanno ora i “dati della banda magnetica delle carte di credito”? Come potete ottenerli e decodificarli? Come si fa a sapere quali parti sono criptate?

La risposta alla prima domanda (che aspetto hanno i dati della striscia magnetica?) varia molto, a seconda non solo della marca e del modello dell’apparecchiatura di lettura della carta che si sta usando, ma anche se la transazione in questione è stata fatta tramite strisciata magnetica, dip (contatto EMV), o interazione senza contatto/NFC. In generale, state facendo molto di più che leggere i dati grezzi della traccia. State anche ottenendo un KSN (Key Serial Number), che è necessario per la decrittazione, e raccogliendo vari tipi di metadati relativi alla transazione. È vero, potreste essere interessati solo ad ottenere (diciamo) i dati grezzi della traccia 2, ma nel processo di ottenerli, avrete a che fare anche con molti altri dati.

Diamo una rapida occhiata ad un esempio del mondo reale usando una carta regalo di Starbucks datami da un barista in preda ai sensi di colpa come rimedio dopo aver inaspettatamente finito il Mesopotamian Kumquat-Absinthe Latte. Se passiamo la carta di Starbucks attraverso il lettore di carte Augusta di ID TECH in modalità tastiera, con la finestra Notepad aperta (e il cursore nella finestra di testo), otteniamo i seguenti dati in Notepad:

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

Questo è molto più che “dati di traccia grezzi”. Potete riconoscere i dati di traccia mascherati (che iniziano con B% e contengono molti asterischi, finendo infine in ?*), ma questo nasconde il Primary Account Number (PAN), che è effettivamente criptato. La maggior parte di ciò che vedete qui è una rappresentazione esadecimale dei dati binari che escono dal lettore.

Parlare di questo grosso blocco di roba è facile se si ha il know-how. Il modo più veloce per decodificarlo è eseguire i dati attraverso lo strumento gratuito Parsomatic di ID TECH, che è un modulo HTML che può rendere tutti i pezzi di dati in modo comprensibile.

Ogni lettore di carte ha il suo modo proprietario di rappresentare i dati della carta. ID TECH rappresenta i dati magstripe in un formato noto come Enhanced Encrypted MSR format. Il formato include 26 campi di dati; tutti i 26 campi sono descritti in dettaglio nel documento P/N 80000502-001, ID TECH Encrypted Data Output.

Per darvi un’idea di ciò che è sulla carta, consideriamo i primi 5 byte di dati (02 ED 01 80 1F). Secondo Parsomatic, questi 5 byte contengono le seguenti informazioni:

STX 02
LENGTH ED 01
Card Encode Tipo 80
Stato della traccia (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)

Il primo byte (02) è semplicemente STX, il byte di “inizio”. I due byte successivi (ED 01) rappresentano la lunghezza, in hex, del carico complessivo di dati (little-endian: ED 01 significa effettivamente 0x01ED o 493 byte di dati). Il tipo di Card Encode è 0x80, che (in inglese) significa che il nostro lettore considera questa una carta finanziaria. Track Status (valore: 0x1F) è un byte di stato che contiene dei flag a otto bit, per farvi sapere quali tracce erano presenti sulla banda magnetica (ce ne possono essere fino a 3) e quali sono state lette con successo. In questo caso, tutte e 3 le tracce fisiche sono state lette con successo, ma i dati esistono solo sulle tracce 1 e 2.

Guardiamo velocemente i prossimi 5 byte. Secondo Parsomatic, questi byte e il loro significato sono i seguenti:

Track 1 Length 4C
Track 2 Length 28
Track 3 Length 00
Stato invio dati cancellati/maschera (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
Stato invio dati criptati/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

Su una carta finanziaria, La traccia 1 può essere lunga fino a 79 byte; La traccia 2 può essere lunga fino a 40 byte; la traccia 3 può essere lunga fino a 107 byte. In questo caso, abbiamo 76 byte (hex 0x4C) di dati per la traccia 1 e 40 byte (0x28) di dati per la traccia 2. (Queste lunghezze sono importanti da sapere, non solo per analizzare i dati della traccia mascherata ma per determinare le lunghezze delle versioni criptate delle tracce. La lunghezza criptata è diversa dall’effettiva lunghezza della traccia nativa perché i dati della traccia devono essere imbottiti fino a una lunghezza finale che è un multiplo di 8 per la crittografia TDES, o un multiplo di 16 per AES.

Come facciamo a sapere se i dati sono criptati TDES o AES? Questa informazione è nel bit 4 del byte Clear/Mask Data Sent Status (come mostrato sopra). C’è anche un byte di stato Encrypted/Hash Data Sent (mostrato sopra) per farti sapere se sono presenti dati di traccia criptati (e hash di convalida) e se esiste un KSN.

Ora arriviamo ai dati mascherati di traccia 1 e traccia 2, seguiti dalle versioni criptate di questi, seguiti da alcuni dati hash (in questo caso, tutti zeri), e alcuni altri dati (descritti di seguito). Notate che Parsomatic ha convertito i dati ASCII delle tracce in una rappresentazione esadecimale qui sotto:

Dati traccia1 25 2A 36 30 31 30 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 3F 2A
Track2 Data 3B 36 30 31 31 30 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
Track1 Dati cifrati 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 Decifra questi dati
Track2 Dati crittografati 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 Decifra questi dati
Track 1 Hashed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Track 2 Hashed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Numero di serie del lettore 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

Nota che Parsomatic inserisce un link “Decrypt this data” accanto ai dati criptati (vedi sopra). Se clicchi il link, ti porta al Encrypt/Decrypt Tool di ID TECH, dove i dati in questione possono essere visualizzati in forma decriptata.

I campi finali dei dati includono il Reader Serial Number, il Key Serial Number (KSN), un LRC, un checksum, e ETX (fine della trasmissione). L’LRC è semplicemente un valore di byte che rappresenta lo XOR (OR esclusivo) di tutti i byte di dati del payload, mentre il checksum è una somma aritmetica a un byte (trascurando l’overflow, ovviamente) di tutti i byte del payload. L’LRC e il checksum possono essere usati per controllare l’integrità del carico di dati. (Sono un po’ più facili e veloci da calcolare di un vero CRC.)

Conclusione

Così, come potete vedere, c’è molto di più nei dati di una striscia magnetica che i “dati di traccia”. Non abbiamo nemmeno toccato il significato di alcuni dei campi di dati (forse possiamo andarci in un futuro post). Né abbiamo detto nulla sui dati EMV (che sicuramente richiederà un altro post). Ma questo dovrebbe farvi iniziare se state cercando di decodificare i dati che escono da un lettore di carte di credito ID TECH.

Per maggiori informazioni, assicuratevi (come ho detto prima) di consultare la nostra documentazione tecnica sul formato dati Enhanced Encrypted MSR: ID TECH Encrypted Data Output. OPPURE cliccate sul link qui sotto per fare il primo passo verso pagamenti più efficienti!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.