
cmdchamp v1.2.13
entraîneur de CLI bash — 30 niveaux de ls à l'escalade de privilèges
cmdchamp
Entraîneur CLI Bash — 30 niveaux de ls à l'élévation de privilèges.

Chaque question vous demande de saisir une vraie commande — obtenez un retour instantané, passez à la suite. Si vous vous trompez, il ne se contente pas de vous montrer la réponse : il montre ce que VOTRE commande a affiché par rapport à ce qui était attendu, et pour un pipeline, le nombre de lignes à chaque étape, afin que vous puissiez voir le point où cela a échoué. Pour les questions à correspondance textuelle, il nomme la réponse acceptée dont la vôtre était la plus proche et le drapeau exact que vous avez omis. Si vous réussissez par le chemin long, il vous montre le chemin court — cat f | grep -c X mérite un Shorter: grep -c X f, déclenché sur moins d'étapes de pipeline ainsi que moins de caractères, car le processus que vous avez économisé est la leçon. Beaucoup s'exécutent sur de vrais fichiers dans le bac à sable, et toutes acceptent plusieurs syntaxes valides (sort -u ou sort | uniq). Tab bascule la page de manuel lorsque vous avez besoin d'une référence — pages condensées pour chaque commande que la réponse exécute, plus la syntaxe shell sur laquelle elle s'appuie (x=$(cmd), ${var:-default}, ${path##*/}), de sorte que rien dans une question ne soit laissé à deviner. L'ordre est randomisé à chaque exécution pour que vous ne puissiez pas le mémoriser. La maîtrise suit ce que vous savez : répondez correctement deux fois à une question pour la maîtriser, manquez-la et elle est rétrogradée pour revenir plus tôt. Une série de 5 bonnes réponses déclenche le mode feu — une bannière qui s'affiche jusqu'à ce que vous manquiez une réponse.
Chaque niveau se termine par un tour de boss — pas de pages de manuel, minuteur de 30 s, 4/5 pour réussir. En cas d'échec, vous pouvez réessayer le boss immédiatement ou revenir à la pratique. Battez les 30 et le mode défi se débloque — le parcours final : des chaînes de commandes multiples qui composent les outils de tout le jeu en un seul pipeline. 30 s chacun, une seule vie, pas de pages de manuel, votre meilleur score est le record. Chaque chaîne est évaluée sur sa sortie réelle dans le bac à sable, donc n'importe quel pipeline correct réussit. Chaque exécution construit également un bac à sable randomisé frais — différentes adresses IP, compteurs, hôtes et données de journal — et puise dans plus de 50 modèles de chaînes avec des délimiteurs rotatifs, un ordre de tri et des agrégats, de sorte que l'IP la plus occupée, l'URL la plus populaire, le compteur le plus élevé ne soient jamais les mêmes deux fois. La première exécution comprend un court tutoriel et un test de placement qui vous permet de sauter les niveaux que vous connaissez déjà.
Avec bubblewrap, les commandes s'exécutent dans un véritable système de fichiers en bac à sable et sont évaluées sur leur sortie réelle. La boîte à l'intérieur est synthétique — utilisateur sandbox, hôte sandbox, son propre /etc/passwd et ligne de commande du noyau — de sorte que rien de ce que vous tapez ne peut afficher votre véritable nom d'utilisateur, nom de machine ou disposition de disque à l'écran, et id, whoami et hostname répondent la même chose partout. Cela atteint désormais aussi le niveau forensique : le niveau 28 vous remet un véritable échantillon binaire (samples/target.bin) et évalue si vous avez réellement extrait le drapeau, le domaine d'exfiltration et la clé API divulguée — de même pour les questions jq sur du vrai JSON. Le parcours final compose ces extractions en chaînes chronométrées. Les niveaux 24-25 s'exécutent désormais aussi pour de vrai : un petit service HTTP démarre sur localhost:8080 dans l'espace de noms réseau propre au bac à sable pendant que votre réponse s'exécute, avec trois ports en écoute, de sorte que curl, jq sur HTTP, ss et nmap sont évalués sur ce qu'ils ont réellement renvoyé. Rien n'est exposé à votre machine — l'espace de noms bloque toujours chaque connexion sortante, et le port est invisible de l'extérieur. Seuls les outils qui ne peuvent véritablement pas s'exécuter dans un bac à sable — wifi/RF, capture en direct et forensique mémoire/disque volumineuse — restent à correspondance textuelle. Les niveaux de recherche (16-17) acceptent à la fois la syntaxe rg/fd et grep/find. L'édition de ligne Vi est intégrée — mouvements, opérateurs, compteurs, registres, annulation et mode visuel (v/V, o pour permuter les extrémités), avec ? pour la carte complète.
Installation
Arch (AUR) :
paru -S cmdchamp # ou : yay -S cmdchamp
Partout (fichier unique) :
mkdir -p ~/.local/bin && curl -sL https://raw.githubusercontent.com/mellen9999/cmdchamp/main/cmdchamp -o ~/.local/bin/cmdchamp && chmod +x ~/.local/bin/cmdchamp
Ajoutez ~/.local/bin au PATH si nécessaire : echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
Ou clonez :
git clone https://github.com/mellen9999/cmdchamp.git
cd cmdchamp && make install
Prérequis : bash 4.4+, coreutils, awk
macOS : Livré avec bash 3.2 — installez bash 4.4+ d'abord : brew install bash
Optionnel : bubblewrap (bwrap) pour le mode bac à sable (Linux uniquement) — la plupart des distributions de bureau l'incluent. Sans lui, les réponses sont uniquement à correspondance textuelle
Optionnel : python3 — sert le service HTTP localhost du bac à sable, de sorte que les questions live api / live box des niveaux 24-25 sont évaluées sur une sortie réelle. Sans lui, ces questions retombent sur la correspondance textuelle ; rien d'autre ne change
Accessibilité : Respecte NO_COLOR et TERM=dumb. La disposition s'adapte à COLUMNS / tput cols. Les barres de maîtrise portent à la fois la couleur et un symbole ✓ / ~ / x — lisibles sans couleur.
Terminaux : Fonctionne sur de véritables terminaux série, pas seulement des émulateurs. cmdchamp sonde ce que le terminal peut réellement afficher et choisit parmi trois niveaux de rendu — unicode, dessin de lignes DEC ACS, ou ASCII pur — afin que les cadres restent intacts sur un VT100/VT220/VT320/VT420 ou Wyse. Sur un écran monochrome, les distinctions de couleur sont ré-encodées en gras/inverse. Forcez un niveau avec CMDCHAMP_ASCII=1 ou CMDCHAMP_UNICODE=1. ./test_terminals.sh le vérifie.
Utilisation
cmdchamp # Lance le menu du jeu
cmdchamp explain 'CMD' # Explique n'importe quelle commande - chaque drapeau, plus la syntaxe shell autour
cmdchamp autopsy # Lit votre propre historique shell et le mappe sur le programme
cmdchamp daily # Joue le parcours quotidien d'aujourd'hui (même exécution pour tout le monde)
cmdchamp daily 2026-02-16 # Rejoue l'exécution d'un jour précis (course contre un ami)
cmdchamp play # Bac à sable en jeu libre : tapez n'importe quelle commande, voyez-la s'exécuter
cmdchamp --no-sandbox # Désactive le bac à sable (correspondance textuelle uniquement)
cmdchamp reset # Efface toute la progression
cmdchamp test # Exécute les auto-tests
cmdchamp version # Affiche la version
cmdchamp help # Affiche l'aide
cmdchamp explain (ou cmdchamp x) est le panneau Tab en tant qu'outil autonome : pages écrites à la main pour ~300 commandes plus la syntaxe shell autour, hors ligne, sans réseau, sans dépendances. Il prend une commande entre guillemets ou les mots nus, et lit stdin quand aucun n'est donné — donc history | tail -1 | cmdchamp x explique ce que vous venez d'exécuter. Sortie 0 quand il connaît la commande, 1 quand il ne la connaît pas.
cmdchamp autopsy lit votre historique shell — $HISTFILE, puis ~/.bash_history, puis ~/.zsh_history, ou un fichier que vous nommez, ou - pour stdin — et le mappe sur les 30 niveaux : ce que vous utilisez réellement, les habitudes à abandonner avec votre propre compteur à côté de chacune (cat dans grep, find dans xargs sans -print0, chmod 777, curl | sh), combien des commandes que le jeu enseigne vous avez déjà exécutées, et le niveau le plus précoce avec une lacune. Il affiche uniquement les modèles et les compteurs — jamais une ligne, un fragment ou un « exemple » de votre historique, car un historique contient des jetons et des mots de passe saisis comme arguments. Rien ne quitte la machine, et il n'y a aucun drapeau pour lui faire réafficher votre historique.
Le menu contient continuer, nouvelle partie, scénarios, défi, quotidien, pratique, statistiques, options, aide et quitter sur des touches de raccourci fixes 1-9 et 0. Une ligne non débloquée est grisée plutôt que masquée, de sorte que le chiffre à côté d'un libellé ne bouge jamais au fil de votre progression. j/k ou les flèches déplacent, Entrée sélectionne, et q (ou Échap) quitte. Le terrain de jeu se trouve en haut de la liste des Scénarios — c'est l'entrée qui n'est jamais verrouillée. Aide est la référence, trois pages : chaque touche, ce que chaque mode coûte et débloque, comment fonctionnent le score et la décroissance, ce que signifient les marques des Statistiques, comment une réponse est jugée, et chaque variable d'environnement. Le tutoriel de première exécution est toujours à une pression de touche sur la dernière page.
Quotidien (post-ROOT) est un parcours chronométré à graine datée — la graine pilote à la fois les chaînes et le bac à sable randomisé, de sorte que tout le monde, partout, obtient des questions et des données octet-identiques ce jour-là, une tentative notée, une série de jours consécutifs, et un score copiable que vous pouvez partager. Pratique exerce tout niveau atteint (affiché avec son % de maîtrise) avec des indices et sans minuteur, sans toucher à votre progression principale. Terrain de jeu est une boîte compromise que vous démontez avec un vrai shell : quelqu'un est entré, l'a utilisée, puis a tenté de nettoyer, et chaque mouvement a laissé une trace sur le disque. Les commandes s'exécutent pour de vrai dans le bac à sable et rien n'est noté. Jusqu'à 8 jetons flag{...} sont plantés dans l'arborescence (plus se débloquent à mesure que vous terminez les niveaux), map expose l'intrusion phase par phase et marque où vous en êtes, learn est le syllabus de sécurité en 8 modules derrière, hint va un niveau plus profond à chaque demande, et Tab explique ce que vous avez tapé. L'en-tête nomme toujours la phase que vous traquez et les fichiers qu'elle a laissés derrière, de sorte que vous ne fixez jamais une invite sans savoir où pointer une commande — et si six commandes passent sans rien trouver, le premier indice vient à vous.
Statistiques
Deux pages. La première est les trente barres de niveaux — jusqu'où vous êtes allé. La seconde est la même maîtrise projetée sur les commandes, les plus faibles d'abord, car un niveau est un compartiment bien trop grossier pour s'entraîner : le niveau 13 seul enseigne cp, mv, ln, chmod, les ACL, du, tar et diff, et une barre rouge ne peut pas dire laquelle d'entre elles vous continuez à manquer. Seuls les niveaux que vous avez atteints sont comptés, et la grille est plafonnée à un écran — une liste de travail à faire défiler n'est pas une liste de travail. En dessous, les trois commandes les plus faibles sont nommées avec le niveau qui enseigne chacune, de sorte que la page se termine là où la Pratique commence — les noms de niveaux sont thématiques, et xargs 0/4 est une impasse si vous devez deviner que Batch Ops est l'endroit où cela se trouve.
Niveaux
| # | Nom | Focus |
|---|---|---|
| Fondamentaux | ||
| 1 | Premiers pas | pwd, ls, echo, cd, mkdir |
| 2 | Bases des fichiers | cp, mv |
| 3 | Sauvegardez votre travail | >, >>, tee |
| 4 | Lecture de fichiers | cat, head, tail, less |
| 5 | Pipelines de base | pipes, grep, wc, sort, uniq |
| 6 | Entrée et here-strings | <, <<<, tr, cut, rev, bc |
| 7 | Gestion des erreurs | 2>, 2>&1, &>, /dev/null |
| 8 | Portes logiques | &&, || |
| 9 | Variables | $VAR, affectation, expansion |
| 10 | Variables spéciales | $$, $?, $!, $#, $@, $0 |
| 11 | Contrôle des tâches | bg, fg, jobs, &, Ctrl+Z, nice, ulimit |
| 12 | Conditions de test | -f, -d, -z, -n, -eq, -lt |
| 13 | Outils de fichiers essentiels | cp, mv, ln, chmod, ACL, du, tar, diff |
| 14 | Administration système | ping, df, free, ss, systemctl, ip, sysctl, lsblk, getent |
| 15 | Multiplexeurs | tmux : sessions, fenêtres, volets |
| 16 | Recherche de texte | grep, ripgrep, regex |
| 17 | Recherche de fichiers | find, fd, par nom/taille/temps/type |
| 18 | Traitement de données | sort, uniq, cut, awk, tr, comm, join, numfmt |
| 19 | Chaînes et tableaux | expansion de paramètres, tableaux |
| 20 | Flux de contrôle | if/else, boucles, case, fonctions |
| 21 | Opérations par lots | find -exec, xargs, sed -i, crontab |
| 22 | Regex avancée | lookahead, sed, awk |
| DevOps et sécurité | ||
| 23 | Git | branches, dépôts distants, rebasing, stash, bisect |
| 24 | Outils réseau | tshark, curl, jq, tunnels ssh, openssl, SMB, un point de terminaison HTTP en direct |
| 25 | Analyse réseau | nmap, détection de services, scripts, une cible en direct |
| 26 | WiFi et RF | aircrack-ng, netcat, tcpdump, reconnaissance sans fil |
| 27 | Craquage de hachages | hashcat, john, hydra, encodage |
| 28 | Forensique | strings, readelf, binwalk, volatility, exiftool |
| 29 | Élévation de privilèges | SUID, capacités, GTFOBins, énumération |
| 30 | ROOT | récupération d'urgence, chroot, survie hors ligne |
Scénarios
Défis multi-étapes en bac à sable — l'état persiste entre les étapes. Disponibles depuis le menu Scénarios une fois que vous avez battu le boss de déblocage, qui les liste dans l'ordre de déblocage sous le terrain de jeu. Les nombres ci-dessous sont des identifiants de scénarios, qui ne changent jamais.
| # | Nom | Déblocage à | Étapes |
|---|---|---|---|
| 1 | Verrouillage de permissions | Boss L13 | 6 |
| 2 | Archive et extraction | Boss L13 | 6 |
| 3 | Trouver l'aiguille | Boss L16 | 7 |
| 4 | CSV désordonné | Boss L18 | 4 |
| 5 | L'incident | Boss L18 | 5 |
| 6 | Le déploiement cassé | Boss L21 | 7 |
| 7 | Urgence de journal | Boss L21 | 5 |
| 8 | Chirurgie de configuration | Boss L21 | 5 |
| 9 | Sauvetage Git | Boss L23 | 6 |
| 10 | Refactorisation par lots | Boss L21 | 6 |
| 11 | Balayage forensique | Boss L22 | 6 |
| 12 | Sauvegarde par joker | Boss L29 | 4 |
| 13 | Détournement de PATH | Boss L29 | 4 |
Les scénarios 12–13 sont des boîtes d'exploitation : vous plantez une véritable injection de point de contrôle tar / détournement de PATH et êtes évalué sur l'artefact qu'elle produit (un fichier apparaît, un secret est exfiltré). L'effet de l'exploit s'exécute pour de vrai dans le bac à sable ; la frontière de privilèges est simulée — rien ne s'exécute en véritable root.
Test de placement
Après le tutoriel de première exécution, on vous demande si vous souhaitez passer le test de placement pour sauter en avant. Acceptez et il exécute 2 questions par niveau, 30 s chacune, sans pages de manuel. Manquez-en une et c'est votre niveau de départ.
Œufs de Pâques
8 succès cachés. L'écran des Statistiques montre combien vous en avez trouvés.
Contrôles
| Touche | Action |
|---|---|
| Entrée | Soumettre la réponse |
| Tab | Basculer la page de manuel |
| Ctrl+d | Quitter (résumé de session) |
| Échap | Mode normal Vi |
| ? | Tous les raccourcis clavier (mode normal) |
Données
La progression est enregistrée dans ${XDG_DATA_HOME:-~/.local/share}/cmdchamp/.
Licence
MIT