Wenn nichts mehr geht: rephrase

Wer hat nicht schon mal ein Passwort vergessen? Genau. Wir alle standen schon vor dem Problem. Besonders ärgerlich ist es Passwörter zu vergessen, die PGP-Schlüssel entsperren. Das einzige was bisher in so einem Fall zu tun blieb war entweder Passwörter durchprobieren, oder das im Prozess der Schlüsselerzeugung generierte Widerrunfszertifikat in die freie Wildbahn zu entlassen und ein neues Schlüsselpaar zu erzeugen.

In meinem Fall war mir jedoch die Struktur des verloren gegangenen Passwortes relativ klar. Statt jetzt händisch alle möglichen Variationen aus Groß- und Kleinschreibung durchzuprobieren, fand ich das Programm rephrase.

Installation aus den Paketquellen

Ab 14.04 befindet sich dies in den Paketquellen von Ubuntu und kann mit einem einfachen Aufruf von

sudo apt-get install rephrase

installiert werden.

manuelle Installation mittels Quellpaket

Für ältere Ubuntuversionen muss auf das sehr übersichtliche Quellpaket zurück gegriffen werden, dass sich auf der Webseite des Entwicklers finden und herunterladen lässt.

Die Installation ist in diesem Fall etwas komplexer. Um den Zugriff auf die Schlüsselverwaltung sicher zu stellen, gilt es zunächst zu klären, wo auf dem System GPG installiert ist.

which gpg

In meinem Fall fand sich GPG unter /usr/bin/gpg. Dieser Ort muss ins Makefile, was sich mit folgendem Aufruf erledigen lässt:

make GPG=/usr/bin/gpg

Im Makefile lassen sich auch weitere Details festlegen, die für mich nicht weiter relevant waren. In der mitgelieferten ReadMe-Datei werden diese jedoch erklärt.

Nun muss das Programm nur noch installiert werden:

sudo make install

Nutzung

Auch die Nutzung ist sehr sinnvoll gestaltet. Zunächst braucht es die Schlüssel-ID von dem Schlüssel zu dem das Passwort fehlt. Diese lässt sich zum Beispiel in der Schlüsselverwaltung von GPG oder eurem Mailprogramm finden uns ist achtstellig.

Zum Start wird rephrase genau diese Nummer als Argument übergeben:

sudo rephrase ABCD1234

Im nächsten Schritt seid ihr aufgefordert ein Muster einzugeben, dass durchprobiert werden soll. Für jede Stelle des Passwort lässt sich innerhalb einer Klammer angeben, welche Zeichen ausprobiert werden sollen.

Für ein Passwort mit sechs Zeichen sieht das zum Beispiel so aus: (U|u)(b|6)untu

In diesem Fall probiert das Programm folgende Varianten durch:

  • Ubuntu
  • ubuntu
  • U6untu
  • u6untu

Pro Klammer lassen sich auch mehr als zwei Varianten probieren. Zum Beispiel führt (B|b|8|6) dazu, dass das Programm an dieser stelle alle vier Zeichen durchprobiert.

Auch ein fehlenden eines Zeichen kann an einer Stelle mittels (B|b|) ausgedrückt werden.

In der Praxis kann ich nur empfehlen, dass Passwortmuster, dass ihr eingebt nicht direkt in das Programm einzugeben sondern entweder auf einem Zettel oder in einer Textdatei zwischen zu speichern. Aus Sicherheitsgründen zeigt das Programm selbst das Muster bei der Eingabe nicht an, was es insbesondere bei längeren Passwörtern nicht leicht macht, das Muster im Programm selbst zu entwickeln.

Darüber hinaus wird das gefundene Passwort (ebenfalls aus Sicherheitsgründen) nicht im Klartext angezeigt sondern als Zeichenfolge in der Form 1 2 1 1 1 1. Wobei jede Ziffer die Position der zur Verfügung gestellten Zeichen an der Stelle angibt. In unserem Beispiel also fast immer das erste zur Verfügung gestellte Zeichen, außer an zweiter Stelle, wo das zweite Zeichen benötigt wird.

So ergibt sich nach Abgleich mit unserem Muster:

Stelle 1 2 3 4 5 6
Muster (U|u) (b|6) u n t u
Ergebnis 1 2 1 1 1 1
Passwort U 6 u n t u

Ein wesentlich komplexeres Beispiel mit weiteren Erläuterungen und Hinweisen zu Sonderzeichen findet sich ebenfalls in der ReadMe-Datei.

Je nach Länge des vergessenen Passwortes braucht das Programm sehr lang zum Durchprobieren. Ein Blick auf meine CPU-Auslastung legt die Vermutung nah, dass es nicht besonders effektiv dabei ist in kurzer Zeit viele Kombinationen durch zu probieren.