PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl Wordlist Generator



]=-antr4xx-=[
07.04.2010, 16:36
Das habe ich gerade geschrieben, bei Fragen könnt ihr euch gerne melden.

Hier nochmal im Pastebin:http://pastebin.com/yWDVZT0k


#! /usr/bin/perl

use warnings;

print "How many characters to use: ";
chomp($how_many = <STDIN>);

print "Which characters to use: ";
chomp($characters = <STDIN>);

sub doIt {
my $i;
if($_[1] eq 0) {
print $_[0]."\n";
}
else {
for($i=0; $i le length($characters)-1; $i++) {
doIt($_[0].substr($characters, $i, 1), $_[1]-1);
}
}
}

doIt("", $how_many);

Cheese
07.04.2010, 20:03
rekursiver algo ;)

echt nice geschrieben, wie sinnvoll das ganze jetz ist ist mir egal, aber der code ist nice.

mbeezy
07.04.2010, 20:07
Die Option, das ganze in einer Art Wordlist abzuspeichern wäre noch eine nette Funktion. So rennt das Script im Terminal und das wars. ;)

]=-antr4xx-=[
07.04.2010, 20:43
Freut mich, dass es euch gefällt.
Hier das ganze noch einmal, doch jetzt kann man es auch in einer Datei abspeichern:

Pastebin: http://pastebin.com/GhEab6KH


#! /usr/bin/perl

use warnings;

print "How many characters to use: ";
chomp($how_many = <STDIN>);

print "Which characters to use: ";
chomp($characters = <STDIN>);

print "Enter filename to save to:";
chomp($filename = <STDIN>);

open $fh, '>', $filename;

sub doIt {
my $i;
if($_[1] eq 0) {
print $fh $_[0]."\n";
}
else {
for($i=0; $i le length($characters)-1; $i++) {
doIt($_[0].substr($characters, $i, 1), $_[1]-1);
}
}
}

doIt("", $how_many);

close($fh);


Ich werde eventuell morgen das ganze mit Tk verpacken, einfach um bisschen Tk zu lernen.

nemo
11.04.2010, 13:55
~

]=-antr4xx-=[
11.04.2010, 20:15
Danke, so sieht das wirklich schon besser aus.
Eigentlich hatte ich dieses Programm in C geschrieben (abends im Bett auf den Netbook, und WLAN funzt nicht), und nun wollte ich es nach Perl portieren, um eben den Umgang mit Perl zu üben.
Ich denke ich werde das jetzt mal öfters tun.

Aber gibt es eigentlich noch andere Methoden, eine Wordlist zu generieren?

0x30
11.04.2010, 20:38
my ($word, $chars, $num, $fh) = ($_[0], $_[1], $_[2], $_[3]);wird zu

my ($word, $chars, $num, $fh) = @_;

sub remove_duplicates {
my @array = split('', $_[0]);
my $chars = '';

foreach (@array) {
if ($chars !~ /$_/) {
$chars .= $_;
}
}

return $chars;
}
wird zu


sub remove_duplicates {
my @dub = split('', shift);
my %tmp = map{$_, 1) @array;
my @uni = keys(%tmp);
return @uni;
}
ungetestet.

]=-antr4xx-=[
17.04.2010, 23:50
Hier uebrigens das Pendant in C++:

http://free-hack.com/ansi-c-c-c/53424-c-wordlist-generator.html#post423931

0x30
18.04.2010, 00:23
Du weisst schon das C != C++ ist oder?

]=-antr4xx-=[
18.04.2010, 08:24
Klar weiss ich das, aber ich code kein reines C++, da ist viel C mit dabei, wobei die Übergänge sowieso fliessend sind.
Dann deklarieren wir es halt als C++, weil man es mit einem C++-Compiler kompilieren muss.