[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: generador de passwords



Antonio Castro wrote:
> Tu script genera claves dentro de /etc/passwd lo cual no se suele usar,
> porque todo el mundo puede copiarlo y luego procesarlo con fuerza bruta.
> Lo mejor es usar shadow pero afortunadamente se puede pasar la claves
> de /etc/passwd a /etc/shadow con: pwconv

No genera claves "dentro de /etc/passwd", sino a partir de /etc/passwd y
las pone en un fichero que puedes colar donde quieras. Para quien use
"shadow passwords", no necesita convertirlas con pwconv. Basta
substituir /etc/passwd por /etc/shadow en la primera línea del programa.
(O quien tenga las contraseñas en algún otro fichero, pues tendrá que
poner allí la localización del fichero.)

Lo que sí se puede hacer para mejorar el programa, es que altere
únicamente la contraseña de los que realmente tengan contraseña y que en
usuarios.txt solo escriba los nombres y contraseñas de estos:

################# passwd.pl, versión 2 ##############################
#!/usr/bin/perl
# si usas "shadow passswords", substituye "/etc/passwd" por
"/etc/shadow":
open PWD, '</etc/passwd';
open USERS, '>>usuarios.txt';
open ENCR, '>>passwd.txt';
while (<PWD>) {
    ($user, $encr, $info) = /^([^:]*):([^:]*)(.*)$/;
    if (length($encr) == 13) {
	$salt = join '', ('.', '/', 0..9, 'A'..'Z','a'..'z')[rand 64, rand 64];
	$pwd  = join '',(0..9,'A'..'Z','a'..'z',';',':','.',',','+','-','=')
	    [rand 69, rand 69, rand 69, rand 69, rand 69, rand 69,
	     rand 69, rand 69];
	$encr = crypt $pwd, $salt;
	print USERS "$user\t$pwd\n";
    }
    print ENCR "$user:$encr$info\n";
}
#####################################################################

Este script lo puede usar también quien desconfíe que tiene algunas
contraseñas débiles en su sistema y quiera cambiarle automáticamente la
contraseña a todos los usuarios. Recordad que el script no cambia las
contraseñas, sino os sugiere unas nuevas (usuarios.txt) que debereis
colar en el lugar apropiado (después de ver com MUCHO cuidado el fichero
passwd.txt y hacer una copia de seguridad del /etc/passwd antiguo; no me
hago responsable por ficheros passwd arruinados!)

Saludos,
Jaime



Reply to: