Como Decodificar Dados Magstripe

Até recentemente, ler dados de cartões de crédito era tão fácil como passar um cartão através de um leitor (como um dos muitos leitores feitos pela ID TECH) e ter um aplicativo terminal virtual (ou outros aplicativos) desleixar os dados da pista à medida que eles saem diretamente do leitor. Os dados em questão simplesmente apareceriam como toques de tecla numa tela, não criptografada.

Foi nos dias!

Suffice it to say, as coisas mudaram. Hoje em dia, os leitores de banda magnética geralmente saem dados encriptados, através de USB (muitas vezes em modo HID, em vez de modo teclado), e a maioria dos leitores de cartões de hoje em dia têm de lidar com cartões com chip, além dos cartões de banda magnética. Os dados do cartão chip assumem a forma de TLVs (tags, comprimento, valores) e podem parecer um pouco diferentes dos “velhos dados de bandas magnéticas” de anos passados. Também é invariavelmente encriptado.

Em posts recentes, mostrei como desencriptar dados de cartões de crédito usando algoritmos de desencriptação padrão da indústria TDES e AES em conjunto com técnicas de derivação de chaves padrão da indústria (ANSI X9.24) DUKPT, mas não falámos sobre como obter dados descodificados de bandas magnéticas em primeiro lugar. Como são agora os “dados das bandas magnéticas de cartão de crédito”? Como se pode obtê-los e descodificá-los? Como você sabe quais partes são criptografadas?

A resposta à primeira pergunta (como são os dados da banda magnética?) varia muito, dependendo não só da marca e modelo do equipamento de leitura de cartões que você está usando, mas também se a transação em questão foi feita através de mag swipe, dip (contato EMV), ou interação contactless/NFC. Em geral, você está fazendo muito mais do que apenas ler dados brutos da pista. Você também está obtendo um KSN (Key Serial Number), que é necessário para a decriptação, e coletando vários tipos de metadados relativos à transação. É verdade, você pode estar apenas interessado em obter (digamos) dados brutos da pista 2, mas no processo de obtenção, você terá que lidar com muitos outros dados, também.

Vamos dar uma olhada rápida em um exemplo do mundo real usando um cartão presente da Starbucks dado a mim por um barista culpado como um makegood depois de ficar sem Kumquat-Absinthe Latte Mesopotâmico inesperadamente. Se passarmos o cartão Starbucks pelo leitor de cartões Augusta da ID TECH operando em modo teclado, com a janela do Notepad aberta (e o cursor na janela de texto), obtemos os seguintes dados no Notepad:

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

Isto é muito mais do que “dados brutos da pista”. Você pode reconhecer os dados da faixa mascarada (que começa com B% e contém muitos asteriscos, finalmente terminando em ?*), mas isso esconde o Número de Conta Primário (PAN), que na verdade é criptografado. A maior parte do que você está vendo aqui é uma representação hexadecimal dos dados binários saindo do leitor.

Parar este grande bloco de coisas é fácil se você souber. A maneira mais rápida de decodificá-lo é executar os dados através da ferramenta gratuita Parsomatic do ID TECH, que é um formulário HTML que pode renderizar todos os dados de forma inteligível.

Todos os leitores de cartões têm sua própria maneira proprietária de representar os dados dos cartões. O ID TECH representa dados de banda magnética num formato conhecido como Enhanced Encrypted MSR format. O formato inclui 26 campos de dados; todos os 26 campos são descritos em detalhe no documento P/N 80000502-001, Saída de Dados ID TECH Criptografada.

Para lhe dar uma idéia do que está no cartão, vamos considerar os primeiros 5 bytes de dados (02 ED 01 80 1F). De acordo com a Parsomatic, estes 5 bytes contêm a seguinte informação:

STX 02
LENGTH ED 01
Card Encode Tipo 80
Status da pista (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)

