domingo, 3 de noviembre de 2013

DictMaker

A la hora de elegir una contraseña, dependiendo de para qué servicio sea, tenemos en cuenta unos factores u otros. Por ejemplo, si es para acceder a nuestro correo electrónico, solemos utilizar una contraseña fácil de recordar sobre todo, ya que la vamos a utilizar con frecuencia. Si es para darnos de alta en un servicio que rara vez vamos a utilizar, o incluso sólo la vamos a necesitar una única vez, utilizamos una contraseña cualquiera, del tipo "1234", o "pass", ya que nos importa bien poco la protección de la cuenta de turno.

Es muy frecuente también que utilicemos la misma contraseña para todos o muchos de los servicios a los que accedemos, con los riesgos de seguridad que ello conlleva, y a pesar de las miles de veces que se ha dicho que no se utilicen este tipo de "política de contraseñas". Todo esto, en un entorno "doméstico", digamos.

En cambio, si nos encontramos en entornos corporativos, es posible que se utilicen contraseñas aleatorias para acceder a los diferentes servidores de la empresa (ya que es poco probable que los usuarios utilicen este tipo de contraseñas). En este caso, lo más probable es que se acceda a algún servicio web del tipo randomkeygen.com por ejemplo, para generar éstas.

DictMaker es precisamente eso, un generador de los tipos más comunes de contraseñas aleatorias (no apto para lo más puristas de la aleatoriedad), y está escrito en python. Así, tenemos un tipo de contraseñas "decentes" (que constan de letras mayúsculas, minúsculas y números, con una longitud de 10 caracteres), contraseñas frecuentemente utilizadas para acceso root (mayúsculas, minúsuculas, números y caracteres especiales con una longitud de 30), diferentes tipos para wep y wpa, etc...

Sólo hay que pasarle como parámetros los tipos de contraseñas que queremos generar, y el tamaño total del diccionario (tamaño aproximado):


Así, el diccionario generado se puede utilizar para hacer un "reparto" de contraseñas, o bien para realizar un ataque de diccionario a algún hash o algún servicio de login. Tampoco nos engañemos, en un espacio de caracteres donde puede haber billones de combinaciones posibles, es poco probable que, generando un diccionario de 100M, demos en el blanco.

No obstante, ahí queda para quien quiera testearlo, mejorarlo o simplemente enviarlo a /dev/null.

-- EOF --