#!/usr/bin/perl use bytes; use Getopt::Std; use File::Basename; my $optstring = "c:l:s:m:f:h"; getopt($optstring,\%opt); $opt{'c'}||=10; $opt{'l'}||=10; srand(time); $time = time; if(defined($opt{h})){ print basename($0)." -c Anzahl \t Generiert Anzahl Passörter (Normal: 10)\n"; print basename($0)." -l Länge \t Gibt die Länge der Passwörter an (Normal: 20).\n\t\t\t Kann mit -c verbunden werden\n"; print basename($0)." -s 1\t\t Benutzt auch Sonderzeichen (ISO-Kodierung).\n\t\t\t Kann mit -c und -l verbunden werden\n"; print basename($0)." -m 1\t\t Verschlüsselt die generierten Passwörter mit der Perl-Crypt-Funktion.\n\t\t\t Kann mit -c -s -l erbunden werden.\n"; print basename($0)." -f 1\t\t Startet eine interaktive Sitzung zum hashen einer Datei oder eines Satzes.\n\t\t\t Kann nicht kombiniert werden\n"; print basename($0)." -h 1\t\t Gibt diese Hilfe aus\n"; print basename($0)."\t\t Zeigt 10 Passwörter der Länge 10 an\n"; exit 0; } elsif(defined($opt{'f'})){ print "Wollen sie eine Datei hashen (0) oder einen Satz eingeben (1)? [0] :"; chomp($chosen = ); if($chosen){ print "Bitten geben sie ihren Satz/Text ein.\n"; print "Beenden sie mit [Strg+D]\n"; chomp(@lines = ); } else{ print "Welche Datei soll gehasht werden?"; chomp($file = ); open(handle, $file); @lines = ; } print "Wollen sie mit der Perl eigenen Crypt Funktion (0) oder mit dem Systembefehl (1) md5sum arbeiten?"; chomp($chosen = ); if($chosen){ open(tmpfile, ">/tmp/pwtmp".$time); foreach(@lines){ print tmpfile $_; } $hash = system("md5sum /tmp/pwtmp".$time); print $hash,"\n\n"; } else{ foreach(@lines){ $line .= $_; } print "Bitte geben sie ein bisschen Salz ein:"; chomp($salt = ); $hash = crypt($line,$salt); print $hash,"\n\n"; } } elsif(defined($opt{'s'})){ @chars=(33..156,158..255,289..412,414..511); for(1..$opt{'c'}){ for(1..$opt{'l'}){ $number = int(rand(511-33)); printf "%c",$chars[$number]; } print "\n"; } } else{ @chars=(a..z,A..Z,0..9); for(1..$opt{'c'}){ for(1..$opt{'l'}){ $number = int(rand(62)); if(defined($opt{'m'})){ $ende.=$chars[$number]; } else{ print $chars[$number]; } } if(defined($opt{'m'})){ print crypt($ende,$chars[int(rand(62))].$chars[int(rand(62))].$chars[int(rand(62))]); } print "\n"; } }