Hogyan dekódoljuk a magstripe adatokat

A legutóbbi időkig a hitelkártyaadatok olvasása olyan egyszerű volt, mint a kártya áthúzása egy olvasón (például az ID TECH által gyártott számos olvasó egyikén), és egy virtuális terminál alkalmazás (vagy más alkalmazások) felszippantja a pályaadatokat, amint azok egyenesen az olvasóból jönnek ki. A kérdéses adatok egyszerűen csak billentyűleütésekként jelennek meg a képernyőn, kódolatlanul.

Azok voltak a régi idők!

Elég, ha annyit mondok, hogy a dolgok megváltoztak. Ma a mágnescsíkos olvasók általában titkosított adatokat adnak ki USB-n keresztül (gyakran HID módban, nem pedig billentyűzet módban), és a legtöbb kártyaolvasónak ma már a mágnescsíkos kártyák mellett a chipkártyákat is kezelni kell. A chipkártya adatai TLV-k (címkék, hossz, értékek) formájában jelennek meg, és egészen másképp nézhetnek ki, mint a korábbi évek “sima régi mágnescsíkos adatai”. Továbbá, ezek az adatok kivétel nélkül titkosítva vannak.

A legutóbbi bejegyzésekben bemutattam, hogyan lehet visszafejteni a hitelkártyaadatokat az iparági szabványos TDES és AES visszafejtő algoritmusok és az iparági szabványos (ANSI X9.24) DUKPT kulcslevezetési technikák segítségével, de arról nem beszéltünk, hogyan lehet egyáltalán dekódolt magstripe-adatokat szerezni. Hogyan néznek ki most a “hitelkártya magstripe-adatok”? Hogyan lehet megszerezni és dekódolni? Honnan tudja, hogy mely részek vannak titkosítva?

Az első kérdésre (hogyan néznek ki a magstripe-adatok?) adott válasz nagyban változik, nemcsak az Ön által használt kártyaolvasó berendezés gyártmányától és típusától függően, hanem attól is, hogy a kérdéses tranzakciót mag swipe, dip (kontakt EMV) vagy kontakt nélküli/NFC interakcióval hajtották-e végre. Általánosságban elmondható, hogy sokkal többet teszel, mint a nyers nyomvonaladatok leolvasása. Megszerzi a KSN-t (Key Serial Number) is, amely a dekódoláshoz szükséges, és különböző, a tranzakcióra vonatkozó metaadatokat gyűjt. Igaz, lehet, hogy csak a (mondjuk) nyers Track 2 adatok megszerzése érdekli, de a megszerzésük során rengeteg más adattal is foglalkoznia kell.

Vessünk egy gyors pillantást egy valós példára egy Starbucks ajándékkártyával, amelyet egy bűntudattól gyötört barista adott nekem, miután váratlanul kifogyott a mezopotámiai Kumquat-Absinthe Latte. Ha a Starbucks-kártyát áthúzzuk az ID TECH Augusta kártyaolvasón, amely billentyűzet üzemmódban működik, nyitott Notepad ablakkal (és a kurzorral a szöveges ablakban), a következő adatokat kapjuk a Notepadben:

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

Ez sokkal több, mint “nyers pályaadat”. Felismerhetjük a maszkolt nyomvonaladatokat (amelyek B%-kal kezdődnek és sok csillagot tartalmaznak, végül ?*-ra végződnek), de ez elrejti az elsődleges számlaszámot (PAN), amely valójában titkosított. A legtöbb, amit itt látsz, az az olvasóból kijövő bináris adatok hexadecimális ábrázolása.

Ezeknek a nagy tömböknek a betűzése egyszerű, ha értesz hozzá. A leggyorsabb módja a dekódolásnak, ha az adatokat lefuttatjuk az ID TECH ingyenes Parsomatic eszközén, amely egy HTML űrlap, amely képes az összes adatdarabot érthető módon megjeleníteni.

Minden kártyaolvasónak megvan a maga sajátos módja a kártyaadatok ábrázolására. Az ID TECH a magstripe-adatokat az Enhanced Encrypted MSR formátum néven ismert formátumban ábrázolja. A formátum 26 adatmezőt tartalmaz; mind a 26 mezőt részletesen ismerteti a P/N 80000502-001, ID TECH titkosított adatkimenet című dokumentum.

Azért, hogy képet kapjon arról, mi van a kártyán, nézzük az első 5 bájt adatot (02 ED 01 80 1F). A Parsomatic szerint ez az 5 bájt a következő információkat tartalmazza:

STX 02
LENGTH ED 01
Kártya kódolása. 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)

