Cómo descifrar los datos de la Magstripe

Hasta hace poco, leer los datos de la tarjeta de crédito era tan fácil como pasar la tarjeta por un lector (como uno de los muchos lectores fabricados por ID TECH) y hacer que una aplicación de terminal virtual (u otras aplicaciones) absorbiera los datos de la pista a medida que salían del lector. Los datos en cuestión simplemente se mostrarían como pulsaciones de teclas en una pantalla, sin cifrar.

¡Aquellos eran los días!

Sólo hay que decir que las cosas han cambiado. Hoy en día, los lectores de banda magnética generalmente emiten datos encriptados, a través de USB (a menudo en modo HID, en lugar de modo de teclado), y la mayoría de los lectores de tarjetas de hoy en día tienen que manejar las tarjetas con chip, además de las tarjetas de banda magnética. Los datos de las tarjetas con chip adoptan la forma de TLV (etiquetas, longitud, valores) y pueden tener un aspecto bastante diferente al de los «datos de banda magnética» de hace años. Además, siempre están encriptados.

En entradas recientes, mostré cómo descifrar los datos de las tarjetas de crédito utilizando los algoritmos de descifrado TDES y AES estándar de la industria junto con las técnicas de derivación de claves DUKPT estándar de la industria (ANSI X9.24), pero no hablamos de cómo obtener los datos de banda magnética descifrados en primer lugar. ¿Qué aspecto tienen ahora los «datos de banda magnética de las tarjetas de crédito»? ¿Cómo se pueden obtener y descodificar? La respuesta a la primera pregunta (¿qué aspecto tienen los datos de la banda magnética?) varía mucho, dependiendo no sólo de la marca y el modelo del equipo de lectura de tarjetas que se utilice, sino también de si la transacción en cuestión se ha realizado a través de la banda magnética, la inmersión (contacto EMV) o la interacción sin contacto/NFC. En general, se está haciendo mucho más que leer los datos brutos de la pista. También se obtiene un KSN (Key Serial Number), necesario para el descifrado, y se recogen varios tipos de metadatos relativos a la transacción. Es cierto, puede que sólo te interese obtener (digamos) los datos de la pista 2 sin procesar, pero en el proceso de obtenerlos, vas a tener que lidiar con muchos otros datos también.

Vamos a echar un vistazo rápido a un ejemplo del mundo real utilizando una tarjeta de regalo de Starbucks que me dio un barista con sentimiento de culpa como compensación después de quedarse inesperadamente sin Kumquat-Absinthe Latte de Mesopotamia. Si pasamos la tarjeta de Starbucks por el lector de tarjetas Augusta de ID TECH operando en modo teclado, con la ventana del Bloc de notas abierta (y el cursor en la ventana de texto), obtenemos los siguientes datos en el Bloc de notas:

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

Esto es mucho más que «datos de pista en bruto». Puedes reconocer los datos de pista enmascarados (que comienzan con B% y contienen muchos asteriscos, terminando finalmente en ?*), pero eso oculta el Número de Cuenta Principal (PAN), que en realidad está encriptado. La mayor parte de lo que se ve aquí es una representación hexadecimal de los datos binarios que salen del lector.

Descifrar este gran bloque de datos es fácil si se sabe cómo hacerlo. La forma más rápida de decodificarlo es pasar los datos por la herramienta gratuita Parsomatic de ID TECH, que es un formulario HTML que puede representar todas las piezas de datos de forma inteligible.

Cada lector de tarjetas tiene su propia forma de representar los datos de la tarjeta. ID TECH representa los datos de la banda magnética en un formato conocido como formato MSR encriptado mejorado. El formato incluye 26 campos de datos; todos los 26 campos se describen en detalle en el documento P/N 80000502-001, ID TECH Encrypted Data Output.

Para darle una idea de lo que hay en la tarjeta, consideremos los primeros 5 bytes de datos (02 ED 01 80 1F). Según Parsomatic, estos 5 bytes contienen la siguiente información:

STX 02
LENGTH ED 01
Codificación de la tarjeta Tipo 80
Estado de la 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)

