Portál AbcLinuxu, 21. prosince 2025 21:23
ftpasswd, zda tmu tak opravdu je, a pak si někde implementovat funkci (pokud to žádná existující utilita neumí), která bude pouze ověřovat heslo – tj. vezme zadané heslo a zadaný salt, vytvoří hash a porovná s předchozím hashem.
q: proc ftpasswd generuje v zavislosti na case 2x ruzne hashe pro 1 stejny text?
a:
login: test
passw: 123456
ziskam po 2x spustenich tyto retezce jako heslo:
$1$mnoliFFT$nxvvGaZ88IxqBizWUq15j1
$1$tJ5rHRbh$hEyQtOEwSKLBTP27nQZT0.
$1$UVPtJdhz$YWpwodkQGKewWB9z6zAXp0
toto jsou uplne 3x jine hashe, ale v pripade, ze se tyto retezce pokusi ftpasswd
zmenit, tak pozna, ze se jedna o stejne heslo. proc?
reseni je asi zde (ftpasswd, radky: 349; pro verzi: 1.1.3):
my ($curpasswd, @junk) = find_passwd_entry(name => $name);
my $hash = crypt($passwd, $curpasswd);
if ($hash eq $curpasswd) {
...
}
funkce: 'find_passwd_entry' zjisti udaje o uzivateli a vrati:
return ($pass, $uid, $gid, $gecos, $home, $shell);
tj. 1. argument je aktualni heslo v hash-podobe, potom je to pole v @junk
prikazem:
crypt zasifrujeme/hashujeme 'passwd' pomoci salt-u 'cur-passwd' a ziskame hash, ktery by
mel byt uplne identicky jako hash curpasswd
a ejhle ono to funguje:
#!/usr/bin/perl
# my ($curpasswd, @junk) = find_passwd_entry(name => $name);
# my $hash = crypt($passwd, $curpasswd);
# if ($hash eq $curpasswd) {
# ...
# }
$p='$1$mnoliFFT$nxvvGaZ88IxqBizWUq15j1';
$p='$1$tJ5rHRbh$hEyQtOEwSKLBTP27nQZT0.';
$p='$1$UVPtJdhz$YWpwodkQGKewWB9z6zAXp0';
$h=crypt('123456', $p);
print "\n= = =\n".$p."\n".$h."\n";
output:
= = =
$1$UVPtJdhz$YWpwodkQGKewWB9z6zAXp0
$1$UVPtJdhz$YWpwodkQGKewWB9z6zAXp0
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.