
cmdchamp v1.3.0
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 के साथ, कमांड एक वास्तविक सैंडबॉक्स्ड फाइलसिस्टम में चलते हैं और उनके वास्तविक आउटपुट पर ग्रेड किए जाते हैं। अंदर का बॉक्स सिंथेटिक है — उपयोगकर्ता 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):
paru -S cmdchamp # या: yay -S cmdchamp
कहीं भी (एकल फ़ाइल):
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
या क्लोन करें:
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 (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 इसे सत्यापित करता है।
उपयोग
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), गेम द्वारा सिखाए गए कमांड में से आपने कितने कभी चलाए हैं, और सबसे पहला स्तर जिसमें अंतर है। यह केवल पैटर्न और गिनती प्रिंट करता है — आपके इतिहास से कभी कोई पंक्ति, टुकड़ा या "उदाहरण" नहीं, क्योंकि इतिहास में तर्क के रूप में टाइप किए गए टोकन और पासवर्ड होते हैं। कुछ भी मशीन से बाहर नहीं जाता, और आपके इतिहास को प्रतिध्वनित करने के लिए कोई फ्लैग नहीं है।