Volver a actualizaciones
Nuevo releaseJul 30, 2026

cmdchamp v1.2.15

entrenador de CLI bash — 30 niveles desde ls hasta escalada de privilegios

Compartir

cmdchamp

Entrenador de CLI en Bash: 30 niveles desde ls hasta escalada de privilegios.

demo

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.

cmdchamp autopsy lee tu historial de shell: $HISTFILE, luego ~/.bash_history, luego ~/.zsh_history, o un archivo que nombres, o - para stdin, y lo mapea a los 30 niveles: lo que realmente usas, hábitos que vale la pena dejar con tu propio recuento junto a cada uno (cat hacia grep, find hacia xargs sin -print0, chmod 777, curl | sh), cuántos de los comandos que enseña el juego has ejecutado alguna vez, y el nivel más temprano con una brecha. Imprime patrones y recuentos solamente: nunca una línea, un fragmento o un "ejemplo" de tu historial, porque un historial contiene tokens y contraseñas escritas como argumentos. Nada sale de la máquina, y no hay bandera para hacer que haga eco de tu historial.

El menú contiene continuar, nuevo juego, escenarios, desafío, diario, práctica, estadísticas, opciones, ayuda y salir en teclas rápidas fijas 1-9 y 0. Una fila que no has desbloqueado se atenúa en lugar de ocultarse, para que el dígito junto a una etiqueta nunca se mueva a medida que avanzas. j/k o las flechas mueven, Enter selecciona, y q (o Esc) sale. El patio de juegos vive en la parte superior de la lista de Escenarios: es la única entrada que nunca está bloqueada. Ayuda es la referencia, tres páginas: cada tecla, qué cuesta y desbloquea cada modo, cómo funcionan la puntuación y la decadencia, qué significan las marcas de Estadísticas, cómo se juzga una respuesta y cada variable de entorno. El tutorial de primera ejecución sigue a una tecla de distancia en la última página.

Diario (post-ROOT) es una ejecución de desafío sembrada por fecha: la semilla impulsa tanto las cadenas como el sandbox aleatorizado, por lo que todos en todas partes obtienen preguntas y datos byte-idénticos ese día, un intento puntuado, una racha de días consecutivos y una puntuación copiable que puedes compartir. Práctica ejercita cualquier nivel alcanzado (mostrado con su % de dominio) con pistas y sin temporizador, sin tocar tu progreso principal. Patio de juegos es una caja comprometida que desarmas con un shell real: alguien entró, la usó y luego intentó limpiar, y cada movimiento dejó una marca en el disco. Los comandos se ejecutan de verdad en el sandbox y nada se califica. Hasta 8 tokens flag{...} se plantan en el árbol (más se desbloquean a medida que superas niveles), map presenta la intrusión fase por fase y marca dónde estás, learn es el plan de estudios de seguridad de 8 módulos detrás de ella, hint profundiza un nivel cada vez que preguntas, y Tab explica lo que escribiste. El encabezado siempre nombra la fase que estás buscando y los archivos que dejó, para que nunca estés mirando un prompt sin saber a dónde apuntar un comando, y si pasan seis comandos sin encontrar nada, la primera pista llega a ti.

Estadísticas

Dos páginas. La primera son las treinta barras de nivel: cuánto has avanzado. La segunda es el mismo dominio proyectado sobre comandos, los más débiles primero, porque un nivel es un cubo demasiado grueso para practicar: solo el nivel 13 enseña cp, mv, ln, chmod, ACLs, du, tar y diff, y una barra roja no puede decir cuál de ellos sigues fallando. Solo se cuentan los niveles que has alcanzado, y la cuadrícula está limitada a una pantalla: una lista de trabajo que tienes que desplazar no es una lista de trabajo. Debajo, los tres comandos más débiles se nombran con el nivel que enseña cada uno, para que la página termine donde comienza Práctica: los nombres de nivel son temáticos, y xargs 0/4 es un callejón sin salida si tienes que adivinar que Batch Ops es donde vive.

Niveles