Az első byte (02) egyszerűen STX, a “start” bájt. A következő két bájt (ED 01) a teljes adattömeg hosszát jelenti hexa-byte-ban (little-endian: az ED 01 valójában 0x01ED vagy 493 bájt adatot jelent). A Card Encode típus 0x80, ami (magyarul) azt jelenti, hogy az olvasónk szerint ez egy pénzügyi kártya. A Track Status (érték: 0x1F) egy státuszbájt, amely nyolc bites zászlókat tartalmaz, hogy megtudjuk, mely sávok voltak jelen a mágnescsíkon (legfeljebb 3 lehet), és melyeket olvasták be sikeresen. Ebben az esetben mind a 3 fizikai sávot sikeresen beolvasták, de adat csak az 1. és 2. sávon van.

Nézzük meg gyorsan a következő 5 bájtot. A Parsomatic szerint ezek a bájtok és jelentésük a következő:

.

Sáv 1 hossza 4C
Sáv 2 hossza 28
Sáv 3 hossza 00
Törölt/Maszk adatok elküldésének állapota (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
Titkosított/Hash adatok elküldésének állapota (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

A pénzügyi kártyán, Az 1. sáv legfeljebb 79 bájt hosszú lehet; A 2. sáv legfeljebb 40 bájt hosszú lehet; a 3. sáv legfeljebb 107 bájt hosszú lehet. Ebben az esetben 76 bájt (hex 0x4C) adatunk van az 1. sávra és 40 bájt (0x28) adatunk a 2. sávra. (A 3. sáv nulla bájtot tartalmazott.) Ezeket a hosszúságokat nem csak a maszkolt sávadatok elemzése miatt fontos tudni, hanem a sávok titkosított változatainak hosszának meghatározásához is. A titkosított hossz különbözik a tényleges natív sávhosszúságtól, mivel a sávadatokat fel kell tölteni olyan végső hosszúságra, amely TDES titkosítás esetén 8 többszöröse, AES titkosítás esetén pedig 16 többszöröse.

Honnan tudjuk, hogy az adatok TDES-titkosításúak vagy AES-titkosításúak? Ez az információ a Clear/Mask Data Sent Status bájt 4. bitjében található (a fenti ábrán látható módon). Van egy Encrypted/Hash Data Sent státuszbájt is (fentebb látható), amelyből megtudhatjuk, hogy titkosított sávadatok (és validációs hashek) vannak-e, és hogy létezik-e KSN.

Most elérkezünk a Track 1 és Track 2 maszkolt adatokhoz, majd ezek titkosított változatai következnek, majd néhány hash adat (ebben az esetben csupa nulla), és néhány egyéb adat (alább ismertetve). Vegyük észre, hogy a Parsomatic az alábbiakban az ASCII sávadatokat hexa alakú ábrázolásra konvertálta:

Track1 Data 25 2A 36 30 31 30 30 2A 2A 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 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 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 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 3F 2A
Track1 titkosított adatok 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 Az adatok dekódolása
Track2 Titkosított adatok 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 Az adatok dekódolása
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
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 00 00 00 00 00 00 00 00 00 00 00
Reader Serial Number 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

Figyelem, hogy a Parsomatic a titkosított adatok mellé egy “Decrypt this data” linket illeszt (lásd fent). Ha rákattint a linkre, az ID TECH titkosítási/dekódolási eszközéhez jut, ahol a kérdéses adatok dekódolt formában megtekinthetők.

Az adatok utolsó mezői közé tartozik az olvasó sorszáma, a kulcs sorszáma (KSN), egy LRC, egy ellenőrző összeg és az ETX (adás vége). Az LRC egyszerűen egy bájtérték, amely az összes hasznos adatbájt XOR-ját (kizárólagos VAGY) jelenti, míg az ellenőrző összeg a hasznos adat összes bájtjának egybájtos aritmetikai összege (természetesen a túlcsordulást figyelmen kívül hagyva). Az LRC és az ellenőrző összeg felhasználható a hasznos adatállomány integritásának ellenőrzésére. (Valamivel egyszerűbb és gyorsabb kiszámítani őket, mint a megfelelő CRC-t.)

Következtetés

Amint láthatjuk, a magstripe-adatokban sokkal több van, mint a “nyomvonaladatok”. Még nem is érintettük néhány adatmező jelentőségét (talán egy későbbi bejegyzésben erre is kitérhetünk). Az EMV-adatokról sem mondtunk semmit (ez mindenképpen egy másik bejegyzést igényel). De ezzel el kell kezdenie, ha megpróbálja dekódolni az ID TECH hitelkártyaolvasóból érkező adatokat.

További információkért mindenképpen olvassa el (ahogy korábban említettem) az Enhanced Encrypted MSR adatformátumról szóló műszaki dokumentációnkat: ID TECH Encrypted Data Output. VAGY kattintson az alábbi linkre, és tegye meg az első lépést az egyszerűsített fizetés felé!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.