Miten magstripe-tiedon purkaminen

Viime aikoihin asti luottokorttitietojen lukeminen oli yhtä helppoa kuin kortin pyyhkäiseminen lukijan läpi (kuten yksi ID TECHin monista lukijoista) ja virtuaalisen päätelaitteen sovelluksen (tai muiden sovellusten) käyttäminen ratatiedon keräämiseen, kun se tulee suoraan lukijasta ulos. Kyseiset tiedot näkyisivät yksinkertaisesti näppäinpainalluksina näytöllä, salaamattomina.

Sellaista se oli aikoinaan!

Tulee sanoa, että asiat ovat muuttuneet. Nykyään magneettijuovalukijat antavat yleensä salattua dataa USB:n kautta (usein HID-tilassa, ei näppäimistötilassa), ja useimmat kortinlukijat joutuvat nykyään käsittelemään sirukortteja magneettijuovakorttien lisäksi. Sirukorttien tiedot ovat TLV-muodossa (tags, length, values), ja ne voivat näyttää aivan erilaisilta kuin menneiden vuosien ”tavalliset magneettijuovakorttien tiedot”. Lisäksi ne ovat poikkeuksetta salattuja.

Viime viesteissä näytin, miten luottokorttitiedot puretaan käyttämällä alan standardien mukaisia TDES- ja AES-purkualgoritmeja yhdessä alan standardien (ANSI X9.24) mukaisten DUKPT-avainten derivointitekniikoiden kanssa, mutta emme puhuneet siitä, miten magneettijuovakorttidatan purkaminen onnistuu alun perin. Miltä ”luottokortin magneettinauhatiedot” näyttävät nyt? Miten ne voidaan hankkia ja purkaa? Mistä tiedät, mitkä osat ovat salattuja?

Vastaus ensimmäiseen kysymykseen (miltä magneettijuovakorttitiedot näyttävät?) vaihtelee paljon riippuen paitsi käyttämäsi kortinlukulaitteen merkistä ja mallista myös siitä, onko kyseinen maksutapahtuma tehty magneettijuovakorttipyyhkäisyllä (magneettijuovakorttipyyhkäisy), dippikorttipyyhkäisyllä (kosketinkortti-EMV-järjestelmä) vai kosketinkorttipyyhkäisy-/NFC-interaktiolla. Yleisesti ottaen teet paljon muutakin kuin luet pelkkiä raakatietoja. Hankit myös KSN:n (Key Serial Number), jota tarvitaan salauksen purkamiseen, ja keräät erilaisia tapahtumaan liittyviä metatietoja. On totta, että saatat olla kiinnostunut vain (vaikkapa) raa’an Track 2 -datan hankkimisesta, mutta sitä hankkiessasi joudut käsittelemään paljon muutakin dataa.

Katsotaanpa nopeasti reaalimaailman esimerkki, jossa käytetään Starbucksin lahjakorttia, jonka syyllisyydentunnoltaan kärsinyt baarimestari antoi minulle hyvitykseksi sen jälkeen, kun Mesopotamian Kumquat-Absinthe Latte oli yllättäen loppunut. Jos pyyhkäisemme Starbucksin kortin ID TECHin Augusta-kortinlukijan läpi, joka toimii näppäimistötilassa, kun Notepad-ikkuna on auki (ja kursori on teksti-ikkunassa), saamme Notepadissa seuraavat tiedot:

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

Tämä on paljon muutakin kuin ”raakaa ratatietoa”. Voit tunnistaa naamioidut ratatiedot (jotka alkavat B%:lla ja sisältävät monia tähtiä, jotka päättyvät lopulta ?*:aan), mutta ne peittävät ensisijaisen tilinumeron (Primary Account Number, PAN), joka on itse asiassa salattu. Suurin osa siitä, mitä näet tässä, on lukijasta tulevan binääridatan heksadesimaalinen esitys.

Tämän ison kokonaisuuden tulkitseminen on helppoa, jos osaat. Nopein tapa purkaa se on ajaa tiedot ID TECHin ilmaisen Parsomatic-työkalun läpi, joka on HTML-lomake, joka voi esittää kaikki datan palaset ymmärrettävästi.

Jokainen kortinlukija käyttää omaa omaa tapaansa esittää korttitiedot. ID TECH esittää magstripe-tiedot muodossa, joka tunnetaan nimellä Enhanced Encrypted MSR format. Formaatti sisältää 26 tietokenttää; kaikki 26 kenttää on kuvattu yksityiskohtaisesti asiakirjassa P/N 80000502-001, ID TECH Encrypted Data Output.

Jotta saisit käsityksen siitä, mitä kortilla on, tarkastellaan viiden ensimmäisen tavun dataa (02 ED 01 80 1F). Parsomaticin mukaan nämä 5 tavua sisältävät seuraavat tiedot:

STX 02
LENGTH ED 01
Kortin koodaus. 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)

