#!/usr/bin/perl

##########################################
#                                        #
# createpw.pl V 1.0                      #
#                                        #
# generiert Passwörter                   #
#                                        #
# dirk@schimansky.com - 21. April 2012   #
#                                        #
##########################################

###
# verwendeter Zeichenbereich
my @ZEICHEN=("a".."z","A".."Z","0".."9");

###
# Sonderzeichen (vor Verwendung unbedingt pruefen,
# ob Sonderzeichen in einem Passwwort auch akzeptiert werden)
#push @ZEICHEN,"!","§","\$","%","&","<",">","/","(",")","{","}","=","?","-","_";

###
# zur Verfuegung stehende Zeichen
$RANGE=@ZEICHEN;

###
# Laenge des Passwortes
$LAENGE=16;	# default-Wert

###
# Passwort generieren
for(my $i = 0; $i < $LAENGE; $i++) {
	$CODE.=$ZEICHEN[int(rand(@ZEICHEN))];
}

###
# missverstaendliche Zeichen austauschen
&ReplaceLetters("l");
&ReplaceLetters("i");
&ReplaceLetters("I");
&ReplaceLetters("L");
&ReplaceLetters("O");
&ReplaceLetters("0");

###
# Ausgabe
print "\n\t$LAENGE-stelliges PW aus $RANGE moegl. Zeichen:\t$CODE\n\n";

###
# ich habe fertig!
exit;

################################################################################
########## Unterprogramme (in dem Skript hier gibt es nur eines ;-)) ###########
################################################################################

###
# missverstaendliche Zeichen austauschen
sub ReplaceLetters {
	$REPLACEMENT=$ZEICHEN[int(rand(@ZEICHEN))];
	while ("$REPLACEMENT" eq "$_[0]"){
		$REPLACEMENT=$ZEICHEN[int(rand(@ZEICHEN))];
	}
	$CODE=~s/$_[0]/$REPLACEMENT/g;
	$RANGE--;
}

########## Skriptende ##########################################################
