# John the Ripper

John the Ripper, kurz John oder JtR, ist eine von Alexander Peslyak (SolarDesigner) geschriebene und weit verbreitete freie Software zum Testen von Authentifizierungseinrichtungen und Passwörtern. Das Programm unterliegt der GNU General Public License. Ursprünglich für Unix-Betriebssysteme entwickelt, ist es derzeit auf 14 verschiedenen Betriebssystemen lauffähig. Ebenfalls wird der Quellcode zur Anpassung an andere Computersysteme bereitgestellt. John ist eines der beliebtesten Programme zum Dekodieren und Testen von Passwörtern.
John kann zu einem vorhandenen verschlüsselten Passwort durch Brute-Force bzw. durch einen Wörterbuchangriff (Dictionary-Attack, Passwörter aus einer Textdatei auslesen) dessen Klartext entschlüsseln. Dies funktioniert durch Verschlüsseln eines Probe-Passworts, des sogenannten „Kandidaten“, und Vergleich des daraus entstandenen Schlüsseltextes mit dem schon verschlüsselten Passwort. Sind beide gleich, so wurde das Passwort oder eine Hashkollision gefunden. Die Kandidaten können dabei aus einer Wörterliste ausgelesen werden, oder im incremental mode anhand von Regulären Ausdrücken von John generiert werden. Für den letzteren Modus liegen zahlreiche Ausdrücke bei, die sich daran orientieren, wie Menschen Passwörter bilden.
John ist in der Lage, DES (Traditional, BSDI, Kerberos, Microsoft LM), MD5 sowie Blowfish zu knacken. Patches, die auf der Website bereitgestellt, aber offiziell nicht unterstützt werden, erweitern den Umfang um wesentlich mehr Algorithmen bzw. Passwortdateien von diverser Software. Der Schwerpunkt von John liegt jedoch bei kryptographischen Hash-Funktionen statt Dateiformaten.
Die Assemblerbefehle mit der MMX-Erweiterung, welche lange Zeit die beste Optimierung (für x86-CPUs) darstellte, wurde ab der Version 1.7.2 durch die modernen SSE2-Assemblerbefehle ersetzt. Er ermöglicht auf neueren CPUs eine wesentliche Leistungssteigerung. Ursache hierfür ist weniger der verwendete SSE2-Befehlssatz, sondern vielmehr die Registeranzahl, welche neuere CPUs bieten. Wurden früher nur 8 Register in die CPU integriert, so sind es bei neuen AMD/INTEL Prozessoren bereits 16.
Für AMD gilt dabei eine Einschränkung, welche eventuell noch bereinigt wird. AMD-Prozessoren stehen im 32-Bit-Modus lediglich 8 der 16 Register zur Verfügung. Daher ist es bei AMD64-Prozessoren anzuraten, den 64-Bit-Betriebmodus bzw. MMX (im 32-Bit-Modus) als Optimierung zu wählen. Diese Erkenntnis führte zur SSE2-Entwicklung in John The Ripper.
Auch wurde eine AltiVec-Unterstützung für die PowerPC-Architektur (PPC) eingeführt, die ebenfalls enorme Geschwindigkeitssteigerungen bringen soll.
Ab Version 1.7.2 bietet John SSE2 auch auf diversen BSD-Betriebssystemen an. So stehen für OpenBSD, FreeBSD und NetBSD wesentlich mehr build targets zur Verfügung.
Ebenfalls neu ist ab Version 1.7.2 eine kommerzielle Version, welche allerdings ebenfalls den Quellcode mitbringt. Diese Version soll sich an Firmen richten, die John zur regulären Prüfung ihrer Passwörter einsetzen. Veränderte Regeln sowie einige Verbesserungen der Dokumentation (welche auf die Zielplattform abgestimmt wurde) sind ausschließlich für diese Version vorgenommen worden. Firmen und Administratoren erhalten damit einen Zeitvorteil, der gegenüber der kostenlosen Version, welche oftmals Änderungen per Hand an der Konfiguration erfordert, teilweise gravierend ist.

## Verteiltes und paralleles Rechnen

Mit Hilfe von Distributed John (djohn) lässt sich der Rechenaufwand auf mehrere Rechner nach dem Prinzip des Verteilten Rechnens aufteilen. Mit Hilfe von John-MPI (John the Ripper MPI-Patch) kann der Rechenaufwand auf mehrere Cores eines oder mehrerer Systeme nach dem Prinzip des parallelen Rechnens unter Verwendung von MPI aufgeteilt werden.

## Rechtliches

John the Ripper kann Passwörter zur unerlaubten Umgehung von Sicherheitsvorkehrungen herstellen oder aufdecken. Damit stehen bestimmte Handlungen, wie die gezielte Verbreitung zu diesem Zweck in Deutschland nach § 202c StGB („Hackerparagraf“) unter Strafe.