Vérification mot de passe avec ou sans getpwuid
Bonjour,
J'aimerais faire une vérification de mot de passe système en vue de l'introduire dans un script plus complet de changement de mot de passe des utilisateurs en perl. J'ai trouvé de la documentation sur la fonction getpwuid mais celle ci ne doit pas pointer sur la bonne valeur car je n'ai qu'un x en retour du mot de passe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #!/usr/bin/perl -w
use strict ;
my $pwd = (getpwuid($<))[2];
print ("$pwd \n");
my $salt = substr($pwd, 0, 2);
system "stty -echo";
print "Password: ";
chop( my $word = <STDIN>);
print "\n";
system "stty echo";
if (crypt($word, $salt) ne $pwd) {
die "Sorry...Wrong Password \n";
} else {
print "ok Password Good\n";
} |
J'ai décomposé les 10 valeurs getpwuid et je n'ai pas de mot de passe dedans.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #!/usr/bin/perl -w
use strict;
my ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpwuid($<);
print "Name = $name\n";
print "Password = $passwd\n";
print "UID = $uid\n";
print "GID = $gid\n";
print "Quota = $quota\n";
print "Comment = $comment\n";
print "Gcos = $gcos\n";
print "HOME DIR = $dir\n";
print "Shell = $shell\n"; |
Y a t-il une autre manière d'avoir la valeur cryptée du mot de passe de l’utilisateur?