
cmdchamp v1.2.13
مدرب واجهة سطر الأوامر bash — 30 مستوى من ls وصولاً إلى تصعيد الامتيازات
cmdchamp
مدرب أوامر باش — 30 مستوى من ls إلى تصعيد الامتيازات.

كل سؤال يطلب منك كتابة أمر حقيقي — احصل على رد فوري، وتقدم. أخطئ في سؤال ولا يكتفِ بإظهار الإجابة لك: بل يُظهر ما طبعَه أمرُك مقابل ما كان مطلوبًا، وبالنسبة للأنابيب عدد الأسطر في كل مرحلة، لترى النقطة التي فشل عندها. بالنسبة للأسئلة المطابقة نصيًا، يسمي الإجابة المقبولة التي كان إجابتك الأقرب إليها والعلم المحدد الذي تركته. أجب بالطريقة الطويلة فيُريك الطريقة القصيرة — cat f | grep -c X يمنحك Shorter: grep -c X f، ويُفعَّل عند عدد مراحل أنابيب أقل وكذلك عدد أحرف أقل، لأن العملية التي وفّرتها هي الدرس. كثير من الأسئلة تعمل على ملفات حقيقية في بيئة الاختبار، وكلها تقبل صيغًا صحيحة متعددة (sort -u أو sort | uniq). مفتاح Tab يبدّل صفحة الدليل عندما تحتاج مرجعًا — صفحات مختصرة لكل أمر ينفذه الجواب، بالإضافة إلى صيغة الصدفة التي يعتمد عليها (x=$(cmd)، ${var:-default}، ${path##*/})، فلا يُترك شيء في السؤال لتخمينه. الترتيب عشوائي في كل تشغيل فلا يمكنك حفظه. الإتقان يتتبع ما تعرفه: أجب عن سؤال بشكل صحيح مرتين لإتقانه، وأخطئ فيه فيُخفَض فيعود إليك مبكرًا. سلسلة من 5 إجابات صحيحة تُفعّل وضع النار — لافتة تعمل حتى تخطئ.
ينتهي كل مستوى بجولة زعيم — بدون صفحات دليل، مؤقت 30 ثانية، 4/5 للنجاح. افشل ويمكنك إعادة محاولة الزعيم فورًا أو العودة للتدريب. اهزم المستويات الثلاثين جميعها ويفتح وضع التحدي — محك النهاية: سلاسل أوامر متعددة تجمع الأدوات من اللعبة كلها في أنبوب واحد. 30 ثانية لكل سلسلة، حياة واحدة، بدون صفحات دليل، وأفضل نتيجة لك هي الرقم القياسي. كل سلسلة تُقيَّم على مخرجاتها الحقيقية في بيئة الاختبار، لذا أي أنبوب صحيح ينجح. كل تشغيل يبني أيضًا بيئة اختبار عشوائية جديدة — عناوين IP مختلفة، أعداد، مضيفات، وبيانات سجلات — ويستمد من أكثر من 50 قالب سلسلة مع فواصل وترتيب فرز ومجاميع متغيرة، لذا أكثر IP ازدحامًا، وأعلى URL، وأعلى عدد ليست نفسها أبدًا مرتين. التشغيل الأول يتضمن برنامجًا تعليميًا قصيرًا واختبار تحديد مستوى يتيح لك تخطي المستويات التي تعرفها بالفعل.
مع bubblewrap، تعمل الأوامر في نظام ملفات حقيقي معزول وتُقيَّم على مخرجاتها الفعلية. الصندوق بداخله اصطناعي — مستخدم sandbox، مضيف sandbox، ملف /etc/passwd خاص به وسطر أوامر نواة خاص — فلا يمكن لأي شيء تكتبه أن يطبع اسم مستخدمك الحقيقي أو اسم جهازك أو تخطيط قرصك على الشاشة، وid وwhoami وhostname تجيب بنفس الإجابة في كل مكان. يصل هذا الآن أيضًا إلى مستوى التحقيق الجنائي: المستوى 28 يسلّمك عينة ثنائية حقيقية (samples/target.bin) ويقيّم ما إذا كنت استخرجت فعلًا العلم ونطاق التسلل ومفتاح API المسرب منها — وكذلك أسئلة jq على JSON حقيقي. محك النهاية يجمع تلك الاستخراجات في سلاسل موقوتة. المستويان 24-25 يعملان الآن فعلًا أيضًا: خدمة HTTP صغيرة تبدأ على localhost:8080 داخل مساحة أسماء الشبكة الخاصة بالصندوق بينما يعمل جوابك، مع ثلاثة منافذ تستمع، لذا curl وjq عبر HTTP وss وnmap تُقيَّم على ما أعادته فعلًا. لا شيء يُكشف لجهازك — مساحة الأسماء ما زالت تحجب كل اتصال صادر، والمنفذ غير مرئي من الخارج. فقط الأدوات التي لا يمكنها فعلًا العمل في بيئة معزولة — واي فاي/ترددات راديوية، الالتقاط المباشر، وتحقيقات الذاكرة/القرص الكبيرة — تبقى مطابقة نصيًا. مستويات البحث (16-17) تقبل صيغة rg/fd وصيغة grep/find معًا. تحرير أسطر Vi مدمج — حركات، عوامل، أعداد، سجلات، تراجع ووضع بصري (v/V، o لتبديل الأطراف)، مع ? للخريطة الكاملة.
التثبيت
Arch (AUR):
paru -S cmdchamp # or: 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
أضف ~/.local/bin إلى PATH إذا لزم الأمر: 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) لوضع بيئة الاختبار (لينكس فقط) — معظم توزيعات سطح المكتب تتضمنه. بدونه، تُطابق الإجابات نصيًا فقط
اختياري: python3 — يخدم خدمة HTTP على localhost في بيئة الاختبار، لذا أسئلة live api / live box في المستويين 24-25 تُقيَّم على مخرجات حقيقية. بدونه تعود تلك الأسئلة إلى المطابقة النصية؛ لا يتغير شيء آخر
إمكانية الوصول: يحترم NO_COLOR وTERM=dumb. يتكيف التخطيط مع COLUMNS / tput cols. أشرطة الإتقان تحمل لونًا ورمز ✓ / ~ / x — مقروءة بدون لون.
الأطراف: يعمل على أطراف تسلسلية حقيقية، وليس فقط المحاكيات. cmdchamp يفحص ما يمكن للطرف عرضه فعلًا ويختار واحدًا من ثلاث طبقات عرض — يونيكود، رسم خطوط DEC ACS، أو ASCII خالص — فتبقى الإطارات سليمة على VT100/VT220/VT320/VT420 أو Wyse. على شاشة أحادية اللون، تُعاد ترميز تمييزات الألوان كخط عريض/معكوس. فرض طبقة بـCMDCHAMP_ASCII=1 أو CMDCHAMP_UNICODE=1. ./test_terminals.sh يتحقق من ذلك.
الاستخدام
cmdchamp # Launch the game menu
cmdchamp explain 'CMD' # Explain any command - every flag, plus the shell syntax around it
cmdchamp autopsy # Read your own shell history and map it onto the curriculum
cmdchamp daily # Play today's daily gauntlet (same run for everyone)
cmdchamp daily 2026-02-16 # Replay a specific day's run (race a friend)
cmdchamp play # Free-play sandbox: type any command, see it run
cmdchamp --no-sandbox # Disable sandbox (text-match only)
cmdchamp reset # Clear all progress
cmdchamp test # Run self-tests
cmdchamp version # Print version
cmdchamp help # Show help
cmdchamp explain (أو cmdchamp x) هو لوحة Tab كأداة مستقلة: صفحات مكتوبة يدويًا لنحو 300 أمر بالإضافة إلى صيغة الصدفة المحيطة بها، دون اتصال، بدون شبكة، بدون تبعيات. يأخذ أمرًا مقتبسًا أو الكلمات المجردة، ويقرأ من stdin عندما لا يُعطى أيًا منهما — لذا history | tail -1 | cmdchamp x يشرح ما شغّلته للتو. خروج 0 عندما يعرف الأمر، و1 عندما لا يعرفه.
cmdchamp autopsy يقرأ سجل أوامر الصدفة لديك — $HISTFILE، ثم ~/.bash_history، ثم ~/.zsh_history، أو ملفًا تسميه، أو - لـ stdin — ويرسمه على المستويات الثلاثين: ما تصل إليه فعلًا، عادات تستحق التخلي عنها مع عدّك الخاص بجانب كل منها (cat إلى grep، find إلى xargs بدون -print0، chmod 777، curl | sh)، كم من الأوامر التي تعلمك إياها اللعبة شغّلتها يومًا، وأدنى مستوى فيه فجوة. يطبع الأنماط والأعداد فقط — أبدًا سطرًا أو جزءًا أو "مثالًا" من سجلّك، لأن السجل يحمل رموزًا وكلمات مرور كُتبت كوسائط. لا شيء يغادر الجهاز، ولا يوجد علم لجعله يعيد سجلّك.
تحتوي القائمة على متابعة، لعبة جديدة، سيناريوهات، تحدي، يومي، تدريب، إحصائيات، خيارات، مساعدة وخروج على مفاتيح ثابتة 1-9 و0. صف لم تفتحه بعد يظهر باهتًا بدل إخفائه، لذا الرقم بجانب التسمية لا يتحرك أبدًا مع تقدمك. j/k أو الأسهم للتحرك، Enter للاختيار، وq (أو Esc) للخروج. ساحة اللعب في أعلى قائمة السيناريوهات — وهي الإدخال الوحيد الذي لا يُقفل أبدًا. المساعدة هي المرجع، ثلاث صفحات: كل مفتاح، ماذا يكلف كل وضع ومتى يفتح، كيف يعمل التسجيل والاضمحلال، ماذا تعني علامات الإحصائيات، كيف يُحكم على إجابة، وكل متغير بيئة. البرنامج التعليمي للتشغيل الأول ما زال على بُعد ضغطة مفتاح واحدة في الصفحة الأخيرة.
اليومي (بعد ROOT) هو تشغيل محك مُبذَّر بالتاريخ — البذرة تقود السلاسل وبيئة الاختبار العشوائية معًا، لذا يحصل الجميع في كل مكان على أسئلة وبيانات متطابقة بايتًا بايتًا ذلك اليوم، محاولة واحدة مُسجَّلة، سلسلة أيام متتالية، ونتيجة قابلة للنسخ تشاركها. التدريب يمرّن أي مستوى وصلت إليه (معروض بنسبة إتقانه %) مع تلميحات وبدون مؤقت، دون لمس تقدمك الرئيسي. ساحة اللعب صندوق مخترق تفككه بصدفة حقيقية: شخص ما دخل، استخدمه، ثم حاول الترتيب، وكل حركة تركت أثرًا على القرص. الأوامر تعمل فعلًا في بيئة الاختبار ولا شيء يُقيَّم. حتى 8 رموز flag{...} مزروعة عبر الشجرة (يفتح المزيد كلما أتقنت مستويات)، map يعرض الاقتحام مرحلة بمرحلة ويحدد مكانك، learn هو المنهج الأمني المكون من 8 وحدات خلفه، hint يتعمق طبقة أكثر كلما سألت، وTab يشرح ما كتبته. الترويسة تسمي دائمًا المرحلة التي تبحث عنها والملفات التي تركتها، فلا تحدق أبدًا في موجه بلا مكان توجّه إليه أمرًا — وإذا مرت ستة أوامر دون العثور على شيء، يأتيك التلميح الأول.
الإحصائيات
صفحتان. الأولى أشرطة المستويات الثلاثين — إلى أين وصلت. الثانية نفس الإتقان مُسقطًا على الأوامر، الأضعف أولًا، لأن المستوى سلة خشنة جدًا للتدريب منها: المستوى 13 وحده يعلّم cp وmv وln وchmod وACLs وdu وtar وdiff، وشريط أحمر واحد لا يمكنه أن يقول أيًا منها تخطئ باستمرار. فقط المستويات التي وصلتها تُحسب، والشبكة محدودة بشاشة واحدة — قائمة عمل تحتاج تمريرًا ليست قائمة عمل. تحتها، أضعف ثلاثة أوامر مسمّاة مع المستوى الذي يعلّم كلًا منها، فتنتهي الصفحة حيث يبدأ التدريب — أسماء المستويات موضوعية، و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 | الإدخال وسلاسل هنا | <, <<<, tr, cut, rev, bc |
| 7 | معالجة الأخطاء | 2>, 2>&1, &>, /dev/null |
| 8 | بوابات المنطق | &&, || |
| 9 | المتغيرات | $VAR, assignment, expansion |
| 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: sessions, windows, panes |
| 16 | البحث في النص | grep, ripgrep, regex |
| 17 | إيجاد الملفات | find, fd, by name/size/time/type |
| 18 | معالجة البيانات | sort, uniq, cut, awk, tr, comm, join, numfmt |
| 19 | السلاسل والمصفوفات | parameter expansion, arrays |
| 20 | تدفق التحكم | if/else, loops, case, functions |
| 21 | عمليات الدفعات | find -exec, xargs, sed -i, crontab |
| 22 | التعبيرات النمطية المتقدمة | lookahead, sed, awk |
| DevOps والأمن | ||
| 23 | Git | branches, remotes, rebasing, stashing, bisect |
| 24 | أدوات الشبكة | tshark, curl, jq, ssh tunnels, openssl, SMB, a live HTTP endpoint |
| 25 | فحص الشبكة | nmap, service detection, scripts, a live target |
| 26 | واي فاي والترددات الراديوية | aircrack-ng, netcat, tcpdump, wireless recon |
| 27 | كسر التجزئة | hashcat, john, hydra, encoding |
| 28 | التحقيق الجنائي | strings, readelf, binwalk, volatility, exiftool |
| 29 | تصعيد الامتيازات | SUID, capabilities, GTFOBins, enumeration |
| 30 | ROOT | emergency recovery, chroot, offline survival |
السيناريوهات
تحديات بيئة اختبار متعددة الخطوات — الحالة تستمر بين الخطوات. متاحة من قائمة السيناريوهات بمجرد تجاوز زعيم الفتح، الذي يعرضها بترتيب الفتح تحت ساحة اللعب. الأرقام أدناه هي معرّفات السيناريوهات، التي لا تتغير أبدًا.
| # | الاسم | يُفتح عند | الخطوات |
|---|---|---|---|
| 1 | قفل الأذونات | زعيم L13 | 6 |
| 2 | أرشفة واستخراج | زعيم L13 | 6 |
| 3 | ابحث عن الإبرة | زعيم L16 | 7 |
| 4 | CSV فوضوي | زعيم L18 | 4 |
| 5 | الحادثة | زعيم L18 | 5 |
| 6 | النشر المعطوب | زعيم L21 | 7 |
| 7 | طوارئ السجلات | زعيم L21 | 5 |
| 8 | جراحة الإعدادات | زعيم L21 | 5 |
| 9 | إنقاذ Git | زعيم L23 | 6 |
| 10 | إعادة هيكلة دفعات | زعيم L21 | 6 |
| 11 | مسح جنائي | زعيم L22 | 6 |
| 12 | نسخ احتياطي بالبدائل | زعيم L29 | 4 |
| 13 | اختطاف PATH | زعيم L29 | 4 |
السيناريوهان 12–13 صندوقا استغلال: تزرع حقن tar-checkpoint حقيقي / اختطاف PATH حقيقي وتُقيَّم على الأثر الذي ينتجه (يظهر ملف، يُسرَّ سر). تأثير الاستغلال يعمل فعلًا في بيئة الاختبار؛ حدود الامتياز محاكاة — لا شيء يعمل كجذر حقيقي.
اختبار تحديد المستوى
بعد البرنامج التعليمي للتشغيل الأول، يُسأل إن كنت تريد إجراء اختبار تحديد المستوى للتقدم للأمام. اقبل فيشغّل سؤالين لكل مستوى، 30 ثانية لكل سؤال، بدون صفحات دليل. أخطئ في واحد فذلك مستواك الابتدائي.
بيض عيد الفصح
8 إنجازات مخفية. شاشة الإحصائيات تعرض كم وجدت.
عناصر التحكم
| المفتاح | الإجراء |
|---|---|
| Enter | إرسال الإجابة |
| Tab | تبديل صفحة الدليل |
| Ctrl+d | خروج (ملخص الجلسة) |
| Esc | وضع Vi العادي |
| ? | كل اختصارات المفاتيح (الوضع العادي) |
البيانات
التقدم يُحفظ إلى ${XDG_DATA_HOME:-~/.local/share}/cmdchamp/.
الترخيص
MIT