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é!