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://www.alvarodeleon.net/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)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *