Jak zdekodować dane Magstripe

Do niedawna odczytywanie danych z kart kredytowych było tak proste, jak przeciągnięcie karty przez czytnik (jeden z wielu czytników produkowanych przez ID TECH) i posiadanie aplikacji wirtualnego terminala (lub innych aplikacji), która pochłaniała dane o ścieżce wychodzące prosto z czytnika. Dane te byłyby po prostu widoczne jako naciśnięcia klawiszy na ekranie, niezaszyfrowane.

Takie to były czasy!

Wystarczy powiedzieć, że wszystko się zmieniło. Dzisiaj, czytniki kart magnetofonowych generalnie wysyłają zaszyfrowane dane przez USB (często w trybie HID, a nie w trybie klawiatury), a większość czytników kart musi obsługiwać karty chipowe oprócz kart z paskiem magnetycznym. Dane z kart chipowych mają postać TLV (tags, length, values) i mogą wyglądać zupełnie inaczej niż „zwykłe stare dane magstripe” z lat ubiegłych. Ponadto, są one niezmiennie zaszyfrowane.

W ostatnich postach pokazałem, jak odszyfrować dane z kart kredytowych używając standardowych algorytmów deszyfrujących TDES i AES w połączeniu ze standardowymi w branży (ANSI X9.24) technikami wyprowadzania klucza DUKPT, ale nie mówiliśmy o tym, jak w ogóle uzyskać zdekodowane dane z kart magstripe. Jak teraz wyglądają „dane magnetyczne kart kredytowych”? Jak można je zdobyć i zdekodować? Skąd wiesz, które części są zaszyfrowane?

Odpowiedź na pierwsze pytanie (jak wyglądają dane magstripe?) różni się znacznie, w zależności nie tylko od marki i modelu sprzętu do odczytu kart, którego używasz, ale także od tego, czy dana transakcja została przeprowadzona poprzez mag swipe, dip (kontakt EMV), czy interakcję bezstykową/NFC. Ogólnie rzecz biorąc, robisz o wiele więcej niż tylko odczytujesz surowe dane o ścieżce. Uzyskujesz również KSN (Key Serial Number), który jest potrzebny do odszyfrowania, oraz zbierasz różnego rodzaju metadane dotyczące transakcji. Prawdą jest, że możesz być zainteresowany tylko uzyskaniem (powiedzmy) surowych danych ścieżki 2, ale w procesie ich uzyskiwania będziesz miał do czynienia również z wieloma innymi danymi.

Przyjrzyjrzyjmy się szybko rzeczywistemu przykładowi z wykorzystaniem karty podarunkowej Starbucks, którą podarował mi barista z poczuciem winy jako środek zaradczy po nieoczekiwanym wyczerpaniu się mezopotamskiej Kumquat-Absinthe Latte. Jeśli przeciągniemy kartę Starbucks przez czytnik kart Augusta firmy ID TECH pracujący w trybie klawiatury, z otwartym oknem Notatnika (i kursorem w oknie tekstowym), otrzymamy następujące dane w Notatniku:

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

To znacznie więcej niż „surowe dane śladu”. Można rozpoznać zamaskowane dane śladu (które zaczynają się od B% i zawierają wiele gwiazdek, w końcu kończą się na ?*), ale to ukrywa Główny Numer Konta (PAN), który jest w rzeczywistości zaszyfrowany. Większość z tego, co tu widzisz, to szesnastkowa reprezentacja danych binarnych wychodzących z czytnika.

Przeanalizowanie tego dużego bloku danych jest łatwe, jeśli znasz się na tym. Najszybszym sposobem dekodowania danych jest przepuszczenie ich przez darmowe narzędzie Parsomatic firmy ID TECH, będące formularzem HTML, który jest w stanie przedstawić wszystkie elementy danych w zrozumiały sposób.

Każdy czytnik kart ma swój własny, zastrzeżony sposób reprezentowania danych karty. ID TECH przedstawia dane z paska magnetofonowego w formacie znanym jako Enhanced Encrypted MSR format. Format ten obejmuje 26 pól danych; wszystkie 26 pól zostało szczegółowo opisane w dokumencie P/N 80000502-001, ID TECH Encrypted Data Output.

Aby dać Ci wyobrażenie o tym, co znajduje się na karcie, rozważmy pierwsze 5 bajtów danych (02 ED 01 80 1F). Według Parsomatic, te 5 bajtów zawiera następujące informacje:

STX 02
LENGTH ED 01
Kod karty. 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)

