Okay ... so versuche ich, ein Wörterbuch mit Crunch und Grep Ich habe versucht, auch Perl statt mit zu machen.Was ist falsch in diesem Grep-Befehl?
crunch 8 12 1234567890 -d [email protected] | grep -v '\([0-9]\) .*\1.*\1.*\1.*' | grep 41106041
Also, im Grunde möchte ich alle Passwörter filtern, die Zahlen erscheinen 3 mal
grep 41106041
ist nur zu testen, ob der Code funktioniert .. und es funktioniert nicht.
Ich habe auch versucht, einige „C-Stil“ Perl-Code, wie ich noch ein Neuling bin Perl:
#! /bin/perl
@lines=<STDIN>;
$c=0;
foreach $number(@lines)
{
$acum=undef;
$pos=0;
while($pos <= &countdig($number))
{
if ($acum=$digit)
{
$c=$c+1;
}
else
{
$c=0;
}
$acum=$digit;
}
if ($c=3)
{
print "$number"." ";
}
$c=0;
}
sub countdig
{
my($j)=0;
chomp(my(@n)[email protected]_);
print "first dig $n[$j] \n";
while($_[0][$j]>=0 && $_[0][j]<=9)
{
$j+=1;
}
print "j total : $j \n";
$j;
}
Countdig soll die Anzahl der Ziffern zählen, aber was ist .. Ich kann‘ t Zugriff auf eine skalare Variable als Liste .. so gut, wenn Sie mir erklären könnten, wie es funktioniert, wäre es sehr geschätzt.
Es gibt auch ein Leerzeichen nach der ersten Ziffer im OP-Versuch. – tripleee
Eine Lösung in c war nicht das Problem, aber danke trotzdem. Ich habe das Skript in Perl gegen Grep getestet und es scheint, Perl handle Bruteforce-Daten viel effektiver. Nochmals vielen Dank für die Beantwortung einer so dummen Frage, es hat mir sehr geholfen. –
Es ist effizient, weil es * nicht * rohe Gewalt ist. Es macht höchstens 'length ($ num)' checks. Die Regexp ist eigentlich der Brute-Force-Ansatz und führt zahlreiche Überprüfungen durch – ikegami