Passwort einer verschlüsselten PDF ermitteln

Vor einigen Tagen stand ich vor dem Problem ein PDF mit Vertragsunterlagen öffnen zu wollen, welches allerdings mit einem Passwort geschützt war. Und wie es Murphys Gesetz vorschreibt, hatte ich das entsprechende Passwort natürlich verlegt.

Mithilfe der Software PDFCrack, kann ein solches Passwort wieder hergestellt werden. Dazu muss die Software erst installiert werden, unter macOS z. B. mittels Homebrew:

brew install pdfcrack

Unter Linux steht PDFCrack über die entsprechenden Paketmanager ebenfalls zur Verfügung. Anschließend kann damit begonnen werden das Passwort zu ermitteln:

pdfcrack -f encrypted.pdf

PDFCrack beginnt nun damit alle möglichen Passwörter durchzuprobieren; bis schlussendlich das richtige Passwort gefunden wurde:

Security Handler: Standard
V: 2
R: 3
P: -1852
Length: 128
Encrypted Metadata: True
FileID: 382bbf6cdba9941cfd35bd21e6dbas0b68
U: 07556c324622f519b6838c213136129500000000000000000000000000000000
O: 9fb467e3c673228ac08571dab482b385da99ada024cf952ef8f8489d6f680d226
Average Speed: 84554.6 w/s. Current Word: 'O4eg'
Average Speed: 84246.6 w/s. Current Word: '9ojn'
Average Speed: 84455.9 w/s. Current Word: 'ZOou'

Wird der Prozess abgebrochen; so wird der aktuelle Status in der einer sav-Datei abgespeichert. Leider ist PDFCrack nicht Multithreading fähig; sodass es von mehreren Prozessorkernen leider nicht profitiert und der Vorgang somit entsprechend lange dauert.

Automatisches Entsperren eines Macs mit der Apple Watch

Seit macOS High Sierra ist es möglich den eigenen Mac mit der Apple Watch zu entsperren, wenn einige Systemvoraussetzungen erfüllt sind. Ist dies gegeben kann die Entsperrung über die Apple Watch in den Einstellungen von macOS aktiviert werden.

Dazu muss die Seite Sicherheit und dort die Unterseite Allgemein aufgerufen werden. Dort findet sich der Punkt Mit deiner Apple Watch Apps und deinen Mac entsperren. Ist dieser aktiviert, so entsperrt sich das System automatisch, wenn der Nutzer mit der entsprechenden Apple Watch vor dem Gerät sitzt.

In den Sicherheitseinstellungen kann die Entsperrung über die Apple Watch aktiviert werden

Dabei muss die Apple Watch sich nah am Gerät befinden. Außerdem muss sie entsperrt sein und darf sich nicht im Schlafmodus befinden. In solchen Fällen muss das Passwort normal eingeben werden. Auch beim Hochfahren und dem ersten Login muss das Passwort eingegeben werden. Nicht nur macOS lässt sich dann entsperren, sondern auch entsprechende Apps oder die Freischaltung von Administrator-Rechten. In einem solchen Fall muss die Freigabe auf der Apple Watch über die Seitentaste genehmigt werden. Auch beim automatischen entsperren, erhält der Nutzer eine Benachrichtigung auf seiner Apple Watch.

Passwort für den administrativen MikroTik Nutzer setzen

Wenn ein MikroTik-Router zurückgesetzt wurde oder frisch aus der Fabrik kommt, so verfügt er über einen Nutzer mit dem Namen admin. Standardmäßig ist für diesen Nutzer kein Passwort gesetzt. Damit der Router abgesichert ist, kann dieses Passwort einfach über das Terminal gesetzt werden. Dazu muss sich ersten Schritt per SSH auf dem Router eingeloggt werden:

ssh admin@192.168.1.1

Anschließend wird der Nutzer von einem Prompt begrüßt. Mit der Eingabe des Befehls:

/password

kann das Passwort für den eingeloggten Nutzer geändert werden. Dazu muss das alte Passwort eingegeben werden. Da dieses im Standardfall leer ist, kann hier einfach mit einem Druck auf die Enter-Taste bestätigt werden. Anschließend kann das neue Passwort eingegeben und nochmals bestätigt werden. Danach ist der Nutzer admin abgesichert und kann nicht mehr ohne Passwort genutzt werden.

MikroTik-Router per SSH konfigurieren

Die Router von MikroTik können auf unterschiedlichsten Wegen konfiguriert werden. Zum einen kann das Windows-Tool WinBox genutzt werden. Daneben existiert ein Webinterface und als dritte Möglichkeit der Zugang per SSH. Um sich per SSH mit dem Router verbinden zu können, muss der MikroTik-Router über eine IP-Adresse verfügen. Anschließend kann er per SSH konfiguriert werden:

ssh admin@192.168.1.1

Als Nutzername muss admin genutzt werden. Bei einem frischen System ist für den Nutzer admin noch kein Passwort gesetzt.

Nach dem Login wird der Nutzer von einem Prompt in Empfang genommen

Damit kann der Router nun über die SSH-Verbindung konfiguriert werden.

Einfacher Passwort-Generator unter Java

Das Ausdenken von Passwörtern ist prinzipiell eine schlechte Idee; besser ist es, wenn diese automatisch generiert werden. Ein solcher Generator kann problemlos selbst geschrieben werden. In diesem Fall in Java:

public class PasswordGenerator {

    private static final SecureRandom secureRandom = new SecureRandom();

    private static final String alpha = "abcdefghijklmnopqrstuvwxyz";
    private static final String alphaCaps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private static final String numeric = "0123456789";
    private static final String specials = "!§$%&/()=?.:,;+*#<>";

    public enum CharacterSet {
        Alpha,
        AlphaCaps,
        AlphaBoth,
        Numeric,
        AlphaNumeric,
        Special,
        All
    }

    private static String getCharacters(CharacterSet characterSet) {

        switch (characterSet) {
            case Alpha:
                return alpha;
            case AlphaCaps:
                return alphaCaps;
            case AlphaBoth:
                return alpha + alphaCaps;
            case Numeric:
                return numeric;
            case AlphaNumeric:
                return alpha + alphaCaps + numeric;
            case Special:
                return specials;
            case All:
                return alpha + alphaCaps + numeric + specials;
        }

        return alpha;
    }

    public static String generatePassword(int length, CharacterSet characterSet) {

        String characters = getCharacters(characterSet);
        StringBuilder stringBuilder = new StringBuilder();

        for (int i = 0; i < length; i++) {
            stringBuilder.append(characters.charAt(secureRandom.nextInt(characters.length())));
        }

        return stringBuilder.toString();
    }
}

Der Generator funktioniert im Groben so, das aus einem bestimmten Zeichenvorrat zufällig Zeichen gewählt und aus diesen das Passwort erzeugt wird. Als Zufallsquelle kommt nicht die gebräuchliche Klasse Random zum Einsatz, sondern die Klasse SecureRandom. Diese von Random abgeleitete Klasse erzeugt aus kryptografischer Sicht starke Zufallszahlen, was die Sicherheit des Generators erhöht. Als kleines Gimmick lässt sich der gewünschte Zeichensatz, aus welchem das Passwort generiert werden soll, über einen Enum auswählen:

String s = PasswordGenerator.generatePassword(64, PasswordGenerator.CharacterSet.All);
System.out.println(s);

Damit würde auf der Konsole ein Passwort mit 64 Zeichen ausgegeben werden, welches den kompletten Zeichenvorrat der Generator-Klasse nutzt.