bonjour,
merci pour l'idee du prog en C avec crypt(3), mais en fait j'ai resolu le problem avec un petit script en perl, utilisant le module "Crypt:
asswdMD5", qui est le suivant :
---------------------------------------------------------------------------------------
#!/usr/bin/perl -w
$|=1;
use strict;
use Crypt:
asswdMD5;
my $shadow="/etc/shadow";
my $cnt=0;
print " ---------------------\n Encode shadow for: \n";
open(SHADOW,$shadow) || die "can't read $shadow";
open(SHAD_TMP,">$shadow.tmp") || die "can't read $shadow.tmp";
while (<SHADOW>) {
if ($_ =~ /([^:]+)\
[^:]+)\
.*)/g && $2 !~ /^\$1\$/ && $2 !~ /^[\*\!]$/) {
my $salt=&gen_salt();
print SHAD_TMP $1.":".unix_md5_crypt($2,$salt).":".$3."\n";
print " - $1:$2\n";
$cnt++;
} else {
print SHAD_TMP $_;
}
}
close(SHADOW);
close(SHAD_TMP);
print " ---------------------\n Nb users encodes : $cnt \n";
exit();
# gen alphanum 2 digits salt
sub gen_salt() {
my $i=1;
my ($salt,$rand);
while ($rand=rand(122)){
$salt.=chr($rand) if chr($rand)=~ /\w+/;
last if ($salt&& length($salt)==2);
$i++;
}
return $salt;
}
---------------------------------------------------------------------------------------------
Donc du coup maintenant j'ai pu le rajouter a la suite de mon script bash, ce qui est nickel....
( evidemment j'aurais du y penser avant ou alros tout faire en perl... je pensais pas avaoir un petit souci de ce genre...)
Voila. En tout cas merci.
#%b
Poste le Friday 31 October 2003 14:29:58