El primer byte (02) es simplemente STX, el byte de «inicio». Los dos siguientes bytes (ED 01) representan la longitud, en hexadecimal, de la carga total de datos (little-endian: ED 01 significa realmente 0x01ED o 493 bytes de datos). El tipo de codificación de la tarjeta es 0x80, que (en inglés) significa que nuestro lector considera que se trata de una tarjeta financiera. Track Status (valor: 0x1F) es un byte de estado que contiene banderas de ocho bits, para saber qué pistas estaban presentes en la banda magnética (puede haber hasta 3) y cuáles fueron leídas con éxito. En este caso, las 3 pistas físicas fueron leídas con éxito, pero los datos sólo existen en las pistas 1 y 2.

Veamos rápidamente los siguientes 5 bytes. Según Parsomatic, esos bytes, y sus significados son los siguientes:

Pista 1 Longitud 4C
Pista 2 Longitud 28
Pista 3 Longitud 00
Estado de los datos enviados (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
Estado de los datos enviados (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

En una tarjeta financiera, La pista 1 puede tener hasta 79 bytes de longitud; La pista 2 puede tener hasta 40 bytes; la pista 3 puede tener hasta 107 bytes. En este caso, tenemos 76 bytes (hex 0x4C) de datos para la pista 1 y 40 bytes (0x28) de datos para la pista 2. (Es importante conocer estas longitudes, no sólo para analizar los datos de las pistas enmascaradas, sino para determinar las longitudes de las versiones encriptadas de las pistas. La longitud encriptada es diferente de la longitud real de la pista nativa porque los datos de la pista deben ser rellenados a una longitud final que es un múltiplo de 8 para el cifrado TDES, o un múltiplo de 16 para AES.

¿Cómo sabemos si los datos están cifrados con TDES o con AES? Esa información está en el bit 4 del byte de estado Clear/Mask Data Sent (como se muestra arriba). También hay un byte de estado de Datos Encriptados/Hash Enviados (mostrado arriba) para permitirle saber si los datos de pista encriptados (y los hashes de validación) están presentes y si existe un KSN.

Ahora llegamos a los datos enmascarados de la Pista 1 y la Pista 2, seguidos por las versiones encriptadas de aquellos, seguidos por algunos datos hash (en este caso, todos ceros), y algunos otros datos (descritos abajo). Tenga en cuenta que Parsomatic ha convertido los datos de la pista ASCII en una representación hexadecimal, a continuación:

Datos de la Pista1 25 2A 36 30 31 30 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 3F 2A
Datos de pista2 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 3F 2A
Pista1 Datos cifrados 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 Desencriptar estos datos
Pista2 Datos cifrados 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 Descifrar estos datos
Pista 1 Hashed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Pista 2 Hashed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Número de serie del lector 36 31 33 54 35 33 35 36 31 38
KSN 62 99 49 00 75 00 02 A0 03 08
LRC 10
Suma de comprobación 8E
ETX 03

Nota que Parsomatic inserta un enlace «Desencriptar estos datos» junto a los datos encriptados (ver arriba). Si hace clic en el enlace, le llevará a la herramienta de encriptación/desencriptación de ID TECH, donde los datos en cuestión pueden verse en forma desencriptada.

Los últimos campos de datos incluyen el número de serie del lector, el número de serie de la llave (KSN), un LRC, una suma de comprobación y ETX (fin de la transmisión). El LRC es simplemente un valor de byte que representa el XOR (OR exclusivo) de todos los bytes de datos de la carga útil, mientras que la suma de comprobación es una suma aritmética de un byte (sin tener en cuenta el desbordamiento, obviamente) de todos los bytes de la carga útil. El LRC y la suma de comprobación pueden utilizarse para comprobar la integridad de la carga útil de datos. (Son algo más fáciles y rápidos de calcular que un CRC propiamente dicho.)

Conclusión

Así que, como puede ver, hay mucho más en los datos de una banda magnética que los «datos de pista». Ni siquiera hemos tocado el significado de algunos de los campos de datos (tal vez podamos ir allí en un futuro post). Tampoco hemos dicho nada acerca de los datos EMV (lo que definitivamente va a tomar otro post). Pero esto debería servirle para empezar si está tratando de decodificar los datos que salen de un lector de tarjetas de crédito ID TECH.

Para más información, asegúrese (como dije antes) de consultar nuestra documentación técnica sobre el formato de datos MSR encriptados mejorados: ID TECH Encrypted Data Output. O haga clic en el siguiente enlace para dar el primer paso hacia la agilización de los pagos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.