* 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

Responder a