Cum să decodificați datele Magstripe

Până de curând, citirea datelor cardurilor de credit era la fel de simplă ca și cum ai trece un card printr-un cititor (cum ar fi unul dintre numeroasele cititoare produse de ID TECH) și o aplicație de terminal virtual (sau alte aplicații) ar absorbi datele de urmărire pe măsură ce acestea ies direct din cititor. Datele în cauză ar apărea pur și simplu ca apăsări de taste pe un ecran, necriptate.

Acestea erau vremurile!

Suficient să spunem că lucrurile s-au schimbat. Astăzi, cititoarele de bandă magnetică emit, în general, date criptate, prin USB (adesea în modul HID, mai degrabă decât în modul tastatură), iar majoritatea cititoarelor de carduri din ziua de azi trebuie să gestioneze carduri cu cip, pe lângă cele cu bandă magnetică. Datele cardurilor cu cip se prezintă sub formă de TLV (etichete, lungime, valori) și pot avea un aspect destul de diferit față de „vechile date magstripe simple” din anii trecuți. De asemenea, acestea sunt invariabil criptate.

În postările recente, am arătat cum se decriptează datele cardurilor de credit folosind algoritmi de decriptare TDES și AES standard din industrie împreună cu tehnici de derivare a cheilor DUKPT standard din industrie (ANSI X9.24), dar nu am vorbit despre cum se obțin datele decodate ale benzii magnetice în primul rând. Cum arată acum „datele privind banda magnetică a cardului de credit”? Cum puteți să le obțineți și să le decodificați? De unde știți care părți sunt criptate?

Răspunsul la prima întrebare (cum arată datele de pe banda magnetică?) variază foarte mult, în funcție nu numai de marca și modelul echipamentului de citire a cardului pe care îl folosiți, ci și de faptul că tranzacția în cauză a fost efectuată prin intermediul unei glisări magnetice, prin imersie (contact EMV) sau prin interacțiune fără contact/NFC. În general, faceți mult mai mult decât să citiți date brute de urmărire. De asemenea, obțineți un KSN (Key Serial Number), care este necesar pentru decriptare, și colectați diverse tipuri de metadate referitoare la tranzacție. Este adevărat, s-ar putea să fiți interesat doar de obținerea (să zicem) a datelor brute ale pistei 2, dar, în procesul de obținere a acestora, va trebui să vă ocupați și de multe alte date.

Să aruncăm o privire rapidă asupra unui exemplu din lumea reală, folosind un card cadou Starbucks oferit de un barman vinovat ca o soluție de rezervă după ce am rămas în mod neașteptat fără Mesopotamia Kumquat-Absinthe Latte. Dacă trecem cardul Starbucks prin cititorul de carduri Augusta de la ID TECH care funcționează în modul tastatură, cu fereastra Notepad deschisă (și cursorul în fereastra de text), obținem următoarele date în Notepad:

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

Aceasta este mult mai mult decât „date brute de urmărire”. Puteți recunoaște datele de urmărire mascate (care încep cu B% și conțin multe asteriscuri, terminându-se în cele din urmă cu ?*), dar acestea ascund numărul de cont principal (PAN), care este de fapt criptat. Cea mai mare parte din ceea ce vedeți aici este o reprezentare hexazecimală a datelor binare care ies din cititor.

Pariția acestui bloc mare de informații este ușoară dacă aveți know-how. Cel mai rapid mod de a le decoda este să rulați datele prin instrumentul gratuit Parsomatic al ID TECH, care este un formular HTML care poate reda toate bucățile de date într-o manieră inteligibilă.

Care cititor de carduri are propriul său mod proprietar de a reprezenta datele cardului. ID TECH reprezintă datele de bandă magnetică într-un format cunoscut sub numele de format MSR criptat îmbunătățit (Enhanced Encrypted MSR). Formatul include 26 de câmpuri de date; toate cele 26 de câmpuri sunt descrise în detaliu în documentul P/N 80000502-001, ID TECH Encrypted Data Output (Ieșirea datelor criptate ID TECH).

Pentru a vă face o idee despre ceea ce se află pe card, să luăm în considerare primii 5 octeți de date (02 ED 01 80 1F). Conform Parsomatic, acești 5 octeți conțin următoarele informații:

STX 02
LENGTH ED 01
Card Encode Type 80
Track Status (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)

