Publicación técnica
Cómo descodificar los datos de la banda magnética
Hasta hace poco, leer los datos de una tarjeta de crédito era tan sencillo como pasar la tarjeta por un lector (como cualquiera de los muchos lectores fabricados por ID TECH) y dejar que una aplicación de terminal virtual (u otra aplicación) absorbiera los datos de las pistas tal y como salían directamente del lector. Esos datos aparecían simplemente como pulsaciones de teclado en la pantalla, sin cifrar.
¡Aquellos sí eran buenos tiempos!
Basta decir que las cosas han cambiado. Hoy en día, los lectores de banda magnética suelen emitir datos cifrados a través de USB (a menudo en modo HID, en lugar de modo teclado), y la mayoría de los lectores actuales tienen que gestionar tanto tarjetas con chip como tarjetas de banda magnética. Los datos de las tarjetas con chip adoptan la forma de TLVs (tag, length, value) y pueden tener un aspecto bastante diferente al de los “datos clásicos de banda magnética” de años atrás. Además, están invariablemente cifrados.
En publicaciones recientes, mostré cómo descifrar los datos de tarjetas de crédito utilizando los algoritmos estándar del sector TDES y AES junto con las técnicas estándar (ANSI X9.24) de derivación de claves DUKPT, pero no hablamos de cómo obtener los datos descodificados de la banda magnética en primer lugar. ¿Qué aspecto tienen hoy “los datos de banda magnética de una tarjeta de crédito”? ¿Cómo se pueden obtener y descodificar? ¿Cómo saber qué partes están cifradas?
Hoy en día, los lectores de tarjetas suelen emitir datos cifrados a través de USB (a menudo en modo HID, en lugar de modo teclado), y la mayoría de los lectores actuales tienen que gestionar tanto tarjetas con chip como tarjetas de banda magnética.
La respuesta a la primera pregunta (¿qué aspecto tienen los datos de la banda magnética?) varía mucho, no solo según la marca y el modelo del equipo lector que se utilice, sino también según si la transacción se realizó por pasada de banda, por inserción (EMV con contacto) o por interacción sin contacto/NFC. En general, se hace bastante más que leer simplemente los datos de las pistas. También se obtiene un KSN (Key Serial Number), necesario para el descifrado, y se recopilan distintos tipos de metadatos relativos a la transacción. Es cierto que quizá solo te interese obtener (por ejemplo) los datos sin procesar de la Pista 2, pero en el proceso de obtenerlos tendrás que lidiar con muchos otros datos también.
Veamos rápidamente un ejemplo del mundo real utilizando una tarjeta regalo de Starbucks que me dio un barista lleno de remordimientos como compensación tras quedarse inesperadamente sin Latte Mesopotámico de Kumquat con Absenta. Si pasamos la tarjeta de Starbucks por el lector Augusta de ID TECH funcionando en modo teclado, con una ventana del Bloc de notas abierta (y el cursor en el área 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 sin procesar”. Puedes reconocer los datos de pista enmascarados (que empiezan por B% y contienen muchos asteriscos, terminando finalmente en ?*), pero ocultan el Número de Cuenta Principal (PAN), que en realidad está cifrado. La mayor parte de lo que ves aquí es una representación hexadecimal de los datos binarios que salen del lector.
Analizar este gran bloque de información es fácil si sabes cómo. La forma más rápida de descodificarlo es pasar los datos por la herramienta gratuita de ID TECH Parsomatic , un formulario HTML que puede mostrar todas las piezas de datos de forma comprensible.
Cada lector de tarjetas tiene su propia forma propietaria de representar los datos de la tarjeta. ID TECH representa los datos de banda magnética en un formato conocido como Enhanced Encrypted MSR. Este formato incluye 26 campos de datos; los 26 campos se describen detalladamente en el documento P/N 80000502-001, Salida de datos cifrados de ID TECH.
Para hacerte 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:
El primer byte (02) es simplemente STX, el byte de “inicio”. Los dos bytes siguientes (ED 01) representan la longitud, en hexadecimal, de la carga útil total de datos (little-endian: ED 01 significa realmente 0x01ED, o 493 bytes de datos). El tipo Card Encode es 0x80, lo que (en lenguaje claro) significa que nuestro lector considera que se trata de una tarjeta financiera. El Track Status (valor: 0x1F) es un byte de estado que contiene indicadores de ocho bits, para informarte de qué pistas estaban presentes en la banda magnética (puede haber hasta 3) y cuáles se leyeron correctamente. En este caso, las 3 pistas físicas se leyeron correctamente, pero solo hay datos en las pistas 1 y 2.
Veamos rápidamente los 5 bytes siguientes. Según Parsomatic, esos bytes y su significado son los siguientes:
En una tarjeta financiera, la Pista 1 puede tener hasta 79 bytes de longitud; la Pista 2 hasta 40 bytes; y la Pista 3 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. (La Pista 3 tenía cero bytes.) Conocer estas longitudes es importante, no solo para extraer los datos de pista enmascarados, sino también para determinar las longitudes de las versiones cifradas de las pistas. La longitud cifrada es distinta de la longitud nativa real de la pista, porque los datos de pista deben rellenarse hasta alcanzar una longitud final múltiplo de 8 para el cifrado TDES, o 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 Clear/Mask Data Sent Status (como se muestra arriba). También hay un byte de estado Encrypted/Hash Data Sent (mostrado arriba) que indica si están presentes los datos de pista cifrados (y los hashes de validación) y si existe un KSN.
A continuación llegamos a los datos enmascarados de la Pista 1 y la Pista 2, seguidos de sus versiones cifradas, después de algunos datos hash (en este caso, todos ceros) y de otros datos (descritos más abajo). Observa que Parsomatic ha convertido los datos de pista ASCII a una representación en hexadecimal a continuación:
Observa que Parsomatic inserta un enlace “Decrypt this data” junto a los datos cifrados (ver arriba). Si haces clic en el enlace, te lleva al Herramienta de cifrado/descifradode ID TECH, donde los datos en cuestión pueden visualizarse descifrados.
Los campos finales de datos incluyen el Reader Serial Number, el Key Serial Number (KSN), un LRC, un checksum y ETX (fin de transmisión). El LRC es simplemente un valor de byte que representa el XOR (OR exclusivo) de todos los bytes de la carga útil, mientras que el checksum es una suma aritmética de un byte (ignorando el desbordamiento, evidentemente) de todos los bytes de la carga útil. El LRC y el checksum pueden utilizarse para comprobar la integridad de la carga útil. (Son algo más fáciles y rápidos de calcular que un CRC propiamente dicho.)
Conclusión
Como puedes ver, los datos de la banda magnética son mucho más que “datos de pista”. Ni siquiera hemos abordado la importancia de algunos de los campos de datos (quizá podamos hacerlo en una futura publicación). Tampoco hemos hablado de los datos EMV (lo que sin duda requerirá otra entrada). Pero esto debería servirte como punto de partida si estás intentando descodificar los datos que salen de un lector de tarjetas de crédito de ID TECH.
Para más información, no dejes (como dije antes) de consultar nuestra documentación técnica sobre el formato de datos Enhanced Encrypted MSR: Salida de datos cifrados de ID TECH. O haz clic en el enlace de abajo para dar el primer paso hacia unos pagos más ágiles.