#NombreEnfoque
Fundamentos
1Primeros pasospwd, ls, echo, cd, mkdir
2Conceptos básicos de archivoscp, mv
3Guarda tu trabajo>, >>, tee
4Lectura de archivoscat, head, tail, less
5Pipes básicospipes, grep, wc, sort, uniq
6Entrada y here-strings<, <<<, tr, cut, rev, bc
7Manejo de errores2>, 2>&1, &>, /dev/null
8Compuertas lógicas&&, ||
9Variables$VAR, asignación, expansión
10Variables especiales$$, $?, $!, $#, $@, $0
11Control de trabajosbg, fg, jobs, &, Ctrl+Z, nice, ulimit
12Condiciones de prueba-f, -d, -z, -n, -eq, -lt
13Herramientas de archivos principalescp, mv, ln, chmod, ACLs, du, tar, diff
14Administración del sistemaping, df, free, ss, systemctl, ip, sysctl, lsblk, getent
15Multiplexorestmux: sesiones, ventanas, paneles
16Búsqueda de textogrep, ripgrep, regex
17Búsqueda de archivosfind, fd, por nombre/tamaño/tiempo/tipo
18Procesamiento de datossort, uniq, cut, awk, tr, comm, join, numfmt
19Cadenas y arraysexpansión de parámetros, arrays
20Flujo de controlif/else, bucles, case, funciones
21Operaciones por lotesfind -exec, xargs, sed -i, crontab
22Regex avanzadolookahead, sed, awk
DevOps y seguridad
23Gitramas, remotos, rebasing, stashing, bisect
24Herramientas de redtshark, curl, jq, túneles ssh, openssl, SMB, un endpoint HTTP en vivo
25Escaneo de rednmap, detección de servicios, scripts, un objetivo en vivo
26WiFi y RFaircrack-ng, netcat, tcpdump, reconocimiento inalámbrico
27Cracking de hasheshashcat, john, hydra, codificación
28Forensestrings, readelf, binwalk, volatility, exiftool
29Escalada de privilegiosSUID, capacidades, GTFOBins, enumeración
30ROOTrecuperación de emergencia, chroot, supervivencia sin conexión

Escenarios

Desafíos de sandbox de múltiples pasos: el estado persiste entre pasos. Disponibles desde el menú Escenarios una vez que superas el jefe de desbloqueo, que los lista en orden de desbloqueo bajo el patio de juegos. Los números a continuación son ids de escenario, que nunca cambian.

#NombreSe desbloquea enPasos
1Bloqueo de permisosJefe L136
2Archivar y extraerJefe L136
3Encuentra la agujaJefe L167
4CSV desordenadoJefe L184
5El incidenteJefe L185
6El despliegue rotoJefe L217
7Emergencia de registrosJefe L215
8Cirugía de configuraciónJefe L215
9Rescate de GitJefe L236
10Refactorización por lotesJefe L216
11Barrido forenseJefe L226
12Copia de seguridad con comodinesJefe L294
13Secuestro de PATHJefe L294

Los escenarios 12-13 son cajas de explotación: plantas una inyección real de tar-checkpoint / secuestro de PATH y se te califica según el artefacto que produce (aparece un archivo, un secreto se exfiltra). El efecto de la explotación se ejecuta de verdad en el sandbox; el límite de privilegios es simulado: nada se ejecuta como root real.

Prueba de nivel

Después del tutorial de primera ejecución, se te pregunta si quieres tomar la prueba de nivel para saltar hacia adelante. Acepta y ejecuta 2 preguntas por nivel, 30s cada una, sin páginas de manual. Fallas una y ese es tu nivel inicial.

Huevos de pascua

8 logros ocultos. La pantalla de Estadísticas muestra cuántos has encontrado.

Controles

TeclaAcción
EnterEnviar respuesta
TabAlternar página de manual
Ctrl+dSalir (resumen de sesión)
EscModo normal Vi
?Todas las combinaciones de teclas (modo normal)

Datos

El progreso se guarda en ${XDG_DATA_HOME:-~/.local/share}/cmdchamp/.

Licencia

MIT

Categorías