Primul octet (02) este pur și simplu STX, octetul de „start”. Următorii doi octeți (ED 01) reprezintă lungimea, în hexagonal, a încărcăturii totale de date (little-endian: ED 01 înseamnă de fapt 0x01ED sau 493 de octeți de date). Tipul Card Encode este 0x80, ceea ce (în engleză) înseamnă că cititorul nostru consideră că acesta este un card financiar. Track Status (valoare: 0x1F) este un octet de stare care conține stegulețe pe opt biți, pentru a vă permite să știți ce piste erau prezente pe banda magnetică (pot fi până la 3) și care dintre ele au fost citite cu succes. În acest caz, toate cele 3 piste fizice au fost citite cu succes, dar datele există doar pe pistele 1 și 2.

Să ne uităm rapid la următorii 5 octeți. Conform Parsomatic, acei octeți și semnificațiile lor sunt după cum urmează:

.

Pistă 1 Lungime 4C
Pistă 2 Lungime 28
Pistă 3 Lungime 00
Clear/Mask Data Sent Status (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
Encrypted/Hash Data Sent Status (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

Pe un card financiar, pista 1 poate avea o lungime de până la 79 de octeți; pista 2 poate avea o lungime de până la 40 de octeți; pista 3 poate avea o lungime de până la 107 octeți. În acest caz, avem 76 de octeți (hex 0x4C) de date pentru Track 1 și 40 de octeți (0x28) de date pentru Track 2. (Pista 3 a avut zero octeți.) Aceste lungimi sunt importante de știut, nu numai pentru a analiza datele piesei mascate, ci și pentru a determina lungimile versiunilor criptate ale pieselor. Lungimea criptată este diferită de lungimea reală a piesei native deoarece datele piesei trebuie să fie umplute până la o lungime finală care este un multiplu de 8 pentru criptarea TDES sau un multiplu de 16 pentru AES.

Cum știm dacă datele sunt criptate TDES sau AES? Această informație se află în bitul 4 al octetului de stare Clear/Mask Data Sent Status (așa cum se arată mai sus). Există, de asemenea, un octet de stare Encrypted/Hash Data Sent (arătat mai sus) pentru a vă permite să știți dacă sunt prezente datele criptate ale pistei (și hash-urile de validare) și dacă există un KSN.

Acum ajungem la datele mascate ale pistei 1 și ale pistei 2, urmate de versiunile criptate ale acestora, urmate de niște date hash (în acest caz, toate zerourile) și de alte date (descrise mai jos). Rețineți că Parsomatic a convertit datele ASCII ale pistei într-o reprezentare hexagonală mai jos:

Track1 Data 25 2A 36 30 31 30 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 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 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A
Track2 Data 3B 36 30 30 31 30 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 38 37 36 35 35 3D 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 3F 2A
Track1 Encrypted Data 95 02 5C 86 98 7E 4F 7D D0 7D 58 73 0E B7 9F DF B9 0A B7 F2 3E 6E 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 Descifrați aceste date
Track2 Date criptate 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 Decriptați aceste date
Track 1 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
Track 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 00 00
Număr de serie al cititorului 36 31 33 54 35 33 35 35 36 31 38
KSN 62 99 49 00 00 75 00 00 02 A0 03 08
LRC 10
Checksum 8E
ETX 03

Observați că Parsomatic inserează o legătură „Decrypt this data” (Decriptați aceste date) lângă datele criptate (a se vedea mai sus). Dacă faceți clic pe acest link, acesta vă duce la instrumentul de criptare/decriptare al ID TECH, unde datele în cauză pot fi vizualizate în formă decriptată.

Câmpurile finale de date includ numărul de serie al cititorului, numărul de serie al cheii (KSN), un LRC, o sumă de control și ETX (sfârșitul transmiterii). LRC este pur și simplu o valoare de octet care reprezintă XOR (OR exclusiv) a tuturor octeților de date din încărcătura utilă, în timp ce suma de control este o sumă aritmetică de un octet (neglijând depășirea, evident) a tuturor octeților din încărcătura utilă. LRC și suma de control pot fi utilizate pentru a verifica integritatea încărcăturii utile de date. (Sunt oarecum mai ușor și mai rapid de calculat decât un CRC propriu-zis.)

Concluzie

Așa că, după cum puteți vedea, datele unei benzi magnetice conțin mult mai mult decât „date de urmărire”. Nici măcar nu am atins semnificația unora dintre câmpurile de date (poate vom aborda acest aspect într-o postare viitoare). Nici nu am spus nimic despre datele EMV (ceea ce va necesita cu siguranță o altă postare). Dar acest lucru ar trebui să vă ajute să începeți dacă încercați să decodificați datele care ies dintr-un cititor de carduri de credit ID TECH.

Pentru mai multe informații, asigurați-vă (așa cum am spus mai devreme) că consultați documentația noastră tehnică privind formatul de date Enhanced Encrypted MSR: ID TECH Encrypted Data Output. SAU faceți clic pe linkul de mai jos pentru a face primul pas spre plăți simplificate!

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.