Crypt::Cracklib von Dan Sully verhindert bzw. erschwert die Verwendung zu einfacher Passwörter.
Dazu führt Crypt::Cracklib eine Wörterbuch Attacke auf das Passwort durch und prüft auch die Verteilung der Zeichen, die Länge der Zeichenkette und die Groß- und Kleinschreibung.
Crypt::Cracklib sollte verwendet werden, wenn der Benutzer sein Passwort selbst festlegen kann.
Beispiel fascist_check
Die automatisch exportierte Funktion fascist_check() liefert folgende Zeichenketten, die Begründung für ein zu schwaches Passwort, zurück (in Klammern die deutsche Lokalisierung):
- it is based on a dictionary word (Es basiert auf einem Wörterbucheintrag)
- it is based on a (reversed) dictionary word (Es basiert auf einem (umgekehrten) Wörterbucheintrag)
- it is WAY too short! (Es ist VIEL zu kurz!)
- it is too short ((Es ist zu kurz)
- it does not contain enough DIFFERENT characters (Es enthält nicht genug unterschiedliche Zeichen)
- it is all whitespace
- it is too simplistic/systematic (Es ist zu einfach/systematisch)
- it looks like a National Insurance number (Es schaut nach Versicherungsnummer aus)
Falls das Password gut genug ist, wird ok zurück geliefert.
#!/usr/bin/perl
use strict;
use warnings;
use Crypt::Cracklib;
my @passwords = qw/123456 Schatzi abc
z6IvPlOx6H oWOYNZI$bP
geheym aaa2$ss iztahcS
FH153436A /;
foreach my $password (@passwords) {
if ( fascist_check($password) eq 'ok' ) {
print "Passwort $password ist OK.\n";
}
else {
print "Ooops - Passwort $password: ", fascist_check($password) , " !!!\n";
}
}
Das Programm erzeugt folgende Ausgabe:
Ooops - Passwort 123456: Es ist zu einfach/systematisch !!!
Ooops - Passwort Schatzi: Es basiert auf einem Wörterbucheintrag !!!
Ooops - Passwort abc: Es ist VIEL zu kurz !!!
Passwort z6IvPlOx6H ist OK.
Passwort oWOYNZI$bP ist OK.
Ooops - Passwort geheym: Es basiert auf einem Wörterbucheintrag !!!
Ooops - Passwort aaa2$ss: Es enthält nicht genug unterschiedliche Zeichen !!!
Ooops - Passwort iztahcS: Es basiert auf einem (umgekehrten) Wörterbucheintrag !!!
Ooops - Passwort FH153436A: Es schaut nach Versicherungsnummer aus !!!
Siehe auch