InicioLinuxTe muestro cómo falsificar tu propio DNI o Pasaporte

Te muestro cómo falsificar tu propio DNI o Pasaporte

Linux3/30/2018
Siempre había tenido curiosidad por saber qué significaban alguno de los números que figuran mi documento nacional de identidad (DNI) y pasaporte.

Existe una conocida leyenda urbana, al menos en España, que dice que los últimos números que figuran en la parte posterior del documento nacional de identidad corresponden al número de personas que tienen el mismo nombre y la verdad es que siempre había tenido curiosidad por saber qué había de cierto en esa leyenda y qué significaban esos números.

Mi nombre completo no es nada usual y me extrañaba mucho que hubiera 9 personas que se llamaran exactamente igual que yo, así que decidí investigar. Indagando un poco di con las especificaciones técnicas de la ICAO (en español la OACI, Organización de Aviación Civil Internacional ). Son unos documentos que definen pormenorizadamente las características de varios tipos de documentos oficiales de viaje. Los más conocidos son los pasaportes (TD3) y las “id cards”, nuestros documentos nacionales de identidad (TD1).

Enseguida di con la 3ª parte de estas especificaciones se explica que esos “extraños” números en realidad son dígitos de control y también cómo se calculan. Eso significaba que, en este caso al menos, la leyenda no tenía absolutamente nada de cierto.

Aprovechando que hacía poco que, sin estar muy convencido, había empezado con Python 3, decidí crear una función para calcular el hash de una cadena dada. Lo cierto es que, como se trataba de operaciones relativamente sencillas, conseguí hacerlo funcionar en unas horas.

Dos días después, gracias en parte a las bondades de Python, tuve preparado un programa que calculaba el código completo de la Zona de Lectura Mecánica (en inglés, MRZ, Machine Readable Zone) de mi DNI.

Googleando un poco, me bajé unas cuantas imágenes escaneadas o fotografiadas de DNI. Observé que en mi país había al menos dos tipos de DNI’s: los nuevos y los viejos, así que hice un programa que daba soporte a cada uno.

Descargué más imágenes escaneadas de documentos nacionales, esta vez de varios países, y pude ver que todas seguían más o menos el mismo patrón. Leí con un poco más de detenimiento las especificaciones de la ICAO y me di cuenta de que el código de la ZLM de todos los documentos nacionales de todos los países se calculaban exactamente de la misma forma.

Abandoné el proyecto que había empezado y comencé otro bastante más ambicioso. Quería hacer un programa que valiera para calcular el código de la ZLM de cualquier documento del mundo: pasaportes, tarjetas de identidad y demás documentos.

Después de más de un mes peleándome con Python, la mayor parte del tiempo refactorizando y con la estructura del paradigma POO, conseguí sacar mrz.generator; una librería (módulo en Python) que generaba el código de la ZLM (MRZ en inglés) para documentos de viaje de tamaño 1, 2 y 3 (TD1, TD2 y TD3)

Pensé entonces en hacer otro programa que sirviera para validar esos mismos documentos. Como tenía mucho que ver con mrz.generator decidí integrarlo todo en el mismo proyecto y así fue como nació mrz.checker. Una librería pensada para validar el código MRZ de un documento. Se verifican cosas como el formato y longitud de los campos, los hashes de control y otros datos relativos a los periodos de tiempo, como por ejemplo que la fecha de nacimiento sea anterior a la de caducidad o que la caducidad no supere los 10 años. Estos datos se pueden reportar aprovechando que se almacenan en unas matrices. Esta librería está pensada para ser utilizada en conjunto con un módulo OCR.

Luego vino la tarea más tediosa: documentar todo el proyecto, crear ejemplos, publicar en GitHub e intentar subirlo al repositorio Pypi. Bastante aburrido todo, la verdad..

Aunque soy consciente de que jamás será un proyecto popular, estoy moderadamente satisfecho con el resultado. Me ha costado un mucho quedarlo como está (he perdido la cuenta de la veces que he refactorizado.. pero han sido muchas)

Quien quiera bajarlo y probarlo puede hacerlo en cualquier plataforma (Linux, Windows, BSD, etc.) desde la página del proyecto en GitHub o desde los repositorios de Python

Para instalarlo la forma más sencilla es mediante pip:

sudo pip install mrz


Desinstalarlo es igual de fácil:
sudo pip uninstall mrz


Como ya he dicho, éste no es un programa pensado para el usuario final, es una librería o módulo Python3, pero quien quiera probarlo para verificar su DNI o pasaporte, quien quiera dedicarse profesionalmente a la falsificación de documentos o simplemente quien tenga algo de curiosidad en el tema, solo tiene que descargarse alguno de los ejemplos alojados en GitHub y ejecutarlos como un script.

PD: Lo he probado hasta la saciedad, pero si alguien detecta algún error le agradecería que lo reporte
Datos archivados del Taringa! original
10puntos
59visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

A
Arg0s1080🇦🇷
Usuario
Puntos0
Posts9
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.