Ultima modificación : miércoles, 10 de diciembre de 2009
Necesitaba abrir un pdf protegido por contraseña. Era un pdf con las notas de mi novia, y el cual el profesor se iba equivocado metiendo la contraseña y la pobre se iba a quedar todas las navidades sin saber la nota, asi que intentamos hacer fuerza bruta sobre el fichero, con exito.
Desarrolle un script en python que generara palabras de una longitud máxima a partir de un cadena que define un alfabeto. En mi ejemplo configuro las variables con estos valores:
LONGITUD = 6 ALFABETO = "abcdefghijklmnopqrstuvwxyz0123456789_-."
Generar todas las combinaciones posibles conlleva no solo considerar las de longitud 6, si no tambien las de longitud 5,4,3,2 e incluso 1. El alfabeto tiene 39 caracteres por tanto todas las combinaciones posibles son:

cálculo de combinaciones
Contraseñas de longitud mayor que 8 son muy costosas computacionalmente, por ello el script que he realizado me interesa que de mucha información de cuanto queda y cuanto lleva. En concreto 3 cosas:
- El porcentaje que lleva del total.
- Tiempo estimado restante (en horas, lo he puesto).
- Velocidad: en palabras generadas por segundo
Con el dual core de mi portatil a 2.2 Ghz y con el ejemplo que pongo de palabras de hasta 6 caracteres y un alfabeto de 39 caracteres, los tiempos son muy buenos (aunque queda pendiente el uso de paralelización por MPI o algo así):
- Velocidad media aprox: 610.000 palabras generadas / seg
- Tiempo total : 1 hora 50 min
A continuación os pasteo el script (abrir un gedit generarDiccionario ):
Filed under: comandos, hack, hacking, ingenieria, python | Tagged: awk, bruta, fuerza, generar, mysql, password, pdf, python, script | 49 Comments »