Pierwszy bajt (02) to po prostu STX, bajt „startowy”. Następne dwa bajty (ED 01) reprezentują długość w heksach całego ładunku danych (little-endian: ED 01 oznacza 0x01ED lub 493 bajty danych). Typ Card Encode wynosi 0x80, co (w języku angielskim) oznacza, że nasz czytnik uważa, że jest to karta finansowa. Track Status (wartość: 0x1F) to bajt statusowy zawierający ośmiobitowe flagi informujące o tym, które ścieżki były obecne na pasku magnetycznym (może ich być maksymalnie 3) i które z nich zostały odczytane z powodzeniem. W tym przypadku, wszystkie 3 ścieżki fizyczne zostały odczytane pomyślnie, ale dane istnieją tylko na ścieżkach 1 i 2.

Przyjrzyjmy się szybko następnym 5 bajtom. Według Parsomatic, bajty te i ich znaczenia są następujące:

.

Track 1 Length 4C
Track 2 Length 28
Track 3 Length 00
Stan wysłania danych czystych/maski (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
Stan wysłania danych zaszyfrowanych/hash (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 karcie finansowej, Ścieżka 1 może mieć długość do 79 bajtów; Ścieżka 2 może mieć długość do 40 bajtów; Ścieżka 3 może mieć długość do 107 bajtów. W tym przypadku, mamy 76 bajtów (hex 0x4C) danych dla ścieżki 1 i 40 bajtów (0x28) danych dla ścieżki 2. (Ścieżka 3 ma zero bajtów.) Te długości są ważne do poznania, nie tylko dla przetwarzania zamaskowanych danych ścieżek, ale dla określenia długości zaszyfrowanych wersji ścieżek. Zaszyfrowana długość jest inna niż rzeczywista natywna długość ścieżki, ponieważ dane ścieżki muszą być wypełnione do ostatecznej długości, która jest wielokrotnością 8 dla szyfrowania TDES, lub wielokrotnością 16 dla AES.

Skąd wiemy, czy dane są szyfrowane TDES czy AES? Informacja ta znajduje się w bicie 4 bajtu Clear/Mask Data Sent Status (jak pokazano powyżej). Istnieje również bajt statusu Encrypted/Hash Data Sent (pokazany powyżej), który informuje o obecności zaszyfrowanych danych śladu (i haszy walidacyjnych) oraz o istnieniu KSN.

Teraz mamy dane maskowane śladu 1 i śladu 2, a następnie ich zaszyfrowane wersje, a następnie niektóre dane hash (w tym przypadku wszystkie zera) i niektóre inne dane (opisane poniżej). Zauważ, że Parsomatic przekonwertował dane ścieżek ASCII na poniższą reprezentację heksadecymalną:

.

Dane ścieżki1 25 2A 36 30 31 30 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 3F 2A
Track2 Data 3B 36 30 31 30 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 3F 2A 2A 2A
Ścieżka1 Dane zaszyfrowane 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 Odszyfruj te dane
Track2 Zaszyfrowane dane 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 Odszyfruj te dane
Ścieżka 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
Ścieżka 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00607>
Liczba seryjna czytnika 36 31 33 54 35 33 35 36 31 38
KSN 62 99 49 00 75 00 02 A0 03 08
LRC 10
LRC 10
Checksum 8E
ETX 03

Zauważ, że Parsomatic wstawia link „Decrypt this data” obok zaszyfrowanych danych (patrz wyżej). Kliknięcie tego linku powoduje przejście do narzędzia szyfrowania/deszyfrowania firmy ID TECH, gdzie można obejrzeć dane w postaci odszyfrowanej.

Ostatnie pola danych obejmują numer seryjny czytnika, numer seryjny klucza (KSN), LRC, sumę kontrolną oraz ETX (koniec transmisji). LRC jest po prostu wartością bajtową reprezentującą XOR (exclusive OR) wszystkich bajtów danych payload, podczas gdy suma kontrolna jest jednobajtową sumą arytmetyczną (pomijając oczywiście przepełnienie) wszystkich bajtów w payload. LRC i suma kontrolna mogą być użyte do sprawdzenia integralności ładunku danych. (Są one nieco łatwiejsze i szybsze do obliczenia niż właściwy CRC.)

Wnioski

Jak więc widzisz, w danych magistrali jest o wiele więcej niż „dane ścieżki”. Nie poruszyliśmy nawet znaczenia niektórych pól danych (może uda nam się to zrobić w przyszłym poście). Nie powiedzieliśmy też nic o danych EMV (co zdecydowanie zajmie kolejny post). Powinno to jednak ułatwić rozpoczęcie próby rozszyfrowania danych pochodzących z czytnika kart kredytowych ID TECH.

Aby uzyskać więcej informacji, należy (jak już wspomniałem wcześniej) zapoznać się z naszą dokumentacją techniczną dotyczącą formatu Enhanced Encrypted MSR: ID TECH Encrypted Data Output. LUB kliknij poniższe łącze, aby zrobić pierwszy krok w kierunku usprawnienia płatności!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.