Google+ Seguidores

miércoles, 10 de febrero de 2016

Generar contraseñas aleatorias en python

    2

Generar password aleatorio en python
Generar password aleatorio en python
La idea de esta entrada es mostrar un par de script que generan contraseñas (password) aleatorias y luego comprobaremos su seguridad.

En el primer script utilizaremos 2 librerías que vienen integradas en Python: random y string. El módulo String se utiliza para trabajar con cadenas y el módulo random se utiliza para generar valores aleatorios.

En el segundo scritp utilizaremos el módulo strgen el cual tendremos que instalar porque no viene integrado con python. Este módulo utiliza la sintaxis parecida a las expresiones regulares.

Enlace para descargar e instrucciones para instalar el módulo strgen: https://pypi.python.org/pypi/StringGenerator

Puedes ver también: Como instalar pip en Linux y Windows

Para comprobar la seguridad de los password generados utilizaremos la página: https://howsecureismypassword.net/

Primer script


import random
import string
password = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(15))

print password

Esto nos devuelve:

Contraseña generada
Contraseña generada

Probamos su seguridad:

Seguridad del Password
Seguridad del Password
Al parecer nuestro password es bastante seguro.

Podemos cambiar la cantidad de caracteres que tiene nuestro password (cambiemos a 6):

for x in range(6))

Ejecutamos:

Contraseña generada
Contraseña generada

Probamos su seguridad:

Seguridad del password
Seguridad del password
Y al agregarle menos caracteres al password lógicamente pierde seguridad.

Segundo Script

Para instalar el módulo recomiendo utilizar la herramienta pip, se utiliza para descargar e instalar módulos de python de manera fácil. La mejor guía que encontré para instalr pip la encontré en este enlace: http://recursospython.com/guias-y-manuales/instalacion-y-utilizacion-de-pip-en-windows-linux-y-os-x/
Luego que de tener instalado el módulo strgen, el script es el siguiente:

from strgen import StringGenerator as SG
print SG("[\w\p\d]{20}").render()

Ejecutamos:

Password con strgen
Password con strgen

Probamos su seguridad:

Seguridad del password
Seguridad del password
Al parecer es bastante segura jeje. Pueden probar cambiar las variables y revisar  la documentación oficial para generar contraseñas que se adecuen a sus necesidades, por hoy esto fue todo. Espero les pueda ser de ayuda en algún momento. No olviden dejar sus comentarios ;)

Saludos, Diego...

Fuente: http://code.activestate.com/recipes/578920-random-password-generation/

2 comentarios:
Write comentarios
  1. Aunque imagino que no es el alcance inicial que busca el articulo, yo uso en la practica diaria algo parecido, por lo que sugiero cambiar la línea general de generación de la cadena aleatorias por la siguiente:

    "".join([random.SystemRandom().choice(string.digits + string.ascii_letters + string.punctuation) for i in range(16)])

    Y las razones serian las siguientes:

    1. Cambio random por SystemRandom siguiendo muchas recomendaciones del sector #infosec acerca de debilidades en la aleatoriedad real, y como es mucho mas robusta dentro de la segunda función.

    2. Cambio string.uppercase por string.ascii_letters que contiene todos los caracteres en mayúsculas y minúsculas.

    3. Incluyo string.punctuation que contiene todos los caracteres considerados como puntuación; aunque con este punto hay que considerar el entorno de aplicación de la contraseña, porque algunos caracteres no son aceptados por no estar adecuadamente escapados o cosas por el estilo.

    Una prueba con 6 caracteres, aunque sigue siendo baja, eleva el resultado a un minuto, y todo obtenido con la librería estándar y sin necesidad de instalar librerías adicionales, obteniendo el mismo resultado con menor complejidad (no hay que usar RegEx que puede ser tan agobiante)

    ResponderEliminar
    Respuestas
    1. Gracias por el excelente comentario. Voy a cambiar la entrada y probar lo que recomiendas. Saludos

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.