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.