O primeiro byte (02) é simplesmente STX, o byte “start”. Os dois bytes seguintes (ED 01) representam o comprimento, em hexadecimal, da carga total de dados (little-endian: ED 01 na verdade significa 0x01ED ou 493 bytes de dados). O tipo Card Encode é 0x80, o que (em inglês) significa que o nosso leitor considera que se trata de um cartão financeiro. Track Status (valor: 0x1F) é um byte de status contendo bandeiras de oito bits, para que você saiba quais faixas estavam presentes na banda magnética (pode haver até 3) e quais foram lidas com sucesso. Neste caso, todas as 3 pistas físicas foram lidas com sucesso, mas os dados só existem nas pistas 1 e 2.

Vejamos rapidamente os próximos 5 bytes. De acordo com Parsomatic, esses bytes, e seus significados são os seguintes:

Pista 1 Comprimento 4C
Pista 2 Comprimento 28
Pista 3 Comprimento 00
Clear/Mask Data Sent Status (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
Encrypted/Hash Data Sent Status (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

Em um cartão financeiro, A faixa 1 pode ter até 79 bytes de comprimento; A pista 2 pode ter até 40 bytes; a pista 3 pode ter até 107 bytes. Neste caso, temos 76 bytes (hex 0x4C) de dados para a Faixa 1 e 40 bytes (0x28) de dados para a Faixa 2. (A Faixa 3 tinha zero bytes.) Estes comprimentos são importantes de saber, não só para analisar os dados da faixa mascarada, mas para determinar os comprimentos das versões criptografadas das faixas. O comprimento encriptado é diferente do comprimento real da faixa nativa, porque os dados da faixa devem ser encriptados até um comprimento final que é um múltiplo de 8 para encriptação TDES, ou um múltiplo de 16 para AES.

Como sabemos se os dados estão encriptados em TDES versus AES encriptados? Essa informação está no bit 4 do byte Clear/Mask Data Sent Status (como mostrado acima). Há também um byte de status Encriptado/Hash Data Sent (mostrado acima) para que você saiba se os dados criptografados da pista (e hashes de validação) estão presentes e se existe um KSN.

Agora chegamos ao Track 1 e Track 2 dados mascarados, seguidos pelas versões criptografadas destes, seguidos por alguns dados de hash (neste caso, todos os zeros), e alguns outros dados (descritos abaixo). Note que a Parsomatic converteu os dados da pista ASCII para uma representação hexadecimal abaixo:

Track1 Dados 25 2A 36 30 31 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 45 52 45 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 3F 2A
Track2 Data 3B 36 30 31 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 3F 2A
Track1 Dados encriptados 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 Decifrar estes dados
Track2 Dados Encriptados 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 Decifrar estes dados
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
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
Número de série do leitor 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

Note que a Parsomatic insere um link “Decodificar estes dados” ao lado dos dados criptografados (ver acima). Se você clicar no link, ele o levará para ID TECH’s Encrypt/Decrypt Tool, onde os dados em questão podem ser vistos de forma descriptografada.

Os campos finais dos dados incluem o Reader Serial Number, o Key Serial Number (KSN), um LRC, um checksum, e ETX (fim da transmissão). O LRC é simplesmente um valor de byte que representa o XOR (OR exclusivo) de todos os bytes de dados da carga útil, enquanto o checksum é uma soma aritmética de um byte (negligenciando o excesso, obviamente) de todos os bytes da carga útil. O LRC e o checksum podem ser usados para verificar a integridade da carga útil de dados. (Eles são um pouco mais fáceis e rápidos de calcular do que um CRC apropriado.)

Conclusion

Então, como você pode ver, há muito mais dados de uma risca magnética do que “track data”. Nós ainda nem tocamos no significado de alguns dos campos de dados (talvez possamos ir lá em um post futuro). Também não dissemos nada sobre os dados EMV (que definitivamente vão levar outro post). Mas isto deve começar se você estiver tentando decodificar os dados provenientes de um leitor de cartão de crédito ID TECH.

Para mais informações, certifique-se (como eu disse anteriormente) de consultar nossa documentação técnica sobre o formato de dados MSR Criptografado Avançado: ID TECH Encrypted Data Output. OU clique no link abaixo para dar o primeiro passo em direção a pagamentos simplificados!

Deixe uma resposta

O seu endereço de email não será publicado.