Este post quedo un poco des actualizado te recomiendo ir directamente a este otro mas nuevo y con una versión mejorada de este código:

https://blog.alvarodeleon.com/generador-de-password-por-consola/

Una de las tareas mas habituales y tediosas de un Administrador de Sistemas es asignar contraseñas seguras, algunos sistemas tienen integrado un generador de contraseña al dar de alta o modificar un usuario aunque otros no.

Estar abriendo una pagina web cada vez que generas una contraseña vuelve a ser molesto, para muchos administadores que siempre tenemos muchas consolas abiertas al mismo tiempo como yo, es fundamental tener un generador de contraseñas por consola, el siguiente script en Python sirve para generar contraseñas seguras:

 alvaro@acer:~$ passgen -l 32 -t all KLzX,7)TVxOsVctGXkF1ez8b(20/4Dqf alvaro@acer:~$

Solo tenemos que guardar el script en una archivo por ejemplo en /usr/bin/passgen

Luego ejecutamos

sudo chmod +x /usr/bin/passgen

Con opciones realmente simples, con -l se especifica el largo de la contraseña y con -t el tipo, donde estos pueden ser de tipo “abc” que solo contiene letras o “num” solo numeros, ademas de “anum” que contiene letras y números, y por ultimo “all” que contiene letras, números y caracteres especiales.

#!/usr/bin/python

import sys
import random



# Tipos ABC, NUM, ANUM, ALL



class PassGen:

    length = 8
    seed = ''
    password =''
    file = ''
    quantityChecker = None
    quantity = 1

    def __init__(self,*arguments):
        self.length = 16
        self.setMode('anum')
        self.quantityChecker= None
        self.file = None

        arguments = arguments[0]

        try :

            for index in range(1,len(arguments)):

                if arguments[index] == "-t":
                    self.setMode(arguments[index + 1])

                if arguments[index] == "-l":
                    self.setLength(arguments[index + 1])

                if arguments[index] == "-f":
                    self.setFile(arguments[index + 1])

                if arguments[index] == "-b":
                    self.quantityChecker = True
                    self.quantity = arguments[index + 1]

                if arguments[index] == "-h":
                    self.showHelp()
                    sys.exit(0)

            if self.quantityChecker:
                self.generatePasswordList(self.quantity);
            else:
                self.generatePassword();


        except Exception: 
            self.showHelp()

    def generatePassword(self):

        self.password = ''

        stop = int(self.length)
        a = 0
        while a < stop:
            self.password = self.password + str(self.seed[random.randint(0,len(self.seed)-1)])
            a = a + 1

        if self.quantityChecker:
            print self.password
        else:
            print "\n" + self.password + "\n"

        if self.file != None:
            self.__savef(self.file,self.password + "\n",'a')

    def generatePasswordList(self,quantity):

        if self.file != None:
            self.__savef(self.file,"",'w')

        i = 0
        stop = int(quantity)
        while i < stop:
            self.generatePassword()
            i = i + 1

    def showHelp(self):
        print " "
        print "passgen -t [type] -l [long] -f [file] -b [integer]"
        print " "
        print "Option -t is a type  "
        print " "
        print " Type options: "
        print "     'abc' for only letters passowrd"
        print "     'num' for only numbers passowrd"
        print "     'anum' for generate password with and letters passowrd"
        print "     'all' for generate password with numbers, letters and special characters"
        print " "
        print " For default type is anum"
        print " "
        print " Option -l is length passowrd"
        print " "
        print " Option -f is path of ouput file"
        print " "
        print " Option -b is quantity of password generate at the same time"
        print " "
        print " Option -h for help"
        print " "


    def __abc(self):
        self.seed = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', '', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

    def __num(self):
        self.seed = ['0', '1' , '2', '3', '4', '5', '6', '7', '8', '9']

    def __anum(self):
        self.seed = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', '', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        '0', '1' , '2', '3', '4', '5', '6', '7', '8', '9']

    def __all(self):

        self.seed = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        'a', 'b', 'c', 'd', 'e', 'f', 'g', '', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
        '0', '1' , '2', '3', '4', '5', '6', '7', '8', '9',
        '!', '"', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '{', '|', '}', '~', '@']

    def __openf(self,path=''):
        fo = open(path, "r+")
        str = fo.read(10);
        fo.close()
        return str

    def __savef(self,path='',content='',mode='w'):
        fo = open(path, mode)
        fo.write(content);
        fo.close()

    def setMode(self,mode):
        options = { 'abc': self.__abc, 'num': self.__num, 'anum': self.__anum , 'all': self.__all}
        options[mode]()

    def setLength(self,length):
        self.length = length

    def setFile(self,file):
        self.file = file

    def setQuantity(self,quantity):
        self.quantity = quantity

strpass = PassGen(sys.argv)

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading