ID TECH
Contatto
Tutti gli articoli tecnici

Post tecnico

Come decodificare i dati MagStripe

Fino a poco tempo fa, leggere i dati di una carta di credito era semplice come strisciare la carta su un lettore (come uno dei tanti prodotti realizzati da ID TECH) e lasciare che un'app di terminale virtuale (o altre applicazioni) acquisisse i dati di traccia direttamente in uscita dal lettore. I dati venivano semplicemente visualizzati come sequenze di tasti sullo schermo, in chiaro e non crittografati.

Bei tempi!

È inutile negarlo: le cose sono cambiate. Oggi i lettori MagStripe trasmettono generalmente dati cifrati via USB (spesso in modalità HID anziché in modalità tastiera), e la maggior parte dei lettori di carte deve gestire anche le carte con chip oltre a quelle a banda magnetica. I dati delle carte con chip si presentano sotto forma di TLV (tag, lunghezza, valori) e possono apparire molto diversi dai "semplici dati MagStripe" di un tempo. Inoltre, sono sempre crittografati.

Nella articoli recenti, ho mostrato come decifrare i dati delle carte di credito utilizzando gli algoritmi di crittografia standard del settore TDES e AES in combinazione con le tecniche di derivazione delle chiavi DUKPT secondo lo standard ANSI X9.24; tuttavia, non abbiamo ancora affrontato come ottenere i dati MagStripe decodificati. Come si presentano oggi i dati MagStripe di una carta di credito? Come si ottengono e come si decodificano? Come si riconosce quali parti sono crittografate?

Oggi i lettori di carte trasmettono generalmente dati cifrati via USB (spesso in modalità HID anziché in modalità tastiera), e la maggior parte dei lettori deve gestire anche le carte con chip oltre a quelle a banda magnetica.

La risposta alla prima domanda (come si presentano i dati MagStripe?) varia considerevolmente, non solo in base alla marca e al modello del dispositivo di lettura utilizzato, ma anche in base alla modalità di transazione: strisciata magnetica, inserimento (EMV a contatto) o interazione contactless/NFC. In generale, si va ben oltre la semplice lettura dei dati di traccia grezzi: occorre anche acquisire un KSN (Key Serial Number), necessario per la decrittazione, e raccogliere vari metadati relativi alla transazione. È vero che l'obiettivo potrebbe essere esclusivamente ottenere i dati grezzi della Traccia 2, ma nel processo sarà inevitabile confrontarsi con molti altri tipi di dati.

Vediamo un esempio concreto utilizzando una gift card Starbucks che mi è stata consegnata da un barista in preda ai sensi di colpa, come risarcimento dopo aver esaurito inaspettatamente il Latte Mesopotamiano al Kumquat e Assenzio. Se strisciamo la carta Starbucks nel lettore Augusta di ID TECH configurato in modalità tastiera, con Notepad aperto (e il cursore nel campo di testo), otteniamo i seguenti dati in Notepad:

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

Si tratta di molto più che semplici dati di traccia grezzi. È possibile riconoscere i dati di traccia mascherati (che iniziano con B% e contengono numerosi asterischi, terminando con ?*), ma questi celano il Numero di Conto Primario (PAN), che risulta in realtà crittografato. La maggior parte di ciò che si vede è la rappresentazione esadecimale dei dati binari in uscita dal lettore.

Analizzare questo grande blocco di dati è semplice se si sa come fare. Il modo più rapido per decodificarlo è elaborare i dati con il tool gratuito Parsomatic di ID TECH, un modulo HTML in grado di rappresentare tutti i dati in modo chiaro e comprensibile.

Ogni lettore di carte ha un proprio metodo proprietario per rappresentare i dati della carta. ID TECH rappresenta i dati della banda magnetica in un formato noto come Enhanced Encrypted MSR format. Questo formato comprende 26 campi di dati, tutti descritti in dettaglio nel documento P/N 80000502-001, ID TECH Encrypted Data Output.

Per avere un'idea dei dati contenuti nella carta, consideriamo i primi 5 byte (02 ED 01 80 1F). Secondo Parsomatic, questi 5 byte contengono le seguenti informazioni:

Il primo byte (02) è semplicemente STX, il byte di "inizio". I due byte successivi (ED 01) rappresentano la lunghezza, in esadecimale, del payload complessivo dei dati (little-endian: ED 01 corrisponde a 0x01ED, ovvero 493 byte di dati). Il tipo di codifica della carta è 0x80, che (in parole semplici) indica che il lettore riconosce questa come una carta finanziaria. Il Track Status (valore: 0x1F) è un byte di stato contenente flag a otto bit, che indica quali tracce erano presenti sulla banda magnetica (possono essere fino a 3) e quali sono state lette correttamente. In questo caso, tutte e 3 le tracce fisiche sono state lette con successo, ma i dati sono presenti solo sulle tracce 1 e 2.

Esaminiamo rapidamente i 5 byte successivi. Secondo Parsomatic, tali byte e i loro significati sono i seguenti:

Su una carta finanziaria, la Traccia 1 può contenere fino a 79 byte; la Traccia 2 fino a 40 byte; la Traccia 3 fino a 107 byte. In questo caso, abbiamo 76 byte (hex 0x4C) di dati per la Traccia 1 e 40 byte (0x28) per la Traccia 2. (La Traccia 3 aveva zero byte.) Conoscere queste lunghezze è importante non solo per analizzare i dati mascherati delle tracce, ma anche per determinare la lunghezza delle versioni cifrate. La lunghezza cifrata differisce dalla lunghezza nativa effettiva della traccia perché i dati devono essere riempiti (padding) fino a una lunghezza finale multiplo di 8 per la cifratura TDES, oppure multiplo di 16 per AES.

Come si stabilisce se i dati sono cifrati con TDES o con AES? Tale informazione si trova nel bit 4 del byte di stato Clear/Mask Data Sent Status (come mostrato sopra). È presente anche un byte di stato Encrypted/Hash Data Sent Status (mostrato sopra) che indica se i dati delle tracce cifrati (e gli hash di validazione) sono presenti e se esiste un KSN.

Arriviamo ora ai dati mascherati di Track 1 e Track 2, seguiti dalle rispettive versioni crittografate, da alcuni dati hash (in questo caso tutti zeri) e da altri dati (descritti di seguito). Si noti che Parsomatic ha convertito i dati ASCII della traccia in una rappresentazione esadecimale:

Si noti che Parsomatic inserisce un link "Decrypt this data" accanto ai dati crittografati (vedi sopra). Cliccando sul link, si viene reindirizzati al Strumento di Cifratura/Decifraturadi ID TECH, dove i dati in questione possono essere visualizzati in forma decrittografata.

I campi dati finali includono il numero seriale del lettore, il numero seriale della chiave (KSN), un LRC, un checksum e l'ETX (fine della trasmissione). L'LRC è semplicemente un valore in byte che rappresenta lo XOR (OR esclusivo) di tutti i byte del payload, mentre il checksum è una somma aritmetica a un byte (trascurando ovviamente l'overflow) di tutti i byte presenti nel payload. L'LRC e il checksum possono essere utilizzati per verificare l'integrità del payload. (Sono in qualche modo più semplici e rapidi da calcolare rispetto a un CRC tradizionale.)

Conclusioni

Come si può vedere, i dati MagStripe contengono molto più delle semplici "informazioni di traccia". Non abbiamo ancora approfondito il significato di alcuni campi dati (argomento che potremo trattare in un post futuro), né abbiamo discusso i dati EMV (che richiederanno sicuramente un ulteriore articolo dedicato). Tuttavia, questo dovrebbe essere un buon punto di partenza per chi desidera decodificare i dati provenienti da un lettore di carte di credito ID TECH.

Per ulteriori informazioni, si consiglia di consultare (come indicato in precedenza) la nostra documentazione tecnica sul formato dati Enhanced Encrypted MSR: ID TECH Encrypted Data Output. OPPURE clicca il link qui sotto per compiere il primo passo verso una gestione dei pagamenti più efficiente!

Inizia ora