Post Técnico
Como Decodificar Dados de MagStripe
Até pouco tempo atrás, ler dados de cartão de crédito era tão simples quanto passar um cartão por um leitor (como um dos muitos leitores fabricados pela ID TECH) e deixar um aplicativo de terminal virtual (ou outros aplicativos) capturar os dados da trilha diretamente da saída do leitor. Os dados em questão simplesmente apareciam como teclas digitadas na tela, sem criptografia.
Eram outros tempos!
Não é preciso dizer muito: as coisas mudaram. Hoje, os leitores de MagStripe geralmente transmitem dados criptografados via USB (frequentemente no modo HID, em vez do modo teclado), e a maioria dos leitores de cartão precisa lidar com cartões com chip, além dos cartões de tarja magnética. Os dados de cartões com chip se apresentam no formato TLV (tags, comprimento, valores) e podem ser bastante diferentes dos "dados de MagStripe simples" de anos atrás. Além disso, estão invariavelmente criptografados.
Em publicações recentes, demonstrei como descriptografar dados de cartão de crédito utilizando os algoritmos padrão do setor TDES e AES em conjunto com as técnicas de derivação de chave DUKPT (ANSI X9.24), mas não abordamos como obter dados de MagStripe decodificados. Como são os dados de MagStripe de cartão de crédito atualmente? Como obtê-los e decodificá-los? Como identificar quais partes estão criptografadas?
Hoje, os leitores de cartão geralmente transmitem dados criptografados via USB (frequentemente no modo HID, em vez do modo teclado), e a maioria dos leitores de cartão precisa lidar com cartões com chip, além dos cartões de tarja magnética.
A resposta à primeira pergunta (como são os dados de MagStripe?) varia bastante, dependendo não apenas da marca e do modelo do equipamento leitor de cartão utilizado, mas também de como a transação foi realizada — por leitura de tarja magnética, inserção (EMV por contato) ou interação sem contato/NFC. Em geral, o processo vai muito além da simples leitura dos dados brutos da trilha. É necessário obter também um KSN (Key Serial Number), indispensável para a descriptografia, além de coletar diversos metadados relacionados à transação. É claro que o objetivo pode ser apenas obter os dados brutos da Trilha 2, mas no processo será necessário lidar com muitos outros dados também.
Vejamos um exemplo prático usando um cartão-presente da Starbucks que me foi dado por um barista arrependido como compensação após ficar inesperadamente sem o Latte de Kumquat-Absinto da Mesopotâmia. Ao passar o cartão Starbucks pelo leitor de cartões Augusta da ID TECH operando no modo teclado, com o Bloco de Notas aberto (e o cursor na janela de texto), obtemos os seguintes dados no Bloco de Notas:
02ED01801F4C2800839B%*6010********8765^0254/SERVICERECOVERYUSD^*******************************?*;6010********8765=********************?*95025C86987E4F7DD07D58730EB79FDFB90AB7F23E6ECA6F4F04A67BF511EE13F950903BDE77624680C460E9C36C4F9136256BB93A38CB98F95626DCFAF9335CE0A213074CC1CD84CC911398E06756C464AB036B694228ADA7EC018F495A013AF8A04C976288FE2F80271E6E53D987DE19ACA2707BFF2C78000000000000000000000000000000000000000000000000000000000000000000000000000000003631335435333536313862994900750002A00308108E03
Isso é muito mais do que "dados brutos de trilha". É possível reconhecer os dados de trilha mascarados (que começam com B% e contêm muitos asteriscos, terminando em ?*), mas eles ocultam o Número de Conta Principal (PAN), que está de fato criptografado. A maior parte do que você vê aqui é uma representação hexadecimal dos dados binários provenientes do leitor.
Analisar esse grande bloco de dados é simples para quem sabe como fazê-lo. A maneira mais rápida de decodificá-lo é processar os dados pela ferramenta gratuita da ID TECH, Parsomatic , um formulário HTML capaz de apresentar todos os elementos de dados de forma clara e compreensível.
Cada leitor de cartão tem sua própria maneira proprietária de representar os dados do cartão. A ID TECH representa os dados de tarja magnética em um formato conhecido como Enhanced Encrypted MSR format. Esse formato inclui 26 campos de dados; todos os 26 campos estão descritos em detalhes no documento P/N 80000502-001, ID TECH Encrypted Data Output.
Para ter uma ideia do que está contido no cartão, vamos analisar os primeiros 5 bytes de dados (02 ED 01 80 1F). De acordo com Parsomatic, esses 5 bytes contêm as seguintes informações:
O primeiro byte (02) é simplesmente o STX, o byte de "início". Os dois bytes seguintes (ED 01) representam o comprimento, em hexadecimal, do payload de dados completo (little-endian: ED 01 equivale a 0x01ED, ou seja, 493 bytes de dados). O tipo de codificação do cartão é 0x80, o que significa, em termos práticos, que o leitor identifica este cartão como um cartão financeiro. O Track Status (valor: 0x1F) é um byte de status contendo flags de oito bits, indicando quais trilhas estavam presentes na tarja magnética (podendo haver até 3) e quais foram lidas com sucesso. Neste caso, todas as 3 trilhas físicas foram lidas com êxito, porém os dados existem apenas nas trilhas 1 e 2.
Vamos analisar rapidamente os próximos 5 bytes. De acordo com Parsomatic, esses bytes e seus significados são os seguintes:
Em um cartão financeiro, a Trilha 1 pode ter até 79 bytes; a Trilha 2, até 40 bytes; e a Trilha 3, até 107 bytes. Neste caso, temos 76 bytes (hex 0x4C) de dados para a Trilha 1 e 40 bytes (0x28) para a Trilha 2. (A Trilha 3 tinha zero bytes.) Conhecer esses comprimentos é fundamental, não apenas para analisar os dados mascarados das trilhas, mas também para determinar o comprimento das versões criptografadas das trilhas. O comprimento criptografado difere do comprimento nativo original da trilha porque os dados devem ser preenchidos (padding) até um comprimento final que seja múltiplo de 8 para criptografia TDES, ou múltiplo de 16 para AES.
Como saber se os dados estão criptografados com TDES ou AES? Essa informação está no bit 4 do byte de status Clear/Mask Data Sent Status (conforme mostrado acima). Há também um byte de status Encrypted/Hash Data Sent Status (mostrado acima) que indica se os dados de trilha criptografados (e os hashes de validação) estão presentes e se existe um KSN.
Agora chegamos aos dados mascarados da Faixa 1 e da Faixa 2, seguidos pelas versões criptografadas dessas faixas, seguidas por alguns dados de hash (neste caso, todos zeros) e outros dados (descritos abaixo). Observe que Parsomatic converteu os dados de faixa em ASCII para uma representação hexadecimal abaixo:
Observe que Parsomatic insere um link "Descriptografar estes dados" ao lado dos dados criptografados (veja acima). Ao clicar no link, você será direcionado ao Ferramenta de Criptografia/Descriptografiada ID TECH, onde os dados em questão poderão ser visualizados em formato descriptografado.
Os campos finais de dados incluem o Número de Série do Leitor, o Número de Série da Chave (KSN), um LRC, um checksum e ETX (fim da transmissão). O LRC é simplesmente um valor de byte que representa o XOR (OU exclusivo) de todos os bytes de dados do payload, enquanto o checksum é uma soma aritmética de um byte (desconsiderando o overflow, obviamente) de todos os bytes do payload. O LRC e o checksum podem ser usados para verificar a integridade do payload de dados. (São um pouco mais fáceis e rápidos de calcular do que um CRC adequado.)
Conclusão
Como você pode perceber, há muito mais em um dado de MagStripe do que simplesmente "dados de faixa". Ainda não abordamos o significado de alguns campos de dados (talvez possamos explorar esse tema em uma publicação futura). Tampouco mencionamos nada sobre dados EMV (o que definitivamente exigirá outra publicação). Mas este conteúdo deve ser suficiente para você começar, caso esteja tentando decodificar dados provenientes de um leitor de cartão de crédito da ID TECH.
Para mais informações, consulte (como mencionei anteriormente) nossa documentação técnica sobre o formato de dados Enhanced Encrypted MSR: ID TECH Encrypted Data Output. OU clique no link abaixo para dar o primeiro passo em direção a pagamentos mais eficientes!
