Jak dekódovat data z Magstripu

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!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.