Voltar às atualizações
New releaseJul 24, 2026

cmdchamp v1.2.13

treinador de CLI bash — 30 níveis, do ls à escalada de privilégios

Compartilhar

cmdchamp

Treinador de CLI em Bash — 30 níveis de ls até escalonamento de privilégios.

demo

Cada pergunta pede que você digite um comando real — receba feedback instantâneo e siga em frente. Erre uma e ela não apenas mostra a resposta: mostra o que SEU comando imprimiu em comparação com o que era esperado e, para um pipeline, a contagem de linhas em cada estágio, para que você veja o ponto onde ele falhou. Para perguntas com correspondência de texto, ela nomeia a resposta aceita à qual a sua foi mais próxima e a flag exata que você deixou de fora. Acertou do jeito longo e ela mostra o jeito curto — cat f | grep -c X rende um Shorter: grep -c X f, acionado por menos estágios de pipeline além de menos caracteres, porque o processo que você economizou é a lição. Muitas rodam contra arquivos reais no sandbox, e todas aceitam múltiplas sintaxes válidas (sort -u ou sort | uniq). Tab alterna a página de manual quando você precisa de uma referência — páginas condensadas para cada comando que a resposta executa, além da sintaxe de shell na qual ela se apoia (x=$(cmd), ${var:-default}, ${path##*/}), para que nada em uma pergunta fique para você adivinhar. A ordem é aleatorizada a cada execução para que você não possa memorizá-la. Maestria acompanha o que você sabe: acerte uma pergunta duas vezes para dominá-la, erre e ela é rebaixada para voltar mais cedo. Uma sequência de 5 acertos ativa o modo fogo — um banner que roda até você errar.

Cada nível termina com uma rodada de chefe — sem páginas de manual, cronômetro de 30s, 4/5 para passar. Falhe e você pode tentar o chefe novamente imediatamente ou voltar para a prática. Vença todos os 30 e o modo desafio é desbloqueado — a provação final: cadeias de múltiplos comandos que compõem as ferramentas de todo o jogo em um único pipeline. 30s cada, uma vida, sem páginas de manual, sua melhor pontuação é o recorde. Cada cadeia é avaliada pela sua saída real no sandbox, então qualquer pipeline correto passa. Cada execução também constrói um sandbox aleatório novo — IPs, contagens, hosts e dados de log diferentes — e sorteia de 50+ modelos de cadeia com delimitadores rotativos, ordem de classificação e agregados, então o IP mais movimentado, a URL principal, a contagem mais alta nunca são os mesmos duas vezes. A primeira execução inclui um tutorial curto e um teste de nivelamento que permite pular níveis que você já conhece.

Com o bubblewrap, os comandos rodam em um sistema de arquivos real em sandbox e são avaliados pela sua saída real. A caixa interna é sintética — usuário sandbox, host sandbox, seu próprio /etc/passwd e linha de comando do kernel — então nada que você digitar pode imprimir seu nome de usuário real, nome da máquina ou layout de disco na tela, e id, whoami e hostname respondem o mesmo em qualquer lugar. Isso agora alcança também o nível de forense: o nível 28 entrega uma amostra binária real (samples/target.bin) e avalia se você realmente extraiu a flag, o domínio de exfiltração e a chave de API vazada dela — o mesmo para as perguntas de jq em JSON real. A provação final compõe essas extrações em cadeias cronometradas. Os níveis 24-25 agora também rodam de verdade: um pequeno serviço HTTP inicia em localhost:8080 dentro do namespace de rede próprio do sandbox enquanto sua resposta roda, com três portas escutando, então curl, jq sobre HTTP, ss e nmap são avaliados pelo que realmente retornaram. Nada é exposto à sua máquina — o namespace ainda bloqueia toda conexão de saída, e a porta é invisível de fora. Apenas as ferramentas que genuinamente não podem rodar em um sandbox — wifi/RF, captura ao vivo e forense de memória/disco grande — permanecem com correspondência de texto. Os níveis de busca (16-17) aceitam tanto a sintaxe de rg/fd quanto a de grep/find. Edição de linha Vi é integrada — movimentos, operadores, contagens, registradores, desfazer e modo visual (v/V, o para trocar extremidades), com ? para o mapa completo.

Instalação

Arch (AUR):

paru -S cmdchamp   # ou: yay -S cmdchamp

Em qualquer lugar (arquivo único):

mkdir -p ~/.local/bin && curl -sL https://raw.githubusercontent.com/mellen9999/cmdchamp/main/cmdchamp -o ~/.local/bin/cmdchamp && chmod +x ~/.local/bin/cmdchamp

Adicione ~/.local/bin ao PATH se necessário: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

Ou clone:

git clone https://github.com/mellen9999/cmdchamp.git
cd cmdchamp && make install

Requer: bash 4.4+, coreutils, awk

macOS: Vem com bash 3.2 — instale bash 4.4+ primeiro: brew install bash

Opcional: bubblewrap (bwrap) para o modo sandbox (somente Linux) — a maioria das distros desktop o inclui. Sem ele, as respostas são apenas com correspondência de texto

Opcional: python3 — serve o serviço HTTP localhost do sandbox, então as perguntas live api / live box dos níveis 24-25 são avaliadas pela saída real. Sem ele, essas perguntas voltam à correspondência de texto; nada mais muda

Acessibilidade: Respeita NO_COLOR e TERM=dumb. O layout se adapta a COLUMNS / tput cols. As barras de maestria carregam tanto cor quanto um símbolo / ~ / x — legíveis sem cor.

Terminais: Roda em terminais seriais reais, não apenas emuladores. cmdchamp testa o que o terminal pode realmente exibir e escolhe um de três níveis de renderização — unicode, desenho de linhas DEC ACS ou ASCII puro — para que os quadros permaneçam intactos em um VT100/VT220/VT320/VT420 ou Wyse. Em uma tela monocromática, as distinções de cor são recodificadas como negrito/reverso. Force um nível com CMDCHAMP_ASCII=1 ou CMDCHAMP_UNICODE=1. ./test_terminals.sh verifica isso.

Uso

cmdchamp                # Inicia o menu do jogo
cmdchamp explain 'CMD'  # Explica qualquer comando - cada flag, além da sintaxe de shell ao redor
cmdchamp autopsy        # Lê seu próprio histórico de shell e o mapeia no currículo
cmdchamp daily          # Joga a provação diária de hoje (mesma execução para todos)
cmdchamp daily 2026-02-16   # Repete a execução de um dia específico (corra com um amigo)
cmdchamp play           # Sandbox de jogo livre: digite qualquer comando, veja-o rodar
cmdchamp --no-sandbox   # Desativa o sandbox (apenas correspondência de texto)
cmdchamp reset          # Limpa todo o progresso
cmdchamp test           # Executa autotestes
cmdchamp version        # Imprime a versão
cmdchamp help           # Mostra a ajuda

cmdchamp explain (ou cmdchamp x) é o painel Tab como ferramenta autônoma: páginas escritas à mão para ~300 comandos mais a sintaxe de shell ao redor, offline, sem rede, sem dependências. Ele aceita um comando entre aspas ou as palavras simples, e lê stdin quando nenhuma é fornecida — então history | tail -1 | cmdchamp x explica o que você acabou de executar. Sai com 0 quando conhece o comando, 1 quando não conhece.

cmdchamp autopsy lê seu histórico de shell — $HISTFILE, depois ~/.bash_history, depois ~/.zsh_history, ou um arquivo que você nomear, ou - para stdin — e o mapeia nos 30 níveis: o que você realmente usa, hábitos que valem abandonar com sua própria contagem ao lado de cada um (cat em grep, find em xargs sem -print0, chmod 777, curl | sh), quantos dos comandos que o jogo ensina você já executou, e o nível mais antigo com uma lacuna. Ele imprime apenas padrões e contagens — nunca uma linha, um fragmento ou um "exemplo" do seu histórico, porque um histórico contém tokens e senhas digitados como argumentos. Nada sai da máquina, e não há flag para fazê-lo ecoar seu histórico.

O menu contém continuar, novo jogo, cenários, desafio, diário, prática, estatísticas, opções, ajuda e sair em teclas de atalho fixas 1-9 e 0. Uma linha que você não desbloqueou fica acinzentada em vez de oculta, então o dígito ao lado de um rótulo nunca se move conforme você progride. j/k ou setas movem, Enter seleciona, e q (ou Esc) sai. O playground fica no topo da lista de Cenários — é a única entrada que nunca é bloqueada. Ajuda é a referência, três páginas: cada tecla, o que cada modo custa e desbloqueia, como pontuação e decaimento funcionam, o que as marcas de Estatísticas significam, como uma resposta é julgada e cada variável de ambiente. O tutorial da primeira execução ainda está a um toque de tecla na última página.

Diário (pós-ROOT) é uma provação com semente de data — a semente dirige tanto as cadeias quanto o sandbox aleatório, então todos em qualquer lugar recebem perguntas e dados byte-idênticos naquele dia, uma tentativa pontuada, uma sequência de dias consecutivos e uma pontuação copiável que você pode compartilhar. Prática treina qualquer nível alcançado (mostrado com sua % de maestria) com dicas e sem cronômetro, sem tocar no seu progresso principal. Playground é uma máquina comprometida que você desmonta com um shell real: alguém entrou, usou-a e depois tentou limpar, e cada movimento deixou uma marca no disco. Comandos rodam de verdade no sandbox e nada é avaliado. Até 8 tokens flag{...} são plantados pela árvore (mais desbloqueiam conforme você limpa níveis), map apresenta a invasão fase por fase e marca onde você está, learn é o programa de segurança de 8 módulos por trás dela, hint aprofunda um nível a cada vez que você pede, e Tab explica o que você digitou. O cabeçalho sempre nomeia a fase que você está caçando e os arquivos que ela deixou para trás, então você nunca fica olhando para um prompt sem saber para onde apontar um comando — e se seis comandos passarem sem nada encontrado, a primeira dica vem até você.

Estatísticas

Duas páginas. A primeira são as trinta barras de nível — o quanto você avançou. A segunda é a mesma maestria projetada em comandos, dos mais fracos primeiro, porque um nível é um balde grosso demais para treinar: só o nível 13 ensina cp, mv, ln, chmod, ACLs, du, tar e diff, e uma barra vermelha não pode dizer qual deles você continua errando. Apenas níveis que você alcançou são contados, e a grade é limitada a uma tela — uma lista de trabalho que exige rolagem não é uma lista de trabalho. Abaixo dela, os três comandos mais fracos são nomeados com o nível que ensina cada um, então a página termina onde a Prática começa — os nomes dos níveis são temáticos, e xargs 0/4 é um beco sem saída se você tiver que adivinhar que Batch Ops é onde ele mora.

Níveis

#NomeFoco
Fundamentos
1Primeiros Passospwd, ls, echo, cd, mkdir
2Básico de Arquivoscp, mv
3Salve Seu Trabalho>, >>, tee
4Lendo Arquivoscat, head, tail, less
5Pipes Básicospipes, grep, wc, sort, uniq
6Entrada e Here-Strings<, <<<, tr, cut, rev, bc
7Tratamento de Erros2>, 2>&1, &>, /dev/null
8Portas Lógicas&&, ||
9Variáveis$VAR, atribuição, expansão
10Variáveis Especiais$$, $?, $!, $#, $@, $0
11Controle de Jobsbg, fg, jobs, &, Ctrl+Z, nice, ulimit
12Condições de Teste-f, -d, -z, -n, -eq, -lt
13Ferramentas Centrais de Arquivocp, mv, ln, chmod, ACLs, du, tar, diff
14Administração do Sistemaping, df, free, ss, systemctl, ip, sysctl, lsblk, getent
15Multiplexadorestmux: sessões, janelas, painéis
16Busca de Textogrep, ripgrep, regex
17Localização de Arquivosfind, fd, por nome/tamanho/tempo/tipo
18Processamento de Dadossort, uniq, cut, awk, tr, comm, join, numfmt
19Strings e Arraysexpansão de parâmetros, arrays
20Fluxo de Controleif/else, loops, case, funções
21Operações em Lotefind -exec, xargs, sed -i, crontab
22Regex Avançadolookahead, sed, awk
DevOps e Segurança
23Gitbranches, remotes, rebasing, stashing, bisect
24Ferramentas de Redetshark, curl, jq, túneis ssh, openssl, SMB, um endpoint HTTP ao vivo
25Varredura de Redenmap, detecção de serviços, scripts, um alvo ao vivo
26WiFi e RFaircrack-ng, netcat, tcpdump, reconhecimento sem fio
27Quebra de Hasheshashcat, john, hydra, codificação
28Forensestrings, readelf, binwalk, volatility, exiftool
29Escalonamento de PrivilégiosSUID, capabilities, GTFOBins, enumeração
30ROOTrecuperação de emergência, chroot, sobrevivência offline

Cenários

Desafios de sandbox em múltiplas etapas — o estado persiste entre etapas. Disponível no menu Cenários assim que você limpar o chefe de desbloqueio, que os lista em ordem de desbloqueio sob o playground. Os números abaixo são ids de cenário, que nunca mudam.

#NomeDesbloqueia emEtapas
1Bloqueio de PermissãoChefe L136
2Arquivar e ExtrairChefe L136
3Encontre a AgulhaChefe L167
4CSV BagunçadoChefe L184
5O IncidenteChefe L185
6O Deploy QuebradoChefe L217
7Emergência de LogChefe L215
8Cirurgia de ConfigChefe L215
9Resgate GitChefe L236
10Refatoração em LoteChefe L216
11Varredura ForenseChefe L226
12Backup com CuringasChefe L294
13Sequestro de PATHChefe L294

Os cenários 12–13 são caixas de exploração: você planta uma injeção real de tar-checkpoint / sequestro de PATH e é avaliado pelo artefato que ela produz (um arquivo aparece, um segredo é exfiltrado). O efeito da exploração roda de verdade no sandbox; a fronteira de privilégio é simulada — nada roda como root real.

Teste de nivelamento

Após o tutorial da primeira execução, você é perguntado se quer fazer o teste de nivelamento para pular adiante. Aceite e ele roda 2 perguntas por nível, 30s cada, sem páginas de manual. Erre uma e esse é seu nível inicial.

Easter eggs

8 conquistas ocultas. A tela de Estatísticas mostra quantas você encontrou.

Controles

TeclaAção
EnterEnviar resposta
TabAlternar página de manual
Ctrl+dSair (resumo da sessão)
EscModo normal Vi
?Todos os atalhos de teclado (modo normal)

Dados

O progresso é salvo em ${XDG_DATA_HOME:-~/.local/share}/cmdchamp/.

Licença

MIT

Categorias