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:
J'ai décomposé les 10 valeurs getpwuid et je n'ai pas de mot de passe dedans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"; }
Y a t-il une autre manière d'avoir la valeur cryptée du mot de passe de l’utilisateur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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";
Partager