**Dies ist eine alte Version des Dokuments!**
Brute-Force Attacke
Ziele:
- 'richtiges' Python installieren
- Python-Module mit
pip
installieren können - Mit Brute-Force Passwörter hacken
In dieser Aufgabe geht es darum, geheime Passwörter mithilfe der Brute-Force Methode zu hacken, über welche man Zugriff auf geheime Nachrichten (Achtung: Flachwitz-Alarm!) erhält. Insgesamt gibt es mind. fünf solcher Passwörter / Nachrichten, die man hacken kann. Beachte, dass alle Passwörter ausschliesslich die Grossbuchstaben 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
verwenden. Es gibt also keine Kleinbuchstaben, Umlaute, Leerzeichen, Zahlen, Sonderzeichen, …
Für diese Aufgabe gibt es zwei Versionen:
- Online-Hack: Hier wird eine Website gehackt, die auf einem Schulserver läuft.
- Offline-Hack Die (verschlüsselten) Daten, die gehackt werden sollen, werden auf den Computer heruntergeladen, es ist also kein Zugriff auf eine Website nötig.
Wähle eine der beiden Optionen (online oder offline) und löse die Aufgaben weiter unten. Für jede Option gibt es ein Template mit vordefiniertem Code, den man verwenden soll. Lasse dich von diesem Code nicht einschüchtern: Du musst diesen nur anwenden aber nicht verstehen.
Templates für Hack
Online (Website)
- Benötigt Python-Modul Selenium:
pip install selenium
- Benötigt aktuelle Version von Google Chrome
- Erklärung:
- Jedes Mal, wenn man auf der Website ein Passwort eingibt und den Button drückt, wird im JavaScript-File die Funktion
check_pw(...)
ausgeführt, die überprüft, ob das eingegebene Passwort korrekt ist oder nicht. Die Funktion gibt zwei Werte zurück:- Code: $201$ falls korrekt, $401$ falls falsch
- Message
- Der Code unten verbindet sich mit der Website und ruft die Funktion
check_pw(...)
auf und erhält den Code und die Message zurück.
Offline (verschlüsselte Daten)
- Benötigt Python-Modul PyCryptoDome:
pip install pycryptodome
- Erklärung: Die Python-Funktion
check_pw(...)
überprüft ein Passwort und erhält einen Code und eine Message (gleich wie bei Online-Version oben) zurück.
Hilfe benötigt?
- Verwende KI als Tutor (z.B. ChatGPT, Bing-Chat, …)
Aufgabe 0
Ziel: richtiges Python & VSCode einrichten
- Entscheide dich für eine Hack-Variante („Online“ oder „Offline“) …
- … und installiere das benötigte Modul (siehe oben, welches Modul benötigt wird).
- Optional aber empfohlen: Finde heraus, wie man Jupyter-Notebooks verwendent. Mit diesen kann man Code und Text miteinander kombinieren.
Aufgabe 1: Zufällige Zeichenkette
- Lade das passende Template oben herunter / kopiere es in ein Python oder Jupyter-Notebook File und führe es aus.
- Finde das erste Passwort durch ausprobieren heraus: Passwort 1: ein einziger Grossbuchstabe
- Schreibe nun den Code, der das zweite Passwort hackt: Passwort 2: drei zufällige Grossbuchstaben. Schreibe deinen eigenen Code, verwende keine Module wie itertools.
Aufgabe 2: Deutsches Wort
Das folgende Dokument enthält kapp $10000$ der am meisten verwendeten deutschen Wörtern: woerter_top10000de_upper.txt.zip (muss zuerst entzippt werden!)
- Finde heraus, wie man in Python ein Text-File einliest und Zeile für Zeile durchgeht. Verwende dazu KI als Tutor.
- Hacke damit Passwort 3: Besteht aus einem Wort (nur Grossbuchstaben) aus der Liste oben.
Aufgabe 3 (optional)
Hacke die verbleibenden Passwörter:
- Passwort 4: besteht aus mehr also drei zufälligen Grossbuchstaben.
- Knacke Passwort 4 mithilfe einer rekursiven Funktion. Recherchiere selbst, was dies bedeutet.
- Passwort 5: besteht auf zwei aneinandergereihten Wörtern aus der Liste von oben
Andere Aufgaben:
- Mache eine Laufzeitanalyse: Mithilfe des
time
Moduls (import time
, kein pip nötig) kann man bestimmen, wie lange die Ausführung eines Codes dauert. Wie lange dauert es im schlechtesten Fall, um ein Passwort mit $1,2,3,4,5,\ldots$ Zufallszeichen (Grossbuchstaben) zu bestimmen? - Versuche, einen (oder beide) der Codes, die für diese Aufgaben zur Verfügung gestellt werden, zu verstehen.