
bash CLI प्रशिक्षक — ls से privilege escalation तक 30 स्तर
# cmdchamp
Bash CLI प्रशिक्षक — `ls` से लेकर privilege escalation तक 30 स्तर।

हर प्रश्न आपसे एक वास्तविक कमांड टाइप करने को कहता है — तुरंत फीडबैक पाएं, आगे बढ़ें। एक भी गलत होने पर यह सिर्फ उत्तर नहीं दिखाता: यह दिखाता है कि आपके कमांड ने क्या आउटपुट दिया बनाम जो अपेक्षित था, और पाइपलाइन के लिए हर चरण पर लाइन गिनती, ताकि आप देख सकें कि यह कहां विफल हुआ। टेक्स्ट-मैच वाले प्रश्नों के लिए यह बताता है कि स्वीकृत उत्तर में से आपका उत्तर किसके सबसे करीब था और वह सटीक फ्लैग जो आपने छोड़ दिया। लंबे रास्ते से सही करने पर यह छोटा रास्ता दिखाता है — `cat f | grep -c X` पर `Shorter: grep -c X f` मिलता है, जो कम पाइपलाइन चरणों और कम अक्षरों दोनों पर ट्रिगर होता है, क्योंकि बचाई गई प्रक्रिया ही सबक है। कई प्रश्न सैंडबॉक्स में वास्तविक फाइलों पर चलते हैं, और सभी कई मान्य सिंटैक्स स्वीकार करते हैं (`sort -u` या `sort | uniq`)। संदर्भ की आवश्यकता होने पर Tab manpage टॉगल करता है — उत्तर चलाने वाले हर कमांड के लिए संक्षिप्त पेज, साथ ही वह शेल सिंटैक्स जिस पर वह निर्भर करता है (`x=$(cmd)`, `${var:-default}`, `${path##*/}`), ताकि प्रश्न में कुछ भी अनुमान लगाने के लिए न छूटे। क्रम हर बार यादृच्छिक होता है ताकि आप उसे रट न सकें। Mastery ट्रैक करता है कि आप क्या जानते हैं: किसी प्रश्न को दो बार सही करने पर वह mastered हो जाता है, गलत करने पर वह demote हो जाता है ताकि वह जल्दी वापस आए। 5-उत्तरों की लगातार श्रृंखला fire mode ट्रिगर करती है — एक बैनर जो तब तक चलता है जब तक आप गलत न करें।
हर स्तर boss round के साथ समाप्त होता है — कोई manpage नहीं, 30 सेकंड का टाइमर, पास होने के लिए 4/5। विफल होने पर आप boss को तुरंत दोबारा आज़मा सकते हैं या अभ्यास पर वापस जा सकते हैं। सभी 30 हराएं और **challenge mode** अनलॉक होता है — अंतिम गेम की कठिन परीक्षा: मल्टी-कमांड चेन जो पूरे गेम के टूल्स को एक पाइपलाइन में जोड़ती हैं। 30 सेकंड प्रत्येक, एक जीवन, कोई manpage नहीं, आपका सर्वश्रेष्ठ स्कोर रिकॉर्ड है। हर चेन को सैंडबॉक्स में उसके वास्तविक आउटपुट पर ग्रेड किया जाता है, इसलिए *कोई भी* सही पाइपलाइन पास होती है। हर रन एक **ताज़ा यादृच्छिक सैंडबॉक्स** भी बनाता है — अलग IP, गिनती, होस्ट और लॉग डेटा — और 50+ चेन टेम्पलेट्स से घूमते डिलीमीटर, सॉर्ट ऑर्डर और एग्रीगेट्स के साथ चुनता है, ताकि सबसे व्यस्त IP, शीर्ष URL, उच्चतम गिनती कभी दो बार समान न हो। पहले रन में एक छोटा ट्यूटोरियल और एक placement test शामिल है जो आपको उन स्तरों को छोड़ने देता है जो आप पहले से जानते हैं।
[bubblewrap](https://github.com/containers/bubblewrap) के साथ, कमांड एक वास्तविक सैंडबॉक्स्ड फाइलसिस्टम में चलते हैं और उनके वास्तविक आउटपुट पर ग्रेड किए जाते हैं। अंदर का बॉक्स सिंथेटिक है — उपयोगकर्ता `sandbox`, होस्ट `sandbox`, अपना स्वयं का `/etc/passwd` और कर्नेल कमांड लाइन — ताकि आपके द्वारा टाइप की गई कोई भी चीज़ आपका वास्तविक उपयोगकर्ता नाम, मशीन नाम या डिस्क लेआउट स्क्रीन पर प्रिंट न कर सके, और `id`, `whoami` और `hostname` हर जगह समान उत्तर देते हैं। यह अब forensics टियर तक भी पहुंचता है: स्तर 28 आपको एक वास्तविक नमूना बाइनरी (`samples/target.bin`) देता है और ग्रेड करता है कि क्या आपने वास्तव में उसमें से फ्लैग, exfil डोमेन और लीक हुई API कुंजी निकाली — वही `jq` प्रश्नों के लिए वास्तविक JSON पर। अंतिम गेम की कठिन परीक्षा उन निष्कर्षणों को समयबद्ध चेन में जोड़ती है। स्तर 24-25 अब वास्तव में भी चलते हैं: एक छोटी HTTP सेवा सैंडबॉक्स के अपने नेटवर्क नेमस्पेस के अंदर `localhost:8080` पर शुरू होती है जबकि आपका उत्तर चलता है, तीन पोर्ट सुनते हुए, ताकि `curl`, HTTP पर `jq`, `ss` और `nmap` उस पर ग्रेड किए जाएं जो उन्होंने वास्तव में लौटाया। आपकी मशीन को कुछ भी उजागर नहीं होता — नेमस्पेस अभी भी हर आउटगोइंग कनेक्शन को रोकता है, और पोर्ट बाहर से अदृश्य है। केवल वे टूल जो वास्तव में सैंडबॉक्स में नहीं चल सकते — wifi/RF, लाइव कैप्चर और बड़ी मेमोरी/डिस्क forensics — टेक्स्ट-मैच रहते हैं। खोज स्तर (16-17) `rg`/`fd` और `grep`/`find` दोनों सिंटैक्स स्वीकार करते हैं। Vi लाइन एडिटिंग अंतर्निहित है — motions, operators, counts, registers, undo और visual mode (`v`/`V`, सिरों को बदलने के लिए `o`), पूर्ण मैप के लिए `?` के साथ।
## इंस्टॉल
**Arch (AUR):**
```bash
paru -S cmdchamp # या: yay -S cmdchamp
```
**कहीं भी (एकल फ़ाइल):**
```bash
mkdir -p ~/.local/bin && curl -sL https://raw.githubusercontent.com/mellen9999/cmdchamp/main/cmdchamp -o ~/.local/bin/cmdchamp && chmod +x ~/.local/bin/cmdchamp
```
आवश्यकता होने पर PATH में `~/.local/bin` जोड़ें: `echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc`
**या क्लोन करें:**
```bash
git clone https://github.com/mellen9999/cmdchamp.git
cd cmdchamp && make install
```
**आवश्यकताएं:** bash 4.4+, coreutils, awk
**macOS:** bash 3.2 के साथ आता है — पहले bash 4.4+ इंस्टॉल करें: `brew install bash`
**वैकल्पिक:** [bubblewrap](https://github.com/containers/bubblewrap) (`bwrap`) सैंडबॉक्स मोड के लिए (केवल Linux) — अधिकांश डेस्कटॉप डिस्ट्रो इसे शामिल करते हैं। इसके बिना, उत्तर केवल टेक्स्ट-मैच होते हैं
**वैकल्पिक:** `python3` — सैंडबॉक्स की localhost HTTP सेवा प्रदान करता है, ताकि स्तर 24-25 पर `live api` / `live box` प्रश्न वास्तविक आउटपुट पर ग्रेड किए जाएं। इसके बिना वे प्रश्न टेक्स्ट-मैचिंग पर वापस आ जाते हैं; बाकी कुछ भी नहीं बदलता
**पहुंच:** `NO_COLOR` और `TERM=dumb` का सम्मान करता है। लेआउट `COLUMNS` / `tput cols` के अनुकूल होता है। Mastery बार रंग और `✓` / `~` / `x` प्रतीक दोनों रखते हैं — बिना रंग के पठनीय।
**टर्मिनल:** वास्तविक सीरियल टर्मिनलों पर चलता है, सिर्फ इम्यूलेटर पर नहीं। cmdchamp जांचता है कि टर्मिनल वास्तव में क्या प्रदर्शित कर सकता है और तीन रेंडर टियर में से एक चुनता है — unicode, DEC ACS लाइन-ड्रॉइंग, या शुद्ध ASCII — ताकि फ्रेम VT100/VT220/VT320/VT420 या Wyse पर बरकरार रहें। मोनोक्रोम स्क्रीन पर, रंग भेद bold/reverse के रूप में पुनः एन्कोड किए जाते हैं। `CMDCHAMP_ASCII=1` या `CMDCHAMP_UNICODE=1` के साथ एक टियर बल करें। `./test_terminals.sh` इसे सत्यापित करता है।
## उपयोग
```bash
cmdchamp # गेम मेनू लॉन्च करें
cmdchamp explain 'CMD' # किसी भी कमांड की व्याख्या करें - हर फ्लैग, साथ ही उसके आसपास का शेल सिंटैक्स
cmdchamp autopsy # अपना स्वयं का शेल इतिहास पढ़ें और उसे पाठ्यक्रम पर मैप करें
cmdchamp daily # आज का दैनिक गौंटलेट खेलें (सभी के लिए समान रन)
cmdchamp daily 2026-02-16 # किसी विशिष्ट दिन का रन दोबारा चलाएं (दोस्त से रेस करें)
cmdchamp play # फ्री-प्ले सैंडबॉक्स: कोई भी कमांड टाइप करें, उसे चलते देखें
cmdchamp --no-sandbox # सैंडबॉक्स अक्षम करें (केवल टेक्स्ट-मैच)
cmdchamp reset # सभी प्रगति साफ़ करें
cmdchamp test # स्व-परीक्षण चलाएं
cmdchamp version # संस्करण प्रिंट करें
cmdchamp help # सहायता दिखाएं
```
`cmdchamp explain` (या `cmdchamp x`) Tab पैनल है एक स्टैंडअलोन टूल के रूप में: ~300 कमांड के लिए हाथ से लिखे पेज साथ ही उनके आसपास का शेल सिंटैक्स, ऑफ़लाइन, कोई नेटवर्क नहीं, कोई निर्भरता नहीं। यह एक उद्धृत कमांड या बेयर शब्द लेता है, और जब दोनों में से कोई नहीं दिया जाता तो stdin पढ़ता है — ताकि `history | tail -1 | cmdchamp x` समझाए कि आपने अभी क्या चलाया। Exit 0 जब यह कमांड जानता है, 1 जब नहीं जानता।
`cmdchamp autopsy` आपका शेल इतिहास पढ़ता है — `$HISTFILE`, फिर `~/.bash_history`, फिर `~/.zsh_history`, या एक फ़ाइल जिसे आप नाम देते हैं, या stdin के लिए `-` — और उसे 30 स्तरों पर मैप करता है: आप वास्तव में किस तक पहुंचते हैं, छोड़ने लायक आदतें आपकी अपनी गिनती के साथ प्रत्येक के बगल में (`cat` में `grep`, `-print0` के बिना `xargs` में `find`, `chmod 777`, `curl | sh`), गेम द्वारा सिखाए गए कमांड में से आपने कितने कभी चलाए हैं, और सबसे पहला स्तर जिसमें अंतर है। यह **केवल पैटर्न और गिनती प्रिंट करता है** — आपके इतिहास से कभी कोई पंक्ति, टुकड़ा या "उदाहरण" नहीं, क्योंकि इतिहास में तर्क के रूप में टाइप किए गए टोकन और पासवर्ड होते हैं। कुछ भी मशीन से बाहर नहीं जाता, और आपके इतिहास को प्रतिध्वनित करने के लिए कोई फ्लैग नहीं है।
मेनू में continue, new game, scenarios, challenge, daily, practice, stats, options, help और quit निश्चित हॉटकी `1`-`9` और `0` पर हैं। एक पंक्ति जिसे आपने अनलॉक नहीं किया है वह छिपी नहीं बल्कि धुंधली होती है, ताकि लेबल के बगल का अंक आपकी प्रगति के साथ कभी न हिले। `j`/`k` या तीर चलते हैं, Enter चुनता है, और `q` (या Esc) बाहर निकलता है। प्लेग्राउंड **Scenarios** सूची के शीर्ष पर रहता है — यह एकमात्र प्रविष्टि है जो कभी लॉक नहीं होती। **Help** संदर्भ है, तीन पेज: हर कुंजी, प्रत्येक मोड की लागत और अनलॉक बिंदु, स्कोरिंग और क्षय कैसे काम करते हैं, Stats चिह्नों का क्या अर्थ है, उत्तर का मूल्यांकन कैसे होता है, और हर पर्यावरण चर। पहली बार चलाने का ट्यूटोरियल अभी भी अंतिम पेज पर एक कीप्रेस दूर है।
**Daily** (post-ROOT) एक दिनांक-बीजित गौंटलेट रन है — बीज चेन और यादृच्छिक सैंडबॉक्स दोनों चलाता है, ताकि हर जगह सभी को उस दिन बाइट-समान प्रश्न *और* डेटा मिले, एक स्कोर किया गया प्रयास, एक लगातार-दिन की श्रृंखला, और एक कॉपी करने योग्य स्कोर जिसे आप साझा कर सकते हैं। **Practice** किसी भी पहुंचे स्तर (उसके mastery % के साथ दिखाया गया) को संकेतों और बिना टाइमर के अभ्यास कराता है, आपकी मुख्य प्रगति को छुए बिना। **Playground** एक समझौता किया गया बॉक्स है जिसे आप एक वास्तविक शेल से अलग करते हैं: कोई अंदर आया, उसका उपयोग किया, फिर सफाई करने की कोशिश की, और हर कदम ने डिस्क पर एक निशान छोड़ा। कमांड वास्तव में सैंडबॉक्स में चलते हैं और कुछ भी ग्रेड नहीं होता। पेड़ में 8 तक `flag{...}` टोकन लगाए गए हैं (स्तर साफ़ करने पर अधिक अनलॉक होते हैं), `map` घुसपैठ को चरण दर चरण बिछाता है और चिह्नित करता है कि आप कहां हैं, `learn` इसके पीछे 8-मॉड्यूल सुरक्षा पाठ्यक्रम है, `hint` हर बार पूछने पर एक टियर गहरा जाता है, और Tab समझाता है कि आपने क्या टाइप किया। हेडर हमेशा उस चरण का नाम बताता है जिसे आप खोज रहे हैं और जो फाइलें उसने छोड़ी हैं, ताकि आप कभी एक प्रॉम्प्ट पर घूरते न रहें जहां कमांड इंगित करने के लिए कहीं न हो — और यदि छह कमांड बिना कुछ मिले बीत जाएं, तो पहला संकेत आपके पास आता है।
## स्टैट्स
दो पेज। पहला तीस स्तर बार है — आप कितनी दूर आए हैं। दूसरा वही mastery **कमांड** पर प्रक्षेपित है, सबसे कमजोर पहले, क्योंकि एक स्तर ड्रिल करने के लिए बहुत मोटा बाल्टी है: स्तर 13 अकेले `cp`, `mv`, `ln`, `chmod`, ACLs, `du`, `tar` और `diff` सिखाता है, और एक लाल बार यह नहीं बता सकता कि आप उनमें से किसे बार-बार गलत कर रहे हैं। केवल वे स्तर गिने जाते हैं जिन तक आप पहुंचे हैं, और ग्रिड एक स्क्रीन तक सीमित है — एक कार्यसूची जिसे स्क्रॉल करना पड़े वह कार्यसूची नहीं है। इसके नीचे, तीन सबसे कमजोर कमांड उस स्तर के साथ नामित हैं जो प्रत्येक को सिखाता है, ताकि पेज वहीं समाप्त हो जहां Practice शुरू होता है — स्तर के नाम विषयगत हैं, और `xargs 0/4` एक मृत अंत है यदि आपको अनुमान लगाना पड़े कि Batch Ops वहीं रहता है।
## स्तर
| # | नाम | फोकस |
|---|------|-------|
| | **मूल बातें** | |
| 1 | पहला कदम | pwd, ls, echo, cd, mkdir |
| 2 | फ़ाइल मूल बातें | cp, mv |
| 3 | अपना काम सहेजें | >, >>, tee |
| 4 | फ़ाइलें पढ़ना | cat, head, tail, less |
| 5 | बुनियादी पाइप | pipes, grep, wc, sort, uniq |
| 6 | इनपुट और Here-Strings | <, <<<, tr, cut, rev, bc |
| 7 | त्रुटि प्रबंधन | 2>, 2>&1, &>, /dev/null |
| 8 | लॉजिक गेट्स | &&, \|\| |
| 9 | चर | `$VAR`, असाइनमेंट, विस्तार |
| 10 | विशेष चर | `$$`, `$?`, `$!`, `$#`, `$@`, `$0` |
| 11 | जॉब नियंत्रण | bg, fg, jobs, &, Ctrl+Z, nice, ulimit |
| 12 | परीक्षण शर्तें | -f, -d, -z, -n, -eq, -lt |
| 13 | कोर फ़ाइल टूल | cp, mv, ln, chmod, ACLs, du, tar, diff |
| 14 | सिस्टम प्रशासन | ping, df, free, ss, systemctl, ip, sysctl, lsblk, getent |
| 15 | मल्टीप्लेक्सर | tmux: सत्र, विंडो, पैन |
| 16 | टेक्स्ट खोज | grep, ripgrep, regex |
| 17 | फ़ाइल खोज | find, fd, नाम/आकार/समय/प्रकार से |
| 18 | डेटा प्रोसेसिंग | sort, uniq, cut, awk, tr, comm, join, numfmt |
| 19 | स्ट्रिंग और ऐरे | पैरामीटर विस्तार, ऐरे |
| 20 | नियंत्रण प्रवाह | if/else, लूप, case, फ़ंक्शन |
| 21 | बैच ऑप्स | find -exec, xargs, sed -i, crontab |
| 22 | उन्नत regex | lookahead, sed, awk |
| | **DevOps और सुरक्षा** | |
| 23 | Git | शाखाएं, रिमोट, rebasing, stashing, bisect |
| 24 | नेटवर्क टूल | tshark, curl, jq, ssh टनल, openssl, SMB, एक लाइव HTTP एंडपॉइंट |
| 25 | नेटवर्क स्कैनिंग | nmap, सेवा पहचान, स्क्रिप्ट, एक लाइव लक्ष्य |
| 26 | WiFi और RF | aircrack-ng, netcat, tcpdump, वायरलेस recon |
| 27 | हैश क्रैकिंग | hashcat, john, hydra, एन्कोडिंग |
| 28 | फोरेंसिक | strings, readelf, binwalk, volatility, exiftool |
| 29 | Privilege Escalation | SUID, capabilities, GTFOBins, enumeration |
| 30 | ROOT | आपातकालीन पुनर्प्राप्ति, chroot, ऑफ़लाइन उत्तरजीविता |
## परिदृश्य
मल्टी-स्टेप सैंडबॉक्स चुनौतियां — राज्य चरणों के बीच बना रहता है। **Scenarios** मेनू से उपलब्ध एक बार जब आप अनलॉक boss को साफ़ करते हैं, जो उन्हें प्लेग्राउंड के नीचे अनलॉक क्रम में सूचीबद्ध करता है। नीचे की संख्याएं परिदृश्य आईडी हैं, जो कभी नहीं बदलतीं।
| # | नाम | अनलॉक होता है | चरण |
|---|------|-----------|-------|
| 1 | अनुमति लॉकआउट | L13 boss | 6 |
| 2 | संग्रह और निष्कर्षण | L13 boss | 6 |
| 3 | सुई खोजें | L16 boss | 7 |
| 4 | गंदा CSV | L18 boss | 4 |
| 5 | घटना | L18 boss | 5 |
| 6 | टूटा हुआ डिप्लॉय | L21 boss | 7 |
| 7 | लॉग आपातकाल | L21 boss | 5 |
| 8 | कॉन्फ़िग सर्जरी | L21 boss | 5 |
| 9 | Git बचाव | L23 boss | 6 |
| 10 | बैच रीफैक्टर | L21 boss | 6 |
| 11 | फोरेंसिक स्वीप | L22 boss | 6 |
| 12 | वाइल्डकार्ड बैकअप | L29 boss | 4 |
| 13 | PATH हाइजैक | L29 boss | 4 |
परिदृश्य 12–13 एक्सप्लॉइट बॉक्स हैं: आप एक वास्तविक tar-checkpoint इंजेक्शन / PATH हाइजैक लगाते हैं और उस आर्टिफैक्ट पर ग्रेड किए जाते हैं जो यह उत्पन्न करता है (एक फ़ाइल दिखाई देती है, एक रहस्य exfiltrated होता है)। एक्सप्लॉइट का *प्रभाव* वास्तव में सैंडबॉक्स में चलता है; विशेषाधिकार सीमा अनुकरण की जाती है — कुछ भी वास्तविक root के रूप में नहीं चलता।
## प्लेसमेंट परीक्षण
पहली बार चलाने के ट्यूटोरियल के बाद, आपसे पूछा जाता है कि क्या आप आगे छोड़ने के लिए प्लेसमेंट परीक्षण लेना चाहते हैं। स्वीकार करें और यह प्रति स्तर 2 प्रश्न चलाता है, 30 सेकंड प्रत्येक, कोई manpage नहीं। एक गलत करें और वही आपका प्रारंभिक स्तर है।
## ईस्टर एग्स
8 छिपी उपलब्धियां। Stats स्क्रीन दिखाती है कि आपने कितनी पाई हैं।
## नियंत्रण
| कुंजी | क्रिया |
|-----|--------|
| Enter | उत्तर सबमिट करें |
| Tab | manpage टॉगल करें |
| Ctrl+d | बाहर निकलें (सत्र सारांश) |
| Esc | Vi सामान्य मोड |
| ? | सभी कीबाइंडिंग (सामान्य मोड) |
## डेटा
प्रगति `${XDG_DATA_HOME:-~/.local/share}/cmdchamp/` में सहेजी जाती है।
## लाइसेंस
MIT