¿Qué es el Extractor de Números de Tarjeta (Luhn Check) y para qué sirve?
El Extractor de Números de Tarjeta con Verificación de Luhn es una utilidad avanzada de ciberseguridad, prevención de pérdida de datos (DLP - Data Loss Prevention) y auditoría forense de software diseñada para detectar, extraer, clasificar y auditar números de tarjetas de crédito y débito (PAN - Primary Account Number) incrustados en archivos de texto, volcados de memoria, logs de servidores web, mensajes de correo electrónico, informes de errores de pasarelas de pago y bases de datos no estructuradas.
En el ecosistema financiero actual y bajo las estrictas exigencias del estándar de seguridad internacional PCI-DSS (Payment Card Industry Data Security Standard), la presencia accidental de números de tarjeta de crédito en texto plano dentro de sistemas corporativos, ficheros de depuración o herramientas de soporte técnico representa una grave vulnerabilidad de seguridad y un incumplimiento sancionable con severas multas. Esta herramienta permite a analistas de seguridad, administradores de sistemas y desarrolladores auditar masivamente documentos de texto para localizar números de tarjeta expuestos, discriminarlos de falsos positivos mediante el algoritmo de Luhn (MOD 10) y proceder a su ofuscación o enmascaramiento seguro antes de su almacenamiento o distribución.
Anatomía del Número de Tarjeta (PAN) y Redes Emisoras (IIN / BIN)
El Número de Cuenta Principal (PAN) de una tarjeta de pago sigue la norma internacional ISO/IEC 7812, la cual estipula una longitud habitual de entre 13 y 19 dígitos divididos funcionalmente en tres segmentos fundamentales:
Segmentación Estructural del PAN (ISO/IEC 7812)
Tomando como referencia una tarjeta bancaria común de 16 dígitos (como Visa o Mastercard):
- Identificador de Industria Mayor (MII - Major Industry Identifier): El primer dígito determina el sector de la entidad emisora (
1-2aerolíneas,3viajes y entretenimiento como American Express,4-5instituciones financieras y bancos,6comercio y banca como Discover,7empresas petroleras,8telecomunicaciones). - Número de Identificación del Emisor (IIN / BIN): Los primeros 6 u 8 dígitos constituyen el BIN (Bank Identification Number), que identifica de forma inequívoca al banco emisor (ej. Santander, BBVA, CaixaBank, Chase) y la red de pago.
- Identificador de Cuenta Individual: Dígitos intermedios asignados por la entidad emisora a la cuenta del titular.
- Dígito de Control Final (Checksum): El último dígito, calculado de forma estricta mediante el algoritmo de Luhn (MOD 10) para detectar errores tipográficos en transmisiones numéricas.
Detección de Redes Emisoras y Prefijos Oficiales
El motor de extracción incluye reglas avanzadas de inspección de prefijos numéricos para catalogar la red emisora de cada tarjeta encontrada:
| Red de Pago | Prefijos Numéricos (IIN / BIN) | Longitudes Permitidas | Algoritmo de Control |
|---|---|---|---|
| Visa | 4 | 13, 16, 19 dígitos | Luhn MOD 10 |
| Mastercard | 51–55, 2221–2720 | 16 dígitos | Luhn MOD 10 |
| American Express (Amex) | 34, 37 | 15 dígitos | Luhn MOD 10 |
| Discover | 6011, 622126–628893, 644–649, 65 | 16, 19 dígitos | Luhn MOD 10 |
| Diners Club International | 300–305, 3095, 36, 38–39 | 14, 16 dígitos | Luhn MOD 10 |
| JCB (Japan Credit Bureau) | 3528–3589 | 16–19 dígitos | Luhn MOD 10 |
| Maestro | 50, 56–58, 6 | 12–19 dígitos | Luhn MOD 10 |
| UnionPay | 62, 81 | 16–19 dígitos | Luhn MOD 10 |
¿Cómo Funciona el Algoritmo de Luhn (Fórmula MOD 10)?
El algoritmo de Luhn, patentado en 1960 por el ingeniero de IBM Hans Peter Luhn, es una fórmula de suma de verificación modular de dominio público estandarizada en ISO/IEC 7812-1. Se diseñó específicamente para detectar fallos accidentales en la transcripción de dígitos, como la sustitución de un único número o la inversión/transposición de dos cifras contiguas.
El procedimiento matemático paso a paso es el siguiente:
- Se parte del número de tarjeta de derecha a izquierda. El último dígito (a la derecha) es el dígito de control y se mantiene inalterado.
- Avanzando hacia la izquierda, se duplica el valor de cada segundo dígito (los ubicados en posiciones pares contando desde la derecha).
- Si el resultado de duplicar una cifra es igual o superior a 10 (por ejemplo, $7 \times 2 = 14$), se suman los dos dígitos resultantes ($1 + 4 = 5$), lo cual equivale matemáticamente a restar 9 ($14 - 9 = 5$).
- Se suman todos los dígitos finales resultantes (tanto los dígitos no alterados como las cifras transformadas de los duplicados).
- Criterio de Validación: Si la suma total es un múltiplo exacto de 10 ($\text{Suma} \pmod{10} = 0$), el número supera el Luhn Check con éxito. Si arroja cualquier residuo distinto de cero, el número no es una tarjeta válida.
Seguridad, Cumplimiento PCI-DSS y Enmascaramiento de Datos
El estándar de seguridad PCI-DSS prohíbe taxativamente la exhibición y retención sin cifrar del PAN completo en cualquier pantalla, archivo de registro o medio de almacenamiento accesible por personal no autorizado. De acuerdo con el requerimiento 3.4 de PCI-DSS, cualquier muestra pública o administrativa de un número de tarjeta debe enmascararse, permitiendo como máximo mostrar los primeros seis dígitos (primer bloque BIN) y los últimos cuatro dígitos.
Nuestra herramienta incorpora una funcionalidad de Anonimización / Redacción Automática en Texto, la cual procesa el documento original y sustituye cada tarjeta detectada por formatos seguros configurables:
- Enmascaramiento Estándar PCI: Sustituye los números intermedios por asteriscos conservando el formato visual (ej.
4532 **** **** 1234). - Etiqueta de Redacción Total: Reemplaza el número íntegro por un marcador descriptivo como
[TARJETA_PROTEGIDA_VISA]o[REDACTED_PAN]. - Descarga de Texto Saneado: Permite descargar directamente el archivo de texto o log completamente libre de números de tarjeta reales, listo para ser entregado a equipos de desarrollo o proveedores externos de auditoría sin riesgo legal.
Herramientas Relacionadas en Nuestro Ecosistema
Complementa tu auditoría de seguridad y análisis textual con estas utilidades especializadas:
- Validador Algoritmo de Luhn para Texto: Inspecciona el cálculo matemático de Luhn dígito a dígito.
- Extractor de IBAN y Cuentas Bancarias: Localiza cuentas bancarias SEPA e internacionales en texto.
- Extractor de Claves API de Texto: Detecta secretos expuestos (AWS, Stripe, GitHub).
- Verificador de XSS en Texto: Audita vectores de ataque y cross-site scripting en código y datos.
Preguntas Frecuentes (FAQ)
¿Un número que pasa el algoritmo de Luhn es necesariamente una tarjeta activa?
No. El algoritmo de Luhn es una prueba matemática de coherencia sintáctica. Un número puede satisfacer el checksum de Luhn habiendo sido generado de forma aleatoria, pertenecer a una tarjeta cancelada o no haber sido emitido por el banco. La verificación de fondos, vigencia o titularidad real requiere una transacción de autorización electrónica a través de una pasarela de pago bancaria autorizada.
¿Cómo evita la herramienta confundir números de tarjeta con números de teléfono o códigos de barras?
La herramienta utiliza un filtro en dos fases: en primer lugar, identifica cadenas de longitud compatible (entre 13 y 19 dígitos continuos o separados por espacios o guiones comunes) y verifica el prefijo BIN del emisor. En segundo lugar, ejecuta inmediatamente el test de Luhn MOD 10. Dado que la probabilidad matemática de que un número aleatorio o de teléfono supere accidentalmente el test de Luhn es de tan solo el 10% (y menor al 1% al cruzarlo con prefijos de red válidos), los falsos positivos se reducen prácticamente a cero.
¿Se guardan o transmiten los números de tarjeta ingresados a través de Internet?
Absolutamente no. La aplicación se ejecuta de forma íntegra y exclusiva en el motor de JavaScript de tu navegador en tu máquina local. Ninguna tarjeta, texto ni dato confidencial sale de tu navegador ni se transmite a servidores remotos, cumpliendo las directrices más exigentes de privacidad y confidencialidad de datos.