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!