
cmdchamp v1.2.13
bash CLI-Trainer — 30 Level von ls bis zur Privilege Escalation
cmdchamp
Bash-CLI-Trainer — 30 Level von ls bis zur Privilege-Escalation.

Jede Frage verlangt, dass du einen echten Befehl eintippst — du bekommst sofortiges Feedback und kannst weitermachen. Verfehlst du eine Frage, zeigt es dir nicht nur die Antwort: Es zeigt, was DEIN Befehl ausgegeben hat, im Vergleich zu dem, was gewünscht war, und bei einer Pipeline die Zeilenanzahl auf jeder Stufe, damit du die Stelle siehst, an der es scheiterte. Bei textabgeglichenen Fragen nennt es die akzeptierte Antwort, der deine am nächsten kam, sowie das exakte Flag, das du ausgelassen hast. Schaffst du es auf dem langen Weg, zeigt es dir den kurzen Weg — cat f | grep -c X bringt dir ein Shorter: grep -c X f ein, ausgelöst durch weniger Pipeline-Stufen ebenso wie durch weniger Zeichen, denn der Prozess, den du gespart hast, ist die Lektion. Viele Fragen laufen gegen echte Dateien in der Sandbox, und alle akzeptieren mehrere gültige Syntaxen (sort -u oder sort | uniq). Tab schaltet die Manpage um, wenn du eine Referenz brauchst — komprimierte Seiten für jeden Befehl, den die Antwort ausführt, plus die Shell-Syntax, auf die sie sich stützt (x=$(cmd), ${var:-default}, ${path##*/}), sodass nichts in einer Frage dem Raten überlassen bleibt. Die Reihenfolge wird bei jedem Lauf randomisiert, damit du sie nicht auswendig lernen kannst. Meisterschaft verfolgt, was du weißt: Beantworte eine Frage zweimal richtig, um sie zu meistern; verfehlst du sie, wird sie herabgestuft, sodass sie früher wiederkommt. Eine Serie von 5 richtigen Antworten löst den Feuer-Modus aus — ein Banner, das läuft, bis du danebenliegst.
Jedes Level endet mit einer Boss-Runde — keine Manpages, 30s-Timer, 4/5 zum Bestehen. Scheiterst du, kannst du den Boss sofort erneut versuchen oder zur Übung zurückkehren. Schlage alle 30 und der Herausforderungsmodus wird freigeschaltet — der Endspiel-Parcours: Mehrbefehls-Ketten, die die Werkzeuge aus dem gesamten Spiel zu einer einzigen Pipeline zusammensetzen. 30s pro Kette, ein Leben, keine Manpages, deine beste Punktzahl ist der Rekord. Jede Kette wird anhand ihrer echten Ausgabe in der Sandbox bewertet, also besteht jede korrekte Pipeline. Jeder Lauf erstellt außerdem eine frische randomisierte Sandbox — unterschiedliche IPs, Zähler, Hosts und Logdaten — und greift auf 50+ Kettenvorlagen mit rotierenden Trennzeichen, Sortierreihenfolgen und Aggregaten zurück, sodass die geschäftigste IP, die Top-URL, der höchste Zähler nie zweimal gleich sind. Der erste Lauf enthält ein kurzes Tutorial und einen Einstufungstest, mit dem du Level überspringen kannst, die du bereits kennst.
Mit bubblewrap laufen Befehle in einem echten, sandboxierten Dateisystem und werden anhand ihrer tatsächlichen Ausgabe bewertet. Die Box darin ist synthetisch — Benutzer sandbox, Host sandbox, eigene /etc/passwd und eigene Kernel-Befehlszeile — sodass nichts, was du eintippst, deinen echten Benutzernamen, Rechnernamen oder die Festplattenstruktur auf den Bildschirm drucken kann, und id, whoami und hostname überall gleich antworten. Das reicht nun auch bis zur Forensik-Stufe: Level 28 gibt dir eine echte Beispiel-Binärdatei (samples/target.bin) und bewertet, ob du tatsächlich das Flag, die Exfiltrations-Domain und den geleakten API-Schlüssel daraus gezogen hast — ebenso für die jq-Fragen zu echtem JSON. Der Endspiel-Parcours setzt diese Extraktionen zu zeitgesteuerten Ketten zusammen. Die Level 24–25 laufen jetzt ebenfalls echt: Ein kleiner HTTP-Dienst startet auf localhost:8080 im eigenen Netzwerk-Namespace der Sandbox, während deine Antwort läuft, mit drei lauschenden Ports, sodass curl, jq über HTTP, ss und nmap anhand dessen bewertet werden, was sie tatsächlich zurückgaben. Nichts wird deinem Rechner ausgesetzt — der Namespace blockiert weiterhin jede ausgehende Verbindung, und der Port ist von außen unsichtbar. Nur die Werkzeuge, die wirklich nicht in einer Sandbox laufen können — WLAN/RF, Live-Mitschnitt und große Speicher-/Festplatten-Forensik — bleiben textabgeglichen. Such-Level (16–17) akzeptieren sowohl rg/fd als auch grep/find-Syntax. Vi-Zeileneditierung ist eingebaut — Bewegungen, Operatoren, Zähler, Register, Undo und visueller Modus (v/V, o zum Wechseln der Enden), mit ? für die vollständige Karte.
Install
Arch (AUR):
paru -S cmdchamp # or: yay -S cmdchamp
Überall (Einzeldatei):
mkdir -p ~/.local/bin && curl -sL https://raw.githubusercontent.com/mellen9999/cmdchamp/main/cmdchamp -o ~/.local/bin/cmdchamp && chmod +x ~/.local/bin/cmdchamp
Füge ~/.local/bin bei Bedarf zum PATH hinzu: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
Oder klonen:
git clone https://github.com/mellen9999/cmdchamp.git
cd cmdchamp && make install
Erfordert: bash 4.4+, coreutils, awk
macOS: Wird mit bash 3.2 ausgeliefert — installiere zuerst bash 4.4+: brew install bash
Optional: bubblewrap (bwrap) für den Sandbox-Modus (nur Linux) — die meisten Desktop-Distributionen enthalten es. Ohne es werden Antworten nur textabgeglichen
Optional: python3 — bedient den localhost-HTTP-Dienst der Sandbox, sodass die live api / live box-Fragen auf den Leveln 24–25 anhand echter Ausgabe bewertet werden. Ohne es fallen diese Fragen auf Textabgleich zurück; sonst ändert sich nichts
Barrierefreiheit: Beachtet NO_COLOR und TERM=dumb. Das Layout passt sich an COLUMNS / tput cols an. Meisterschaftsbalken tragen sowohl Farbe als auch ein ✓ / ~ / x-Symbol — ohne Farbe lesbar.
Terminals: Läuft auf echten seriellen Terminals, nicht nur Emulatoren. cmdchamp prüft, was das Terminal tatsächlich anzeigen kann, und wählt eine von drei Rendering-Stufen — Unicode, DEC-ACS-Liniengrafik oder reines ASCII — sodass Rahmen auf einem VT100/VT220/VT320/VT420 oder Wyse intakt bleiben. Auf einem monochromen Bildschirm werden Farbunterschiede als fett/invertiert neu kodiert. Erzwinge eine Stufe mit CMDCHAMP_ASCII=1 oder CMDCHAMP_UNICODE=1. ./test_terminals.sh verifiziert es.
Verwendung
cmdchamp # Startet das Spielmenü
cmdchamp explain 'CMD' # Erklärt jeden Befehl - jedes Flag, plus die Shell-Syntax darum herum
cmdchamp autopsy # Liest deine eigene Shell-Historie und ordnet sie dem Lehrplan zu
cmdchamp daily # Spielt die heutige tägliche Herausforderung (gleicher Lauf für alle)
cmdchamp daily 2026-02-16 # Spielt den Lauf eines bestimmten Tages erneut (gegen einen Freund antreten)
cmdchamp play # Freispiel-Sandbox: gib einen beliebigen Befehl ein, sieh ihn laufen
cmdchamp --no-sandbox # Sandbox deaktivieren (nur Textabgleich)
cmdchamp reset # Löscht allen Fortschritt
cmdchamp test # Führt Selbsttests aus
cmdchamp version # Zeigt die Version
cmdchamp help # Zeigt die Hilfe
cmdchamp explain (oder cmdchamp x) ist das Tab-Panel als eigenständiges Werkzeug: handgeschriebene Seiten für ~300 Befehle plus die Shell-Syntax darum herum, offline, ohne Netzwerk, ohne Abhängigkeiten. Es nimmt einen in Anführungszeichen gesetzten Befehl oder die nackten Wörter entgegen und liest stdin, wenn keines von beidem gegeben ist — also erklärt history | tail -1 | cmdchamp x, was du gerade ausgeführt hast. Exit 0, wenn es den Befehl kennt, 1, wenn nicht.
cmdchamp autopsy liest deine Shell-Historie — $HISTFILE, dann ~/.bash_history, dann ~/.zsh_history, oder eine Datei, die du benennst, oder - für stdin — und ordnet sie den 30 Leveln zu: was du tatsächlich verwendest, Gewohnheiten, die sich lohnen abzulegen, mit deinem eigenen Zähler daneben (cat in grep, find in xargs ohne -print0, chmod 777, curl | sh), wie viele der Befehle, die das Spiel lehrt, du je ausgeführt hast, und das früheste Level mit einer Lücke. Es druckt nur Muster und Zähler — niemals eine Zeile, ein Fragment oder ein „Beispiel" aus deiner Historie, denn eine Historie enthält Tokens und Passwörter, die als Argumente getippt wurden. Nichts verlässt den Rechner, und es gibt kein Flag, um die Historie auszugeben.
Das Menü enthält Weiter, Neues Spiel, Szenarien, Herausforderung, Täglich, Übung, Statistiken, Optionen, Hilfe und Beenden auf festen Hotkeys 1-9 und 0. Eine Zeile, die du noch nicht freigeschaltet hast, wird ausgegraut statt ausgeblendet, sodass die Ziffer neben einer Beschriftung sich nie verschiebt, während du fortschreitest. j/k oder Pfeile bewegen, Enter wählt aus, und q (oder Esc) beendet. Der Spielplatz liegt oben in der Szenarien-Liste — es ist der einzige Eintrag, der nie gesperrt ist. Hilfe ist die Referenz, drei Seiten: jede Taste, was jeder Modus kostet und wobei er freischaltet, wie Bewertung und Verfall funktionieren, was die Statistik-Markierungen bedeuten, wie eine Antwort beurteilt wird, und jede Umgebungsvariable. Das Tutorial beim ersten Start ist auf der letzten Seite noch einen Tastendruck entfernt.
Täglich (nach ROOT) ist ein datumsgesäter Herausforderungslauf — der Seed steuert sowohl die Ketten als auch die randomisierte Sandbox, sodass alle überall byteidentische Fragen und Daten an diesem Tag erhalten, ein gewerteter Versuch, eine Serie aufeinanderfolgender Tage und eine kopierbare Punktzahl zum Teilen. Übung drillt jedes erreichte Level (angezeigt mit seinem Meisterschafts-%) mit Hinweisen und ohne Timer, ohne deinen Hauptfortschritt zu berühren. Spielplatz ist eine kompromittierte Box, die du mit einer echten Shell auseinandernimmst: Jemand kam hinein, nutzte sie und versuchte dann aufzuräumen, und jede Bewegung hinterließ eine Spur auf der Festplatte. Befehle laufen echt in der Sandbox und nichts wird bewertet. Bis zu 8 flag{...}-Tokens sind über den Baum verteilt (mehr schalten frei, wenn du Level räumst), map legt den Einbruch Phase für Phase dar und markiert, wo du bist, learn ist der 8-modulige Sicherheitslehrplan dahinter, hint geht bei jeder Frage eine Stufe tiefer, und Tab erklärt, was du getippt hast. Der Kopf nennt immer die Phase, die du jagst, und die Dateien, die sie hinterlassen hat, sodass du nie vor einer Eingabeaufforderung stehst, ohne zu wissen, wohin du einen Befehl richten sollst — und wenn sechs Befehle vergehen, ohne dass etwas gefunden wird, kommt der erste Hinweis zu dir.
Statistiken
Zwei Seiten. Die erste sind die dreißig Levelbalken — wie weit du gekommen bist. Die zweite ist dieselbe Meisterschaft, projiziert auf Befehle, schwächste zuerst, denn ein Level ist ein viel zu grober Eimer zum Drillen: Level 13 allein lehrt cp, mv, ln, chmod, ACLs, du, tar und diff, und ein roter Balken kann nicht sagen, welche davon du ständig verfehlst. Nur Level, die du erreicht hast, werden gezählt, und das Raster ist auf einen Bildschirm begrenzt — eine Arbeitsliste, die du scrollen musst, ist keine Arbeitsliste. Darunter werden die drei schwächsten Befehle mit dem Level benannt, das jeden lehrt, sodass die Seite dort endet, wo Übung beginnt — die Levelnamen sind thematisch, und xargs 0/4 ist eine Sackgasse, wenn du raten musst, dass Batch Ops der Ort ist, wo es lebt.
Level
| # | Name | Fokus |
|---|---|---|
| Grundlagen | ||
| 1 | Erste Schritte | pwd, ls, echo, cd, mkdir |
| 2 | Dateigrundlagen | cp, mv |
| 3 | Speichere deine Arbeit | >, >>, tee |
| 4 | Dateien lesen | cat, head, tail, less |
| 5 | Grundlegende Pipes | pipes, grep, wc, sort, uniq |
| 6 | Eingabe & Here-Strings | <, <<<, tr, cut, rev, bc |
| 7 | Fehlerbehandlung | 2>, 2>&1, &>, /dev/null |
| 8 | Logikgatter | &&, || |
| 9 | Variablen | $VAR, Zuweisung, Expansion |
| 10 | Spezielle Variablen | $$, $?, $!, $#, $@, $0 |
| 11 | Jobsteuerung | bg, fg, jobs, &, Ctrl+Z, nice, ulimit |
| 12 | Testbedingungen | -f, -d, -z, -n, -eq, -lt |
| 13 | Kern-Dateiwerkzeuge | cp, mv, ln, chmod, ACLs, du, tar, diff |
| 14 | Systemadministration | ping, df, free, ss, systemctl, ip, sysctl, lsblk, getent |
| 15 | Multiplexer | tmux: Sitzungen, Fenster, Panes |
| 16 | Textsuche | grep, ripgrep, regex |
| 17 | Dateisuche | find, fd, nach Name/Größe/Zeit/Typ |
| 18 | Datenverarbeitung | sort, uniq, cut, awk, tr, comm, join, numfmt |
| 19 | Strings & Arrays | Parameter-Expansion, Arrays |
| 20 | Kontrollfluss | if/else, Schleifen, case, Funktionen |
| 21 | Batch-Operationen | find -exec, xargs, sed -i, crontab |
| 22 | Erweiterte Regex | Lookahead, sed, awk |
| DevOps & Sicherheit | ||
| 23 | Git | Branches, Remotes, Rebasing, Stashing, bisect |
| 24 | Netzwerkwerkzeuge | tshark, curl, jq, ssh-Tunnel, openssl, SMB, ein Live-HTTP-Endpunkt |
| 25 | Netzwerkscanning | nmap, Diensterkennung, Skripte, ein Live-Ziel |
| 26 | WLAN & RF | aircrack-ng, netcat, tcpdump, drahtlose Aufklärung |
| 27 | Hash-Knacken | hashcat, john, hydra, Kodierung |
| 28 | Forensik | strings, readelf, binwalk, volatility, exiftool |
| 29 | Privilege-Escalation | SUID, Capabilities, GTFOBins, Enumeration |
| 30 | ROOT | Notfallwiederherstellung, chroot, Offline-Überleben |
Szenarien
Mehrstufige Sandbox-Herausforderungen — der Zustand bleibt zwischen den Schritten erhalten. Verfügbar über das Szenarien-Menü, sobald du den Freischalt-Boss räumst, das sie in Freischaltreihenfolge unter dem Spielplatz auflistet. Die Zahlen unten sind Szenario-IDs, die sich nie ändern.
| # | Name | Schaltet frei bei | Schritte |
|---|---|---|---|
| 1 | Berechtigungssperre | L13-Boss | 6 |
| 2 | Archivieren & Extrahieren | L13-Boss | 6 |
| 3 | Finde die Nadel | L16-Boss | 7 |
| 4 | Unordentliche CSV | L18-Boss | 4 |
| 5 | Der Vorfall | L18-Boss | 5 |
| 6 | Das kaputte Deployment | L21-Boss | 7 |
| 7 | Log-Notfall | L21-Boss | 5 |
| 8 | Konfigurations-OP | L21-Boss | 5 |
| 9 | Git-Rettung | L23-Boss | 6 |
| 10 | Batch-Refactoring | L21-Boss | 6 |
| 11 | Forensischer Durchlauf | L22-Boss | 6 |
| 12 | Wildcard-Backup | L29-Boss | 4 |
| 13 | PATH-Hijack | L29-Boss | 4 |
Szenarien 12–13 sind Exploit-Boxen: Du platzierst eine echte tar-Checkpoint-Injektion / einen PATH-Hijack und wirst anhand des Artefakts bewertet, das es erzeugt (eine Datei erscheint, ein Geheimnis wird exfiltriert). Die Wirkung des Exploits läuft echt in der Sandbox; die Privilegiengrenze ist simuliert — nichts läuft als echtes root.
Einstufungstest
Nach dem Tutorial beim ersten Start wirst du gefragt, ob du den Einstufungstest machen willst, um vorzuspringen. Akzeptierst du, laufen 2 Fragen pro Level, 30s pro Frage, keine Manpages. Verfehlst du eine, ist das dein Startlevel.
Easter Eggs
8 versteckte Erfolge. Der Statistik-Bildschirm zeigt, wie viele du gefunden hast.
Steuerung
| Taste | Aktion |
|---|---|
| Enter | Antwort einreichen |
| Tab | Manpage umschalten |
| Ctrl+d | Beenden (Sitzungszusammenfassung) |
| Esc | Vi-Normalmodus |
| ? | Alle Tastenbelegungen (Normalmodus) |
Daten
Fortschritt wird unter ${XDG_DATA_HOME:-~/.local/share}/cmdchamp/ gespeichert.
Lizenz
MIT