
cmdchamp v1.3.0
entrenador de CLI bash — 30 niveles desde ls hasta escalada de privilegios
cmdchamp
Entrenador de CLI en Bash: 30 niveles desde ls hasta escalada de privilegios.

Cada pregunta te pide que escribas un comando real: obtén retroalimentación instantánea y continúa. Si fallas, no solo te muestra la respuesta: te muestra lo que TU comando imprimió frente a lo que se esperaba, y para un pipeline, el recuento de líneas en cada etapa, para que puedas ver el punto donde falló. Para preguntas con coincidencia de texto, nombra la respuesta aceptada a la que más se acercó la tuya y la bandera exacta que omitiste. Si lo resuelves por el camino largo, te muestra el camino corto: cat f | grep -c X obtiene un Shorter: grep -c X f, activado tanto por menos etapas de pipeline como por menos caracteres, porque el proceso que ahorraste es la lección. Muchas se ejecutan contra archivos reales en el sandbox, y todas aceptan múltiples sintaxis válidas (sort -u o sort | uniq). Tab alterna la página de manual cuando necesitas una referencia: páginas condensadas para cada comando que ejecuta la respuesta, además de la sintaxis de shell en la que se apoya (x=$(cmd), ${var:-default}, ${path##*/}), para que nada en una pregunta quede a tu suposición. El orden se aleatoriza en cada ejecución para que no puedas memorizarlo. El dominio rastrea lo que sabes: acierta una pregunta dos veces para dominarla, falla y se degrada para que vuelva antes. Una racha de 5 aciertos activa el modo fuego: un banner que se ejecuta hasta que fallas.
Cada nivel termina con una ronda de jefe: sin páginas de manual, temporizador de 30s, 4/5 para aprobar. Si fallas, puedes reintentar al jefe inmediatamente o volver a practicar. Supera los 30 y se desbloquea el modo desafío: el desafío final, cadenas de múltiples comandos que componen las herramientas de todo el juego en un solo pipeline. 30s cada una, una vida, sin páginas de manual, tu mejor puntuación es el récord. Cada cadena se califica según su salida real en el sandbox, por lo que cualquier pipeline correcto pasa. Cada ejecución también construye un sandbox aleatorizado nuevo: diferentes IPs, recuentos, hosts y datos de registro, y se extrae de más de 50 plantillas de cadenas con delimitadores rotativos, orden de clasificación y agregados, por lo que la IP más ocupada, la URL principal, el recuento más alto nunca son los mismos dos veces. La primera ejecución incluye un breve tutorial y una prueba de nivel que te permite saltar niveles que ya conoces.
Con bubblewrap, los comandos se ejecutan en un sistema de archivos real en sandbox y se califican según su salida real. La caja interior es sintética: usuario sandbox, host sandbox, su propio /etc/passwd y línea de comandos del kernel, por lo que nada de lo que escribas puede imprimir tu nombre de usuario real, nombre de máquina o diseño de disco en la pantalla, y id, whoami y hostname responden lo mismo en todas partes. Esto ahora también llega al nivel de forense: el nivel 28 te entrega un binario de muestra real (samples/target.bin) y califica si realmente extrajiste la bandera, el dominio de exfiltración y la clave API filtrada; lo mismo para las preguntas de jq sobre JSON real. El desafío final compone esas extracciones en cadenas cronometradas. Los niveles 24-25 ahora también se ejecutan de verdad: un pequeño servicio HTTP se inicia en localhost:8080 dentro del propio espacio de nombres de red del sandbox mientras tu respuesta se ejecuta, con tres puertos escuchando, por lo que curl, jq sobre HTTP, ss y nmap se califican según lo que realmente devolvieron. Nada se expone a tu máquina: el espacio de nombres aún bloquea cada conexión saliente, y el puerto es invisible desde fuera. Solo las herramientas que genuinamente no pueden ejecutarse en un sandbox (wifi/RF, captura en vivo y forense de memoria/disco grande) permanecen con coincidencia de texto. Los niveles de búsqueda (16-17) aceptan tanto sintaxis rg/fd como grep/find. La edición de línea Vi está integrada: movimientos, operadores, recuentos, registros, deshacer y modo visual (v/V, o para intercambiar extremos), con ? para el mapa completo.
Instalación
Arch (AUR):
paru -S cmdchamp # o: yay -S cmdchamp
En cualquier lugar (archivo único):
mkdir -p ~/.local/bin && curl -sL https://raw.githubusercontent.com/mellen9999/cmdchamp/main/cmdchamp -o ~/.local/bin/cmdchamp && chmod +x ~/.local/bin/cmdchamp
Agrega ~/.local/bin a PATH si es necesario: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
O clona:
git clone https://github.com/mellen9999/cmdchamp.git
cd cmdchamp && make install
Requiere: bash 4.4+, coreutils, awk
macOS: Incluye bash 3.2: instala bash 4.4+ primero: brew install bash
Opcional: bubblewrap (bwrap) para modo sandbox (solo Linux): la mayoría de las distribuciones de escritorio lo incluyen. Sin él, las respuestas solo se comparan por texto
Opcional: python3: sirve el servicio HTTP localhost del sandbox, por lo que las preguntas live api / live box de los niveles 24-25 se califican según la salida real. Sin él, esas preguntas vuelven a la coincidencia de texto; nada más cambia
Accesibilidad: Respeta NO_COLOR y TERM=dumb. El diseño se adapta a COLUMNS / tput cols. Las barras de dominio llevan tanto color como un símbolo ✓ / ~ / x: legibles sin color.
Terminales: Se ejecuta en terminales seriales reales, no solo emuladores. cmdchamp sondea lo que la terminal puede mostrar realmente y elige uno de tres niveles de renderizado: unicode, dibujo de líneas DEC ACS o ASCII puro, para que los marcos permanezcan intactos en una VT100/VT220/VT320/VT420 o Wyse. En una pantalla monocromática, las distinciones de color se recodifican como negrita/inverso. Fuerza un nivel con CMDCHAMP_ASCII=1 o CMDCHAMP_UNICODE=1. ./test_terminals.sh lo verifica.
Uso
cmdchamp # Lanza el menú del juego
cmdchamp explain 'CMD' # Explica cualquier comando: cada bandera, más la sintaxis de shell que lo rodea
cmdchamp autopsy # Lee tu propio historial de shell y lo mapea al plan de estudios
cmdchamp daily # Juega el desafío diario de hoy (la misma ejecución para todos)
cmdchamp daily 2026-02-16 # Reproduce la ejecución de un día específico (compite con un amigo)
cmdchamp play # Sandbox de juego libre: escribe cualquier comando, míralo ejecutarse
cmdchamp --no-sandbox # Desactiva el sandbox (solo coincidencia de texto)
cmdchamp reset # Borra todo el progreso
cmdchamp test # Ejecuta autopruebas
cmdchamp version # Imprime la versión
cmdchamp help # Muestra la ayuda
cmdchamp explain (o cmdchamp x) es el panel Tab como herramienta independiente: páginas escritas a mano para ~300 comandos más la sintaxis de shell que los rodea, sin conexión, sin red, sin dependencias. Toma un comando entre comillas o las palabras sueltas, y lee stdin cuando no se le da ninguna: así history | tail -1 | cmdchamp x explica lo que acabas de ejecutar. Sale con 0 cuando conoce el comando, 1 cuando no.