Ensimmäinen tavu (02) on yksinkertaisesti STX, ”aloitus”-tavu. Seuraavat kaksi tavua (ED 01) edustavat koko datan hyötykuorman pituutta heksadesimaalina (little-endian: ED 01 tarkoittaa itse asiassa 0x01ED eli 493 tavua dataa). Kortin koodityyppi on 0x80, mikä tarkoittaa (suomeksi), että lukijamme pitää korttia rahoituskorttina. Track Status (arvo: 0x1F) on tilatavu, joka sisältää kahdeksanbittisiä lipputunnuksia, joiden avulla saat tietää, mitä raitoja magneettijuovassa oli (niitä voi olla enintään kolme) ja mitkä niistä luettiin onnistuneesti. Tässä tapauksessa kaikki kolme fyysistä raitaa luettiin onnistuneesti, mutta tietoja on vain raidoilla 1 ja 2.

Katsotaanpa nopeasti seuraavat viisi tavua. Parsomaticin mukaan nämä tavut ja niiden merkitykset ovat seuraavat:

.

Rata 1 Pituus 4C
Rata 2 Pituus 28
Rata 3 Pituus 00
Tyhjennä/Maskeeraa lähetetyn tiedon tila (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
Salattu/Hakki lähetetyn tiedon tila (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

Rahoituskortilla, Rata 1 voi olla enintään 79 tavua pitkä; Rata 2 voi olla enintään 40 tavua pitkä; Rata 3 voi olla enintään 107 tavua pitkä. Tässä tapauksessa meillä on 76 tavua (hex 0x4C) tietoa raidalla 1 ja 40 tavua (0x28) tietoa raidalla 2. (Raidalla 3 oli nolla tavua.) Nämä pituudet on tärkeää tietää, ei vain naamioidun raidatiedon analysoimiseksi vaan myös raitojen salattujen versioiden pituuksien määrittämiseksi. Salattu pituus on erilainen kuin varsinainen natiiviraidan pituus, koska raidat on täytettävä lopulliseen pituuteen, joka on 8:n monikerta TDES-salauksessa tai 16:n monikerta AES-salauksessa.

Miten tiedämme, onko data TDES-salattua vai AES-salattua? Tieto on Clear/Mask Data Sent Status -tavun bitissä 4 (kuten yllä näkyy). On myös Encrypted/Hash Data Sent -tilabyytti (kuvattu yllä), joka kertoo, onko mukana salattua raidedataa (ja validointihasheja) ja onko KSN olemassa.

Sitten pääsemme Track 1:n ja Track 2:n maskeerattuun dataan, sen jälkeen näiden salattuihin versioihin, sen jälkeen joihinkin hashedatatietoihin (tässä tapauksessa kaikki nollat) ja joihinkin muihin tietoihin (kuvattu alla). Huomaa, että Parsomatic on muuntanut ASCII-raidat alla olevaan heksadesiminaatioon:

Checksum

Track1 Data 25 2A 36 30 31 30 30 2A 2A 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 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 30 30 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 38 37 36 35 3D 2A 2A 2A 2A 2A 2A 2A 2A 3A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A
Rata1 Salatut tiedot 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 Tietojen purku
Track2 Salattu data 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 Tämän datan salauksen purku
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 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 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 00 00 00 00 00 00 00 Lukijan sarjanumero 36 31 33 54 35 33 35 36 31 38
KSN 62 99 49 49 00 75 00 02 A0 03 08
LRC 10 8E
ETX 03

Huomaa, että Parsomatic lisää salatun datan viereen linkin ”Decrypt this data” (dekoodaa tämä data) (ks. edellä). Jos napsautat linkkiä, pääset ID TECHin Encrypt/Decrypt Tool -työkaluun, jossa kyseisiä tietoja voidaan tarkastella puretussa muodossa.

Tietojen viimeiset kentät sisältävät lukijan sarjanumeron, avaimen sarjanumeron (KSN), LRC:n, tarkistussumman ja ETX:n (lähetyksen loppu). LRC on yksinkertaisesti tavuarvo, joka edustaa kaikkien hyötykuorman datatavujen XOR-arvoa (eksklusiivinen OR), kun taas tarkistussumma on kaikkien hyötykuorman tavujen yhden tavun aritmeettinen summa (luonnollisesti unohtamatta ylivuotoa). LRC:tä ja tarkistussummaa voidaan käyttää hyötykuorman eheyden tarkistamiseen. (Ne ovat jonkin verran helpompia ja nopeampia laskea kuin varsinainen CRC.)

Johtopäätös

Kuten huomaat, magstripe-tiedoissa on paljon muutakin kuin ”ratatiedot”. Emme ole edes käsitelleet joidenkin tietokenttien merkitystä (ehkä voimme käsitellä sitä tulevassa postauksessa). Emme ole myöskään puhuneet mitään EMV-tiedoista (siihen tarvitaan ehdottomasti toinen viesti). Tämän pitäisi kuitenkin auttaa sinua alkuun, jos yrität purkaa ID TECH -luottokortinlukijasta tulevia tietoja.

Lisätietoja saat (kuten aiemmin sanoin) teknisestä dokumentaatiostamme Enhanced Encrypted MSR -tietomuodosta: ID TECH Encrypted Data Output. TAI klikkaa alla olevaa linkkiä ja ota ensimmäinen askel kohti virtaviivaistettuja maksuja!

Vastaa

Sähköpostiosoitettasi ei julkaista.