Do nedávna bylo čtení dat z kreditních karet tak snadné, že jste kartu přejeli přes čtečku (např. jednu z mnoha čteček od ID TECH) a aplikace virtuálního terminálu (nebo jiné aplikace) nasála data ze stopy přímo ze čtečky. Dotyčná data by se jednoduše zobrazila na obrazovce jako nešifrované stisky kláves.
To byly časy!
Můžeme říci, že se věci změnily. Dnes čtečky s magnetickým proužkem zpravidla vypisují šifrovaná data, a to přes USB (často v režimu HID, nikoliv v režimu klávesnice), a většina čteček karet dnes musí kromě karet s magnetickým proužkem zpracovávat i karty čipové. Data čipových karet mají podobu TLV (tagy, délky, hodnoty) a mohou vypadat docela jinak než „obyčejná stará magstripe data“ z minulých let. Také jsou vždy zašifrovaná.
V posledních příspěvcích jsem ukázal, jak dešifrovat data kreditních karet pomocí standardních dešifrovacích algoritmů TDES a AES ve spojení se standardními (ANSI X9.24) technikami odvození klíče DUKPT, ale nemluvili jsme o tom, jak vůbec získat dekódovaná data magstripe. Jak nyní vypadají „data magstripu kreditní karty“? Jak je můžete získat a dekódovat? Jak poznáte, které části jsou zašifrované?
Odpověď na první otázku (jak vypadají data z magstripu?) se velmi liší, a to nejen v závislosti na značce a modelu zařízení pro čtení karet, které používáte, ale také na tom, zda byla daná transakce provedena prostřednictvím mag swipe, dip (kontaktní EMV) nebo bezkontaktní/NFC interakce. Obecně platí, že děláte mnohem víc než jen čtení nezpracovaných dat ze stopy. Získáváte také KSN (Key Serial Number), které je potřebné pro dešifrování, a získáváte různé druhy metadat vztahujících se k transakci. Je pravda, že vás může zajímat pouze získání (řekněme) surových dat stopy 2, ale v procesu jejich získávání budete muset pracovat i se spoustou dalších dat.
Podívejme se na krátký příklad z reálného světa s použitím dárkové karty Starbucks, kterou mi dal barista s pocitem viny jako makegood poté, co nečekaně došlo mezopotámské Kumquat-Absinthe Latte. Pokud kartu Starbucks protáhneme čtečkou karet ID TECH Augusta pracující v režimu klávesnice s otevřeným oknem Poznámkového bloku (a kurzorem v textovém okně), získáme v Poznámkovém bloku následující údaje:
02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03
To je mnohem více než „surová data o stopách“. Lze rozpoznat maskované údaje o stopách (které začínají písmenem B% a obsahují mnoho hvězdiček a nakonec končí znakem ?*), ale ty skrývají číslo primárního účtu (PAN), které je ve skutečnosti zašifrované. Většina toho, co zde vidíte, je hexadecimální reprezentace binárních dat vycházejících ze čtečky.
Přečtení tohoto velkého bloku je snadné, pokud znáte know-how. Nejrychlejší způsob, jak je dekódovat, je prohnat data bezplatným nástrojem Parsomatic společnosti ID TECH, což je formulář HTML, který dokáže všechny části dat vykreslit srozumitelným způsobem.
Každá čtečka karet má svůj vlastní proprietární způsob reprezentace dat karty. ID TECH reprezentuje data magstripe ve formátu známém jako Enhanced Encrypted MSR format. Tento formát obsahuje 26 datových polí; všech 26 polí je podrobně popsáno v dokumentu P/N 80000502-001, ID TECH Encrypted Data Output (Výstup šifrovaných dat ID TECH).
Abychom si udělali představu o tom, co je na kartě, podívejme se na prvních 5 bajtů dat (02 ED 01 80 1F). Podle Parsomaticu obsahuje těchto 5 bajtů následující informace:
STX | 02 |
LENGTH | ED 01 |
Kód karty Typ | 80 |
Stav stopy (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) |
První bajt (02) je jednoduše STX, „startovní“ bajt. Další dva bajty (ED 01) představují délku celkového datového nákladu v hexadecimálním vyjádření (little-endian: ED 01 ve skutečnosti znamená 0x01ED neboli 493 bajtů dat). Typ kódování karty je 0x80, což (v angličtině) znamená, že naše čtečka považuje tuto kartu za finanční kartu. Track Status (hodnota: 0x1F) je stavový bajt obsahující osmibitové příznaky, které informují o tom, které stopy byly na magnetickém proužku přítomny (mohou být až 3) a které byly úspěšně přečteny. V tomto případě byly úspěšně přečteny všechny 3 fyzické stopy, ale data existují pouze na stopách 1 a 2.
Podívejme se rychle na dalších 5 bajtů. Podle Parsomaticu jsou tyto bajty a jejich význam následující:
Délka stopy 1 | 4C |
Délka stopy 2 | 28 |
Délka stopy 3 | 00 |
Stav odeslaných dat (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 |
Stav odeslaných dat (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 |
Na finanční kartě, Stopa 1 může být dlouhá až 79 bajtů; Stopa 2 může být dlouhá až 40 bajtů; Stopa 3 může být dlouhá až 107 bajtů. V tomto případě máme pro stopu 1 76 bajtů (hex 0x4C) dat a pro stopu 2 40 bajtů (0x28) dat. (Stopa 3 měla nula bajtů.) Tyto délky je důležité znát nejen pro rozbor maskovaných dat stop, ale i pro určení délek šifrovaných verzí stop. Šifrovaná délka se liší od skutečné nativní délky stopy, protože data stopy musí být doplněna na konečnou délku, která je násobkem 8 pro šifrování TDES nebo násobkem 16 pro šifrování AES.
Jak poznáme, že data jsou šifrovaná TDES a AES? Tato informace je v bitu 4 stavového bajtu Clear/Mask Data Sent (jak je uvedeno výše). K dispozici je také stavový bajt Encrypted/Hash Data Sent (zobrazený výše), který informuje o tom, zda jsou přítomna šifrovaná data stopy (a validační hashe) a zda existuje KSN.
Nyní se dostáváme k maskovaným datům stopy 1 a stopy 2, následují jejich šifrované verze, po nich následují hashovací data (v tomto případě všechny nuly) a některá další data (popsaná níže). Všimněte si, že Parsomatic převedl data stopy ASCII na níže uvedenou hexadecimální reprezentaci:
Data stopy1 | 25 2A 36 30 31 30 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 3F 2A | |
Track2 Data | 3B 36 30 31 30 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 3F 2A | |
Track1 Šifrovaná data | 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 Dešifrování těchto dat | |
Track2 Šifrovaná 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 Dešifrování těchto dat | |
Track 1 | Sériové číslo čtečky | 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 |
Všimněte si, že Parsomatic vkládá vedle šifrovaných dat odkaz „Dešifrovat tato data“ (viz výše). Pokud na odkaz kliknete, dostanete se do nástroje ID TECH Encrypt/Decrypt Tool, kde si můžete daná data prohlédnout v dešifrované podobě.
Konečná pole dat obsahují sériové číslo čtečky, sériové číslo klíče (KSN), LRC, kontrolní součet a ETX (konec přenosu). LRC je jednoduše bajtová hodnota představující XOR (exkluzivní OR) všech bajtů dat užitečného zatížení, zatímco kontrolní součet je jednobajtový aritmetický součet (samozřejmě se zanedbáním přetečení) všech bajtů užitečného zatížení. LRC a kontrolní součet lze použít ke kontrole integrity datové zátěže. (Jejich výpočet je o něco jednodušší a rychlejší než výpočet správného CRC.)
Závěr
Jak tedy vidíte, v datech magstripu je mnohem víc než „data stopy“. Ani jsme se nedotkli významu některých datových polí (možná se jim budeme věnovat v některém z příštích příspěvků). Neřekli jsme si nic ani o údajích EMV (což určitě zabere další příspěvek). Ale toto by vám mělo pomoci začít, pokud se snažíte dekódovat data vycházející ze čtečky kreditních karet ID TECH.
Pro více informací si určitě (jak jsem již řekl) prostudujte naši technickou dokumentaci k formátu dat Enhanced Encrypted MSR: ID TECH Encrypted Data Output. NEBO klikněte na níže uvedený odkaz a udělejte první krok k zefektivnění plateb!