25.3 crack 

Version: 0.2 | Lizenz: Artistic |
Das Paket crack dient dazu, Passwörter zu prüfen. Das heißt, es kann dazu genutzt werden, Passwörter, die durch einen User ausgewählt wurden, darauf zu testen, ob sie sicher sein könnten. Bitte vergessen Sie dabei nicht, dass dieses Passwort nur »sicher sein könnte«, aber nicht zwangsläufig sicher ist.
crack liegt in PECL in der Version 0.2 vor, was aber nicht darüber hinwegtäuschen sollte, dass crack selbst schon in der Version 2.7 vorliegt, die nur noch nicht so lange in PECL enthalten ist. Dieses Paket wurde unter PHP 4 getestet.
Um crack kompilieren zu können, benötigen Sie die Header-Dateien der cracklib, da das Paket nur einen Wrapper für die cracklib darstellt. Diese sind bei den meisten Linux-Distributionen enthalten. Meist erkennen Sie das entsprechende Paket daran, dass ein devel oder development im Namen vorkommt, wie beispielsweise bei SuSE, wo das Paket cracklib-devel heißt. Sollten Sie trotz der Tatsache, dass das Development-Paket installiert ist, die Fehlermeldung erhalten, dass die cracklib-Header-Datei nicht gefunden wurde, wird wahrscheinlich die Datei packer.h fehlen, die in einigen Linux-Distributionen nicht enthalten ist. Sollte das der Fall sein, laden Sie den Quelltext der cracklib 2.7 einfach von dieser URL herunter: http://www.crypti cide.com/users/alecm/. Entpacken Sie die Datei, und kopieren Sie die Datei packer.h in das Verzeichnis, in dem sich auch die Datei crack.h befindet. Danach sollte die Installation kein Problem darstellen.
Es ist auch möglich, crack unter Windows zu nutzen. Die benötigte DLL wird auf der PECL-Homepage des Pakets mit angeboten, und die Anweisungen zum Einbinden finden Sie unter http://www.php.net/crack.
Um das Paket nutzen zu können, benötigen Sie noch eine oder mehrere Wörterbuchdateien. In diesen Dateien sind Passwörter zu finden, die häufig genutzt werden. Da die Dateien recht umfangreich und sprachspezifisch sind, werden sie nicht sofort mit dem Paket installiert. Entsprechende Wörterbuchdateien für verschiedene Sprachen finden Sie beispielsweise unter dieser URL: ftp://ftp.cerias.purdue.edu/pub/dict/dictionaries/. Nachdem Sie die Datei entpackt haben, können Sie direkt loslegen.
Bevor Sie ein Passwort testen können, müssen Sie erst die Wörterbuchdatei öffnen, wozu die Funktion crack_opendict() definiert ist. Sie bekommt den Namen der Datei sowie den Pfad zu ihr übergeben. Nutzen Sie häufig dieselbe Passwortdatei, können Sie diese auch in der php.ini festschreiben. Hierzu weisen Sie der Direktive crack.default_dictionary den Namen und Pfad der Datei zu. Wenn Sie die php.ini nutzen, ist es möglich, in der PHP-Datei selbst noch eine andere Datei mit crack_opendict() zu öffnen.
Die eigentliche Überprüfung des Passworts wird von der Funktion crack_check() durchgeführt. Diese bekommt als ersten Parameter das File-Handle übergeben, das crack_opendict() zurückgibt. Der zweite Parameter ist das Passwort, das getestet werden soll. Mit einem true bestätigt die Funktion, dass das Passwort sicher zu sein scheint. Gibt sie false zurück, ist das für Sie der Hinweis, dass das Passwort zu schwach ist. In dem Fall können Sie mithilfe der Funktion crack_getlastmessage() den Grund auslesen, warum das System das Passwort beanstandet.
Haben Sie die Wörterbuchdatei manuell geöffnet, sollten Sie diese am Ende des Scripts wieder mit crack_closedict() schließen.
if (false === isset ($_GET['passwd'])) { ?> <form> Bitte geben Sie das Passwort ein: <input type="text" name="passwd" /> <br /> <input type="submit" value="Passwort testen" /> </form> <?php } else { $dict=crack_opendict("words.german"); if (false == $dict) { die ("Konnte Wörterbuch nicht öffnen"); } if (true != crack_check($dict,$_GET['passwd']")) { $msg = crack_getlastmessage(); echo "Password zu einfach!<br />crack meldet: $msg"; } else { echo "Das Passwort scheint ausreichend sicher zu sein"; } crack_closedict($dict); }
Listing 25.1 Testen eines Passworts mit crack
Sollte crack_check() feststellen, dass das Passwort zu schwach ist, liefert crack_getlastmessage() einen dieser Texte zurück: