tangetools/goodpasswd/goodpasswd

35 lines
902 B
Perl
Executable file

#!/usr/bin/perl
# This program generates passwords that:
#
# * are hard to guess
# * will be displayed unambigously in any (normal) font
# * will survive being passed through a bad fax machine
# * has UPPER lower number and sign
#
# Too close: B8 cC g9 kK lI l1 oO O0 pP sS uU vV xX zZ ,. :; `' S5
# Causes problems in URLs: @/:
# Causes problems in shell: ! " # $ & ( ) [ ] { } ? | < > \ * =
# SQL uses: % for wildcard
# Hard to type: ^ ~ ¨ ¤ § ½ æ ø å Æ Ø Å
# Never 2 same chars next to eachother. (--) is bad
my $pw;
my @chars=split //, 'abdefhijmnqrtyADEFGHJLMNQRTY23467+-';
do {
$pw = "";
for (1..12) {
do {
# avoid double chars (such as --)
$this = $chars[rand $#chars+1]
} while($last eq $this);
$last = $this;
$pw .= $this;
}
} while (not($pw =~ /[A-Z]/ and
$pw =~ /[a-z]/ and
$pw =~ /[0-9]/ and
$pw =~ /[^a-zA-Z0-9]/));
print "$pw\n";