Das einzige was ich da nicht ganz verstehe, ist wie ich Perl nun sage, dass es alle möglichen Kombinationen ausprobieren soll (und sich natürlich nicht wiederholen darf)
Jemand Ahnung auf diesem Gebiet?
Beginne damit, das Problem in der Komplexität zu reduzieren: Generiere erst mal alle Passworte einer festen Länge.
(Keine Garantie für korrekte Syntax -
Hauptsache, der Algorithmus stimmt in etwa)
my @password;
my $chars = <Zeichenkette aller erlaubten Zeichen>;
sub try ($)
{
# Parameter übernehmen
my $level = $_;
# n-tes Zeichen durchprobieren
for (my $i=0; $i < len($chars; $t++)
{
# setze nächstes Zeichen in Passwort
@password[$level] = substr ($chars, $i, 1);
# Rekursion
if ($level < $maxlen)
{ try ($level+1) }
else
{ # crypt aufrufen und ... tun }
}
}
for (my $i=1; $i < $maxlen; $i++)
{
# Probiere alle Passworte genau dieser Länge
try ($i);
}