* Ing. V�ctor Alvarado G. ([EMAIL PROTECTED]) said:
> Necesito saber si alguien tiene por ah� el programita �crypt� para generar
> passwords, aqu� no lo tengo y lo necesito para generar unos 600 passwords
> para /etc/passwords.
Como tengo mucho que hacer y no quiero hacer nada, me dieron ganas de aprender
un poco de python, as� que aqu� va un programilla.
Solo es cuesti�n de cambiar INFILE y OUTFILE. Lo podes probar cambiando la
clave para solo un usuario con:
randompass usuario1
Despu�s pones el OUTFILE en el lugar correcto y tratas de logonear con el
password que gener�.
La verdad es que no s� si servira con 600 usuarios, no lo he probado porque
solo tengo como 3 usuarios para probarlo aqu� en mi m�quina, as� que no se. El
que quiera lo puede cambiar un poquillo para que tome el imput de stdin en vez
de argumentos, pero es que me dio pereza, solo se necesitan cambiar como 2
lineas pero ya me quiero acostar, as� que por el momento prob� con xargs.
Si alguien sabe python tal vez lo puede mejorar un poco. No me dio tiempo de
ponerme a investigar como hacer la generaci�n del password m�s bonita,
especialmente la linea de
password = "%s%c" % (password,charv[whrandom.randint(0,chars)])
pero es que la sintaxis de
password[i] = charv[whrandom.randint(0,chars)] no sirvi� porque tengo password
como un string y no como un sequence. Si alguien sabe la manera correcta que me
avise para as� aprender.
Espero que esto ayude.
Nacho
PS: �Qu� les parece Python?
----------------------------------------------------------------------------
#!/usr/bin/python
# ##################################################################
# randompass v0.1
# by Ignacio Solis [EMAIL PROTECTED]
# July-13-2000
#
# Usage: Modify INFILE and OUTFILE to suit your needs. Be careful with
# permissions. INFILE = OUTFILE works but it's not recommended
# INFILE should be a file in the format of /etc/passwd or /etc/shadow
# OUTFILE will be of the same form. Only the passwords of the users
# from the command the command line will be changed
#
# To invoke: randompass [user1] [user2] ...
#
# Output: randompass will print to stdout the usernames with their passwords
# and will leave the modified INFILE in OUTFILE
#
# Notes: the command xargs should be very useful. To create random passwords
# for a list of users in file userlist use the command
# xargs ./randompass < userlist
#
# This code is under GPL License and includes the standard disclaimer, the
# author takes no responisbility for damages.
#
# You are encouraged to read and understand the code.
import crypt
import re
import sys
import whrandom
# Define the infile and outfile
INFILE = "/etc/passwd.old"
OUTFILE = "/etc/passwd.new"
# Define possible characters for passwords
charv = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.,"
chars = len(charv)-1
def newpass(): # generate a random 8 character password
password = ""
for j in range(8):
password = "%s%c" % (password,charv[whrandom.randint(0,chars)])
return password
infile = open(INFILE) # open infile for reading
lines = infile.readlines() # buffer all password/shadow lines
infile.close()
whrandom.seed() # Randomize the seed
for username in sys.argv: # For each username argument
password = newpass() # Generate a new password
inputex = "^%s:[^:]+:" % username # Create input/output for regex
outputex = "%s:%s:" % (username, crypt.crypt(password,password[4:6]))
for i in range(len(lines)): # Search through the passwords
if ( re.match(inputex,lines[i]) ):
lines[i] = re.sub(inputex, outputex, lines[i], 1)
print username, password
outfile = open(OUTFILE,"w") # open outfile for writing
for line in lines: # Print to output file
outfile.write(line)
outfile.close()
sys.exit()
----------------------------------------------------------------------------
--
GPG Public Key: http://www.igso.net/isolis.gpg
PGP signature