Article View: es.comp.os.linux.programacion
Article #7098Re: Encriptacion de contraseñas en perl
From: Samuel
Date: Sun, 06 Apr 2003 20:45
Date: Sun, 06 Apr 2003 20:45
96 lines
4403 bytes
4403 bytes
On Sun, 06 Apr 2003 17:17:09 +0000, kurtsik
<merlinaztia*STOPSPAM*@mixmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Salu2.
> Estoy haciendo un script en perl para crear un monton de usuarios a la vez,
> el problema es que tengo que encriptar las contrase�as para que no me las
> pida con cada useradd. He estado buscando en google y he encontrado este
> trozo de codigo que hizo algun ecolero hace tiempo :-) :
>
> #!/usr/bin/perl -w
> use lib ('./Sources/Lib','./',);
> $pass = "123456";
> $name = "kurtsik";
> print crypt ($pass, lc (substr($name, 0, 2 )));
>
> El problema es que no consigo entender como funciona y ademas las
> contrase�as que genera son mucho mas cortas que las de mandrake. Podriais
> echarme una mano?
>
> Y ya de paso y sin abusar ;-) , conoceis algun enlace donde pueda buscar
> informacion sobre perl-tk?
>
> Gracias mil.
> Kurtsik
Me da en la nariz que Mandrake usar� passwords MD5, as� que la llamada
crypt no te servir� de mucho. Te paso un script para crear pass en MD5
(y en alguna otra cosa). Respecto a qu� hace el script, pu�s simplemente
llama a crypt con la password y el "salt" generado de forma no demasiado
aleatoria(crypt(3) para m�s info). Si no recuerdo mal el campo salt(que
supongo que es lo que te descoloca) sirve para que la misma pass,
cifrada con diferente salt d� una cadena cifrada distinta, lo cual
protege algo de ciertas situaciones (como que se pueda ver que dos
usuarios tienen la misma contrase�a s�lo mirando el /etc/passwd).
Supongo que era �sto lo que ped�as.
----------------------------------------------------------------------
#!/usr/bin/perl
# Perl code to create and print SHA1 and MD5 hashes of passwords
# shamelessly stolen from the openLDAP Faq-O-Matic
# written 19-Jul-01 by Ed Truitt
# Updated 12-Oct-01 to include a {crypt} version of the password
$theGoodWord = $ARGV[0];
chomp($theGoodWord);
# First, print the clear text version
print "\n" ;
print "The Good Word is ==> $theGoodWord \n " ;
print "\n" ;
# Now generate and print the SHA1 hash
use Digest::SHA1;
use MIME::Base64;
$ctx = Digest::SHA1->new;
$ctx->add($theGoodWord);
$hashedSHAPasswd = '{SHA}' . encode_base64($ctx->digest,'');
print 'userPassword: ' . $hashedSHAPasswd . "\n";
# Now generate and print the MD5 hash
use Digest::MD5;
use MIME::Base64;
$ctx = Digest::MD5->new;
$ctx->add($theGoodWord);
$hashedMD5Passwd = '{MD5}' . encode_base64($ctx->digest,'');
print 'userPassword: ' . $hashedMD5Passwd . "\n";
# Now generate and print the CRYPT version
# first we need to generate the salt
@chars = ("A" .. "Z", "a" .. "z", 0 .. 9, qw(. /) );
$salt = join("", @chars[ map { rand @chars} ( 1 .. 4) ]);
# now to generate the password itself
$cryptPasswd = '{crypt}' . crypt($theGoodWord,$salt);
print 'userPassword: ' . $cryptPasswd . "\n";
print "\n";
------------------------------------------------------------
Saludos
Samuel
--
PGP Key pgp.rediris.es ----- KeyID 0x822583C2
Technical Details
Message-ID:
<slrnb914en.tn.444398NOSPAM@tizona.dummy.net>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.frii.net!newsfeed.frii.net!news-out.newsfeeds.com!propagator2-maxim!news-in.spamkiller.net!propagator3-maxim!news-in.superfeed.net!nsnmpen1-lo.nuria.telefonica-data.net!nsnmpen2-lo.nuria.telefonica-data.net!not-for-mailReferences:
<b6pgcv$7h755$1@ID-101278.news.dfncis.de>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,a4f41b515bfdadf5 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-04-06 13:45:15 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.frii.net!newsfeed.frii.net!news-out.newsfeeds.com!propagator2-maxim!news-in.spamkiller.net!propagator3-maxim!news-in.superfeed.net!nsnmpen1-lo.nuria.telefonica-data.net!nsnmpen2-lo.nuria.telefonica-data.net!not-for-mail From: Samuel <444398NOSPAM@celes.unizar.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: Encriptacion de contraseñas en perl Date: Sun, 6 Apr 2003 20:45:13 +0000 (UTC) Organization: Telefonica Data Espagna Lines: 96 Message-ID: <slrnb914en.tn.444398NOSPAM@tizona.dummy.net> References: <b6pgcv$7h755$1@ID-101278.news.dfncis.de> NNTP-Posting-Host: 80-25-246-165.uc.nombres.ttd.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: nsnmpen2-gest.nuria.telefonica-data.net 1049661913 20147 80.25.246.165 (6 Apr 2003 20:45:13 GMT) X-Complaints-To: usenet@nsnmpen2-gest.nuria.telefonica-data.net NNTP-Posting-Date: Sun, 6 Apr 2003 20:45:13 +0000 (UTC) User-Agent: slrn/0.9.7.4 (FreeBSD)