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 in un lettore (come uno dei numerosi lettori prodotti da ID TECH) e lasciare che un'applicazione di terminale virtuale (o altre app) acquisisse i dati di traccia direttamente in uscita dal lettore. I dati in questione comparivano semplicemente come sequenze di tasti sullo schermo, in chiaro e non cifrati.

Bei tempi!

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

Nella articoli recenti, ho mostrato come decifrare i dati delle carte di credito utilizzando gli algoritmi di cifratura standard del settore TDES e AES in combinazione con le tecniche di derivazione delle chiavi DUKPT conformi allo standard di settore (ANSI X9.24); tuttavia non abbiamo trattato come ottenere in primo luogo i dati di banda magnetica decodificati. Come si presentano oggi i "dati di banda magnetica di una carta di credito"? Come si ottengono e si decodificano? Come si riconoscono le parti cifrate?

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

La risposta alla prima domanda (come si presentano i dati di banda magnetica?) varia notevolmente, dipendendo non solo dalla marca e dal modello dell'apparecchiatura di lettura carte utilizzata, ma anche dal tipo di transazione effettuata: strisciata della banda magnetica, inserimento (EMV a contatto) o interazione contactless/NFC. In generale, il processo va ben oltre la semplice lettura dei dati di traccia grezzi: occorre anche ottenere un KSN (Key Serial Number), necessario per la decifrazione, e raccogliere vari metadati relativi alla transazione. È vero che si potrebbe essere interessati esclusivamente ai dati grezzi del Track 2, ma nel processo di acquisizione sarà comunque necessario gestire molti altri dati.

Vediamo rapidamente un esempio reale utilizzando una gift card Starbucks che mi è stata consegnata da un barista in preda ai sensi di colpa come gesto di scuse, dopo aver esaurito inaspettatamente il Latte alla Kumquat Mesopotamica e Assenzio. Strisciando la carta Starbucks nel lettore Augusta di ID TECH in modalità tastiera, con la finestra di Notepad aperta (e il cursore nel campo di testo), otteniamo in Notepad i seguenti dati:

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 in ?*), ma questi nascondono il Numero di Conto Principale (PAN), che in realtà è cifrato. La maggior parte di ciò che si vede qui è una 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 è far passare i dati attraverso il tool gratuito di ID TECH Parsomatic strumento, ovvero un modulo HTML in grado di visualizzare 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 MagStripe in un formato noto come Enhanced Encrypted MSR format. Il formato include 26 campi di dati; tutti e 26 i campi sono descritti in dettaglio nel documento P/N 80000502-001, ID TECH Encrypted Data Output.

Per avere un'idea del contenuto della carta, prendiamo in considerazione i primi 5 byte di dati (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 in realtà a 0x01ED, ovvero 493 byte di dati). Il tipo di codifica della carta è 0x80, che (in termini pratici) indica che il lettore identifica questa carta come una carta di pagamento. Il Track Status (valore: 0x1F) è un byte di stato contenente flag a otto bit, che segnala 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 correttamente, ma i dati sono presenti solo sulle tracce 1 e 2.

Analizziamo rapidamente i 5 byte successivi. Secondo Parsomatic, tali byte e i relativi significati sono i seguenti:

Su una carta di pagamento, 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) di dati per la traccia 2. (La traccia 3 non contiene alcun byte.) Conoscere queste lunghezze è fondamentale, non solo per estrarre i dati mascherati delle tracce, ma anche per determinare la lunghezza delle relative versioni cifrate. La lunghezza cifrata differisce dalla lunghezza nativa effettiva della traccia perché i dati della traccia devono essere sottoposti a padding fino a una lunghezza finale che sia un multiplo di 8 per la cifratura TDES, o un multiplo di 16 per la cifratura AES.

Come si determina se i dati sono cifrati con TDES o con AES? Tale informazione è contenuta nel bit 4 del byte di stato Clear/Mask Data Sent Status (come mostrato sopra). È inoltre presente un byte di stato Encrypted/Hash Data Sent Status (anch'esso mostrato sopra), che indica se sono presenti dati di traccia cifrati (e hash di validazione) e se esiste un KSN.

Si giunge quindi ai dati mascherati della traccia 1 e della traccia 2, seguiti dalle relative versioni cifrate, da alcuni dati hash (in questo caso tutti zeri) e da ulteriori informazioni (descritte di seguito). Si noti che Parsomatic ha convertito i dati ASCII della traccia nella seguente rappresentazione esadecimale:

Si noti che Parsomatic inserisce un link "Decrittografa questi dati" accanto ai dati cifrati (vedere sopra). Facendo clic 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 finali dei dati includono il numero di serie del lettore, il numero seriale della chiave (KSN), un LRC, un checksum e ETX (fine trasmissione). L'LRC è semplicemente un valore byte che rappresenta lo XOR (OR esclusivo) di tutti i byte del payload, mentre il checksum è una somma aritmetica di un byte (trascurando ovviamente l'overflow) di tutti i byte nel payload. L'LRC e il checksum possono essere utilizzati per verificare l'integrità del payload dei dati. (Sono in qualche modo più semplici e rapidi da calcolare rispetto a un CRC vero e proprio.)

Conclusione

Come si può vedere, c'è molto di più nei dati di una banda magnetica rispetto ai semplici "dati di traccia". Non abbiamo ancora trattato il significato di alcuni campi dati (argomento che potremo approfondire in un post futuro), né abbiamo detto nulla riguardo ai dati EMV (che richiederanno sicuramente un altro post). Tuttavia, questo dovrebbe costituire un buon punto di partenza per chi sta cercando di decodificare i dati provenienti da un lettore di carte di credito ID TECH.

Per ulteriori informazioni, si consiglia (come indicato in precedenza) di consultare la nostra documentazione tecnica sul formato dati Enhanced Encrypted MSR: ID TECH Encrypted Data Output. OPPURE fare clic sul link sottostante per compiere il primo passo verso pagamenti semplificati!

Inizia