من عقلية المهاجم المتقدّم، إلى بناء أدواتك بنفسك، إلى الدفاع عن بنية حقيقية،
إلى مواجهة مباشرة بين فريقين. كل دورة هنا لها موقع محدّد على الخريطة،
وكل دورة تعرف ما الذي يجب أن تتقنه قبلها.
اضغط على أي دورة لترى ملخّصها، ثم افتح صفحتها الكاملة. الأسهم تُقرأ من اليمين إلى
اليسار: ما على اليمين يجب أن يسبق ما على اليسار.
الخط المتصل يعني متطلباً إلزامياً، والخط المتقطّع يعني متطلباً مُستحسَناً
الفصول
منشور حتى الآن
من المرحلة الأولى، سلسلة طرق التوصيل. كل قسم ينتهي بأسئلة تحقّق تخبرك إن كنت فهمت
قبل أن تكمل.
الخزنة
المنهج كشبكة، لا كقائمة
كل محاضرة تُنزَّل كملف Markdown مربوط بالمفاهيم التي تشرحها: الطرق، الأدوات،
الدفاعات، تقنيات ATT&CK، والخصوم. افتح المجلد في Obsidian واضغط
Graph view: النقاط المجوّفة هي محاضرات لم تُنزّلها بعد، وكلما أضفت
واحدة امتلأت العقد المشتركة معها.
لا تُغيّر أسماء الملفات: Obsidian يربط الملاحظات بالاسم، وأي إعادة
تسمية تقطع الرابط.
الطريقة الأنظف · عبر Git
استنساخ المستودع لا يضع على الملفات علامة «نُزّل من الإنترنت»، فلا يظهر
تحذير SmartScreen الذي يظهر مع تنزيل المتصفّح. ثبّت
Git، نفّذ الأمر، ثم افتح المجلد الناتج في Obsidian:
نفس الشبكة التي تفتحها الخزنة في Obsidian، وفيها مرشّحات لا يملكها:
اعرض ما تشترك فيه المحاضرات فقط، أو ما يخصّ تكتيكاً واحداً في ATT&CK،
أو المسار الأقصر بين مفهومين.
دليل التنقّل يشرح الطريقة كاملة.
أغلب ما يُنشر بالعربية في الأمن الهجومي يشرح الأداة ولا يشرح الطريق. يخرج الدارس
قادراً على تشغيل أمر دون أن يعرف لماذا نجح، ولا ما الذي كان سيوقفه. المنهج هنا مبني
على العكس: كل تقنية تُشرح من مبدئها، وتُربط بموقعها في إطار MITRE ATT&CK، ثم
يُنظر إليها من جهة المدافع.
العمل مع المختصّين
تعمل زينب مع نخبة من المختصّين في الأمن السيبراني، من الفرق الحمراء والزرقاء، على
بناء منهج يجمع ما يُدرَّس في المعسكرات العالمية بما يحتاجه سوق الشرق الأوسط فعلاً.
المادة تُراجَع تقنياً قبل نشرها، وتُحدَّث حين تتغيّر الدفاعات التي تتحدّث عنها.
المختبرات هي الفرق
لا يكتفي المنهج بوصف طريقة توصيل. تبنيها بنفسك، وتشغّلها في بيئة معزولة، ثم تعود
إليها من جهة المدافع: ما الذي ظهر في السجلّات، وأي قاعدة كانت ستوقفها. كل قسم ينتهي
بأسئلة تحقّق تخبرك إن كنت فهمت قبل أن تكمل.
الشروح القصيرة على القنوات، والفصول الكاملة هنا مجاناً.
هذه الخزنة ليست مجموعة ملفات. هي شبكة: كل محاضرة مربوطة بالمفاهيم التي تشرحها، وكل مفهوم مربوط بالمفاهيم التي يظهر بجوارها. الهدف أن ترى الطريق، لا أن تحفظ الأدوات.
أولاً: افتح الخزنة
نزّل الخزنة من صفحة iskander.sh، وفُكّ الضغط عن المجلد.
في Obsidian اختر Open folder as vault ثم اختر مجلد Iskander Bootcamp.
افتح ملف الخريطة. هذا هو الفهرس: منه تصل إلى كل شيء.
لا تُغيّر أسماء الملفات.Obsidian يربط الملاحظات بالاسم، فإعادة التسمية تقطع كل رابط يشير إلى الملف. إن أردت اسماً آخر استخدم aliases في رأس الملف.
بنية الخزنة
المجلد
ما فيه
المحاضرات
نص كل محاضرة كاملاً، وفي آخره قسم الصلات
الدورات
صفحة لكل دورة في الخريطة، مع المتطلبات السابقة وما تفتحه
المجموعات والحملات الحقيقية التي تُشتقّ منها الأمثلة
كيف تقرأ ملف مفهوم
كل ملف مفهوم مبني على نفس الشكل:
رأس الملف فيه الوسم ونوع المفهوم وعدد الإشارات إليه في كل المحاضرات.
الاقتباس في الأعلى هو التعريف، منقول حرفياً من المحاضرة التي تشرحه، ومذكور تحته من أي محاضرة أُخِذ.
يظهر في يعدّ المحاضرات التي تذكره ومعها عدد الإشارات. رقم كبير في محاضرة واحدة يعني أن هذه المحاضرة هي مكان دراسته.
مفاهيم مجاورة ليست قائمة عشوائية: هذه مفاهيم تظهر في نفس القسم داخل المحاضرات. إن رأيت ISO بجوار MOTW فذلك لأن النص يناقشهما معاً، وهذا سؤال يستحق أن تسأله: لماذا؟
الأدوات الخمس التي ستستخدمها
1. الرسم الكامل (Graph view)
الأيقونة في الشريط الجانبي الأيسر، أو Ctrl+G على ويندوز و Cmd+G على ماك. تُظهر الخزنة كلها. اضغط على ترس الإعدادات داخل الرسم لتجد:
Filters: صندوق بحث يقبل استعلامات مثل tag:#مفهوم/دفاع أو path:المحاضرات.
Groups: تلوين مجموعة بلون. الخزنة تصلك ملوّنة مسبقاً حسب النوع.
Display: منه فعّل Show unresolved links إن لم يكن مفعّلاً.
Forces: تباعد العقد. زد Repel force إن بدا الرسم متكدّساً.
النقاط المجوّفة هي ملفات مذكورة ولم تُنزّلها بعد. كلّما أضفت محاضرة امتلأت العقد المرتبطة بها. هذه أسرع طريقة لترى ما ينقصك.
2. الرسم الموضعي (Local graph)
من قائمة ... أعلى الملف اختر Open local graph، أو من لوحة الأوامر. يُظهر جيران هذا الملف فقط. في إعداداته اضبط Depth:
Depth 1: ما يرتبط بالملف مباشرة.
Depth 2: وما يرتبط بجيرانه. ابدأ بـ 1 دائماً، فـ 2 يتحوّل إلى ضوضاء بسرعة.
هذه هي الأداة التي ستقضي فيها أكثر وقتك.
3. الروابط الخلفية (Backlinks)
في الشريط الأيمن. تُظهر كل مكان يشير إلى الملف المفتوح، ومعه السطر الذي ورد فيه. الفرق بينها وبين "مفاهيم مجاورة": الروابط الخلفية تعطيك السياق النصي، لا الرسم فقط.
اضغط #مفهوم/دفاع لترى كل الدفاعات دفعة واحدة. هذه طريقة جيدة لمراجعة محور كامل قبل الامتحان.
5. البحث والتنقّل السريع
الأمر
ويندوز
ماك
فتح ملف بالاسم
Ctrl+O
Cmd+O
بحث في كل النص
Ctrl+Shift+F
Cmd+Shift+F
لوحة الأوامر
Ctrl+P
Cmd+P
الرسم الكامل
Ctrl+G
Cmd+G
إن نسيت اختصاراً، لوحة الأوامر تجد كل شيء بالاسم.
مثال كامل: كيف تدرس موضوعاً واحداً
خذ MOTW، علامة الويب. هي مذكورة في المحاضرات الثلاث، وهذا يجعلها مثالاً جيداً. اتبع هذه الخطوات بالترتيب، وستجد أنك فهمت المحور كله لا التعريف وحده.
الخطوة 1: ابدأ من المفهوم، لا من المحاضرة
افتح MOTW من مجلد المفاهيم/الدفاعات. اقرأ الاقتباس في الأعلى فقط. الآن تعرف تعريفاً واحداً في سطرين، وتعرف أنه مذكور في المحاضرات الثلاث كلها. هذا الرقم وحده يخبرك أن هذا ليس تفصيلاً جانبياً، بل عمود.
الخطوة 2: افتح الرسم الموضعي بعمق 1
سترى حوله: SmartScreen و ISO و ADS و HTA و LNK و Microsoft Defender.
قف هنا واسأل نفسك السؤال الصحيح: لماذا هؤلاء بالذات؟ لا تُجب بعد.
الخطوة 3: اتبع أغرب جار
SmartScreen جار متوقّع، فهو يستهلك العلامة. لكن ISO غريب: ما علاقة صورة قرص بعلامة على ملف؟ افتح ISO.
ستجد الجواب في تعريفه: الحاويات لا تنقل العلامة إلى ما بداخلها. الآن فهمت لماذا ظهرا متجاورين، وفهمت في نفس الوقت لماذا تحوّل المهاجمون إلى ISO بعد أن حُظر ماكرو الإنترنت.
الخطوة 4: انزل إلى النص
من ISO اذهب إلى يظهر في واتبع المحاضرة صاحبة أكبر عدد إشارات. اقرأ القسم هناك. الآن معك التفصيل الكامل بعد أن عرفت لماذا تقرأه، وهذا فرق كبير عن أن تبدأ القراءة من أول المحاضرة.
الخطوة 5: اجمع المحور كله
ارجع إلى MOTW وافتح الروابط الخلفية. كل سطر ذكرها في الخزنة أمامك الآن، من المحاضرات الثلاث. اقرأها كلها متتابعة: هذه مراجعة كاملة لمحور واحد في دقائق، مجمّعة من ثلاثة مستندات لم تكن لتقرأها معاً.
الخطوة 6: اقلب السؤال
اضغط الوسم #مفهوم/دفاع في لوحة الوسوم. أمامك كل الدفاعات. اسأل الآن سؤال الفريق الأحمر: أي واحد من هذه تتخطّاه الطريقة التي تعلّمتها، وأيها لا؟ هذا السؤال هو الفرق بين من يشغّل أداة ومن يفهم لماذا تعمل.
الخطوة 7: اكتب ملاحظتك أنت
أنشئ ملفاً جديداً في مجلد باسمك، واكتب فيه جوابك على سؤال الخطوة 6، واربط ما تذكره هكذا: [[MOTW]] و [[ISO]].
اللحظة المهمة: افتح الرسم الكامل الآن. ملاحظتك صارت عقدة داخل الشبكة، ومرتبطة بما درسته. كرّر هذا مع كل موضوع، وبعد شهر يصبح الرسم خريطة رأسك أنت، لا خريطتنا.
نمط أسبوعي مقترح
اليوم
العمل
قبل المحاضرة
افتح صفحة الدورة، اقرأ المتطلبات السابقة، تأكد أنك أنهيتها
أثناء القراءة
لا تتوقف عند كل مصطلح؛ علّمه فقط وأكمل
بعد القراءة
افتح قسم الصلات في آخر المحاضرة، وافتح كل مفهوم لم تكن تعرفه
المراجعة
افتح مفهوماً واحداً واقرأ روابطه الخلفية كلها
نهاية الأسبوع
اكتب ملاحظة واحدة بلغتك تربط ثلاثة مفاهيم على الأقل
أخطاء شائعة
قراءة المحاضرة من أولها إلى آخرها بلا توقّف. المحاضرات طويلة عن قصد. الرسم موجود لتدخل من المنتصف حيث يهمّك.
تجاهل النقاط المجوّفة. هي قائمة ما ينقصك، معروضة مجاناً.
إعادة تسمية الملفات. تقطع الروابط. استخدم aliases.
البقاء على Depth 2 في الرسم الموضعي. يتحوّل إلى ضوضاء ويوهمك أن كل شيء مرتبط بكل شيء.
عدم كتابة أي ملاحظة. خزنة تقرأ فيها فقط هي كتاب. خزنة تكتب فيها هي ذاكرة.
من لا يعرف Git إطلاقاً إلى من يفتح طلب دمج حقيقيّاً على مستودع عامّ، في جلسة واحدة _لا تحتاج خبرة سابقة. تحتاج فقط أن تكتب كلّ أمر بيدك، وأن تُخطئ في ساحة آمنة قبل أن تلمس مستودعاً حقيقيّاً_
Cybersecurity Bootcamp، Phase 1: Red Team Foundations فصل مهاراتيّ يفتح الجزء الثاني من الكابستون. لا يفترض أيّ معرفة سابقة بـ Git. تُنجزه على جهازك وعلى حسابك في GitHub.
كيف تقرأ هذا المستند
هذا ليس فصلاً نظريّاً. كلّ قسم فيه أوامر تكتبها بنفسك في الطرفيّة، ونُريك المخرج المتوقّع بعد كلّ أمر لتُقارن. أمامك ساحتا تدريب: مستودع تجريبيّ محلّيّ تصنعه بـ git init وتُخطئ فيه بلا خوف لأنّه لا يُنشر لأحد، ثمّ نسختك من مستودع الـ keylogger الحقيقيّ، حيث تُنفّذ الجزء الثاني من الكابستون فعلاً.
كالعادة: النصّ عربيّ RTL، الأوامر إنجليزيّة LTR، والمصطلحات القصيرة (commit, branch, fork) داخل جمل عربيّة بين backticks. لا تنسخ الأوامر لصقاً: اكتبها حرفاً حرفاً، فالكتابة باليد تُرسّخ الأمر أعمق من قراءته.
جدول المحتويات
#
الموضوع
0
ما Git وما GitHub، ولماذا يهمّان مهاجماً
1
التثبيت والإعداد لأوّل مرّة
2
النموذج الذهنيّ: الدليل العامل، التجهيز، الالتزام، التاريخ
لا تحتاج أن تُتقن C++ لتُنجز الجزء الثاني من الكابستون: تحسين في README، أو تعليق أوضح، أو إضافة ملف .gitignore كلّها مساهمات مقبولة. المطلوب أن تُتقن الطريق إلى الـ Pull Request، لا أن تكتب رقعةً عبقريّة.
القسم 0القسم 0: ما Git وما GitHub، ولماذا يهمّان مهاجماً
قبل أوّل أمر، ثبّت الفكرتين، فالخلط بينهما هو أكثر ما يُربك المبتدئ.
Git أداة تعيش على جهازك: آلة زمن لملفّاتك. تلتقط لقطات (commits) لحالة مشروعك، فتستطيع أن تعود إلى أيّ لقطة، وأن ترى من غيّر ماذا ومتى ولماذا. تعمل بلا إنترنت تماماً، وهي منفصلة عن أيّ موقع.
GitHub موقع على الإنترنت يستضيف نسخةً من مستودعك ليراها غيرك ويتعاون معك، ويستقبل مساهماتك عبر ما يُسمّى Pull Request. باختصار: Git هو الأداة، وGitHub هو المكان. تستطيع أن تستعمل Git طوال عمرك بلا GitHub، لكنّك تحتاج GitHub لتُشارك عملك وتفتح طلب دمج.
ولماذا يهمّ هذا مهاجماً؟ لأنّ أدوات الفريق الأحمر الحقيقيّة تُطوّر وتُقرأ وتُراجَع مثل أيّ برمجيّة أخرى. من يقرأ تاريخ مستودع يفهم كيف نضجت الأداة وأين مواطن ضعفها. ومن يستطيع فتح Pull Request يستطيع أن يُصلح ويُساهم ويعمل داخل فريق. في هذا الفصل تنتقل من مهاجم يستهلك الأدوات إلى مهندس يبنيها. هذا نصف الكابستون الآخر.
جرّب: افتح طرفيّة، واسأل عن نسخة Git:
bash
git--version
إن ظهر سطر مثل git version 2.43.0 فـ Git مثبّت، انتقل للقسم 2. وإن ظهر command not found أو is not recognized فلم يُثبّت بعد: القسم 1 يُثبّته.
✅ اختبر نفسك: القسم 0
بجملة واحدة لكلٍّ منهما: ما الفرق بين Git وGitHub؟
هل تستطيع استعمال Git بلا إنترنت؟ ولماذا؟
ما Pull Request بكلماتك أنت؟
القسم 1القسم 1: التثبيت والإعداد لأوّل مرّة
خطوتان: نُثبّت الأداة، ثمّ نُعرّفها بمن أنت وكيف تدخل إلى GitHub.
تثبيت Git
Windows: الأسهل عبر winget install --id Git.Git، أو نزّل المثبّت من https://git-scm.com. أبقِ الخيارات الافتراضيّة.
macOS: شغّل xcode-select --install، أو brew install git إن كان لديك Homebrew.
Linux:sudo apt install git على دبيان وأوبنتو، أو ما يعادلها في توزيعتك.
افتح طرفيّة جديدة بعد التثبيت وأعِد git --version لتتأكّد.
الإعداد لأوّل مرّة: من أنت
كلّ التزام يحمل اسم صاحبه وبريده. عرّف نفسك مرّةً واحدةً لكلّ الجهاز:
bash
git config --global user.name "Your Name"git config --global user.email "you@example.com"git config --global init.defaultBranch main
git config --list# تحقّق: يظهر اسمك وبريدك في القائمة
الدخول إلى GitHub ليعمل push
حتّى تستطيع الدفع إلى نسختك على GitHub، تحتاج طريقة استيثاق. اختر واحدة:
ملاحظة أمان: الـ PAT كلمة مرور كاملة. لا تكتبه داخل كود، ولا ترفعه إلى مستودع، ولا تُشاركه. لو تسرّب، ألغِه فوراً من الصفحة نفسها.
✅ اختبر نفسك: القسم 1
لماذا يطلب Git اسمك وبريدك على كلّ التزام؟
ما الذي ينكسر لو لم تُعدّ الاستيثاق؟ في أيّ خطوة يظهر الخلل؟
أين تُخزَّن إعدادات --global، وهل تُطبَّق على كلّ مستودعاتك أم على واحد؟
القسم 2القسم 2: النموذج الذهنيّ، الدليل العامل ثمّ التجهيز ثمّ الالتزام ثمّ التاريخ
أكثر ما يُربك المبتدئ أنّه يظنّ الملفّ إمّا محفوظاً أو لا. في Git الملفّ يمرّ بأربع مناطق، وفهمها يُنهي نصف الحيرة:
الدليل العامل (Working Directory): ملفّاتك كما تراها الآن، تُعدّل فيها بحرّيّة.
منطقة التجهيز (Staging): ما اخترته ليدخل اللقطة القادمة. تُرقّي إليها بـ git add.
التاريخ (Commits): لقطات مُثبّتة لا تتغيّر. تُنشئها بـ git commit.
والأفعال التي تُحرّك الملفّ بين المناطق: status يُريك أين كلّ ملفّ، وadd يُجهّز، وcommit يُثبّت، وlog يعرض التاريخ.
لنُجرّب كلّ ذلك في مستودع تجريبيّ لا يُنشر لأحد، فالخطأ فيه بلا ثمن:
bash
mkdirgit-sandboxcdgit-sandboxgit init # أنشأنا مستودعاً فارغاً هناecho"أوّل سطر" > notes.txt
git status # تحقّق: notes.txt بالأحمر، غير متعقّب (Working Directory)git add notes.txt
git status # تحقّق: أخضر الآن، مُجهّز (Staging)git commit -m"إضافة ملفّ الملاحظات الأوّل"git log --oneline# تحقّق: التزامك الأوّل يظهر في التاريخ
لاحظ: الرسالة بعد -m تشرح لماذا لا ماذا. git يعرف أنّك عدّلت الملفّ، لكنّه لا يعرف سبب التعديل. الرسالة الجيّدة هدية لك بعد ثلاثة أشهر.
✅ اختبر نفسك: القسم 2
في أيّ منطقة يكون الملفّ بعد add وقبل commit؟
ماذا يحفظ commit بالضبط: الملفّ كلّه أم فرق التعديل؟
لماذا "fix" رسالة التزام سيّئة؟ اكتب بديلاً أفضل لتصحيح خطأ مطبعيّ.
القسم 3القسم 3: Clone مقابل Fork، ما الفرق ومتى
هنا المفهوم الذي يحتاجه الجزء الثاني من الكابستون بالضبط، فتمهّل فيه:
Fork نسختك أنت من مستودع غيرك على GitHub. تحتاجها لأنّك لا تملك صلاحيّة الدفع إلى مستودع لا تملكه. الـ fork تُنشأ على الموقع بنقرة، وتصبح ملكك تدفع إليها كما تشاء.
Clone تنزيل أيّ مستودع من GitHub إلى جهازك لتعمل عليه محلّيّاً.
القاعدة الذهبيّة: افعل fork أوّلاً على الموقع، ثمّ clone لنسختك أنت، لا للأصل.
بعد الاستنساخ يصير عندك مرجعان بعيدان: origin يشير إلى نسختك (تدفع إليها)، وupstream يشير إلى المستودع الأصليّ (تسحب منه التحديثات). نُضيف upstream بأنفسنا.
git clone https://github.com/<اسم-حسابك>/Keylogger4.gitcd Keylogger4
git remote -v# تحقّق: origin يشير إلى نسختك أنتgit remote add upstream https://github.com/HashHashBit/Keylogger4.gitgit remote -v# تحقّق: upstream يشير إلى الأصل
انتبه: فرع هذا المستودع الافتراضيّ اسمه master لا main. ستستعمل master في أوامر الدفع والمزامنة في هذا الفصل. لكلّ مستودع فرعه الافتراضيّ، فاقرأ قبل أن تفترض.
✅ اختبر نفسك: القسم 3
لا تملك صلاحيّة الدفع إلى المستودع الأصليّ. كيف يحلّ الـ fork هذه المشكلة؟
ما الفرق بين origin وupstream؟
لو استنسختَ الأصل مباشرةً بدل نسختك، في أيّ خطوة لاحقة ستصطدم بالجدار؟
القسم 4القسم 4: دورة التعديل، تعديل ثمّ add ثمّ commit ثمّ push
هذه هي الحلقة اليوميّة، لكنّها الآن تدفع إلى مستودع حقيقيّ على GitHub (نسختك). لنبدأ بتعديل بسيط وآمن على README:
الخطوة أ: تأكّد أنّك على الفرع الافتراضيّ ومُحدَّث:
bash
git switch master
git pull origin master # اجلب آخر ما في نسختك
git add README.md
git commit -m"توثيق: توضيح خطوة التصريف في README"git push origin master # تحقّق: افتح نسختك على GitHub، سترى التزامك الجديد
ما لم تدفعه لا يراه أحد على GitHub. الالتزام وحده يبقى على جهازك حتّى يصل push.
✅ اختبر نفسك: القسم 4
ما الذي يظهر على GitHub بعد push فقط، ولم يكن ظاهراً بعد commit؟
لماذا نفصل add عن commit، ولا نجعلهما أمراً واحداً؟
نسيتَ -m. ماذا يحدث، وكيف تخرج من المحرّر الذي يفتحه Git؟
القسم 5القسم 5: الفروع، إنشاء وتبديل
لا تعمل مساهمتك على master مباشرةً. الفرع مسار جانبيّ آمن، تعمل فيه بمعزل، ثمّ يصير طلب دمج واحداً. لو أفسدتَ شيئاً، الفرع الرئيس سليم.
تحتاج ثلاثة أوامر فقط: git switch -c يُنشئ فرعاً وينتقل إليه، وgit switch ينتقل بين الفروع، وgit branch يعرضها ويُري أين أنت.
جرّب داخل نسختك من Keylogger4:
bash
git switch -c fix/readme-typo# أنشئ فرعاً جديداً وانتقل إليه دفعةً واحدةgit branch # تحقّق: النجمة (*) على الفرع الجديد# عدّل ملفّاً واحفظه، ثمّ:git add -Agit commit -m"إصلاح خطأ مطبعيّ في قسم الإعداد"git switch master # عُد إلى الرئيس: تعديلك ليس هناgit switch fix/readme-typo# ارجع إلى فرعك: تعديلك هنا
✅ اختبر نفسك: القسم 5
لماذا نفتح فرعاً بدل الالتزام على master مباشرةً؟
ماذا تعني النجمة * في مخرج git branch؟
بدّلتَ إلى master فاختفى تعديلك من الملفّات. هل ضاع؟ أين هو؟
القسم 6القسم 6: التدفّق الكامل، من fork إلى Pull Request مدموج
هذا القسم يجمع كلّ ما سبق في التسليم الحقيقيّ: مساهمة فعليّة في مستودع الـ keylogger عبر طلب دمج. أيّ تحسين حقيقيّ، ولو بسيطاً، يجتاز الجزء الثاني من الكابستون.
الخطوة أ: انطلق من فرع نظيف باسم يصف فكرتك:
bash
git switch master
git fetch upstream
git merge upstream/master # ابدأ من أحدث نسخة من الأصلgit switch -c improve/clearer-usage
الخطوة ب: اصنع تحسيناً حقيقيّاً صغيراً. أفكار آمنة لا تتطلّب خبرة عميقة بـ C++:
تعليق أوضح يشرح ماذا يفعل جزء من keylogger_edu.cpp.
إضافة ملفّ .gitignore يتجاهل مخرجات التصريف (*.exe, *.o).
تصحيح أو توسيع README.md بخطوات التصريف والتشغيل.
راجع تبويب Issues في المستودع: فيه مشكلة مفتوحة قد تكون نقطة انطلاقك.
الخطوة ج: ثبّت التحسين وادفعه إلى فرعك على نسختك:
bash
git add -Agit commit -m"تحسين: وصف أوضح لوسائط التشغيل في README"git push origin improve/clearer-usage
الخطوة د: على GitHub سيظهر زرّ Compare & pull request. اضغطه، تأكّد أنّ الوجهة هي HashHashBit/Keylogger4 فرع master، اكتب عنواناً ووصفاً يشرحان ماذا غيّرت ولماذا، ثمّ Create pull request.
الخطوة هـ، الردّ على المراجعة: حين يُعلّق المُشرف طالباً تعديلاً، لا تفتح طلباً جديداً. عدّل على الفرع نفسه، ثمّ:
bash
git add -Agit commit -m"مراجعة: تسمية المتغيّر أوضح كما طُلب"git push origin improve/clearer-usage# يتحدّث طلب الدمج نفسه تلقائيّاً
الخطوة و، مزامنة نسختك مع الأصل قبل أيّ عمل جديد، حتّى لا تبني فوق نسخة قديمة:
هذا هو الجزء الثاني من الكابستون فعلاً. حين يُفتح طلب الدمج ويظهر رابطه، انسخ الرابط لتسليمه. المطلوب أن تُثبت إتقان التدفّق: fork ثمّ branch ثمّ commit ثمّ push ثمّ Pull Request. عبقريّة الرقعة ليست الهدف.
✅ اختبر نفسك: القسم 6
بعد فتح طلب الدمج، كيف تُضيف تعديلاً طلبه المُراجع دون فتح طلب جديد؟
لماذا نُزامن مع upstream قبل بدء عمل جديد؟
ما الذي يجب أن يتضمّنه وصف طلب الدمج الجيّد؟
القسم 7القسم 7: الخلاصة وورقة الأوامر والجسر إلى الكابستون
وصلتَ من صفر إلى طلب دمج مفتوح على مستودع عامّ. راجع ما أتقنتَه:
ثبّتَ Git وعرّفت نفسك، وأعددتَ الدخول إلى GitHub.
فهمتَ المناطق الأربع: الدليل العامل، التجهيز، الالتزام، التاريخ.
فرّقتَ بين clone وfork، وأضفتَ origin وupstream.
فرّعتَ، والتزمتَ، ودفعتَ، وفتحتَ طلب دمج، وحدّثتَه بعد المراجعة، وزامنتَ نسختك.
ورقة الأوامر السريعة
الأمر
ماذا يفعل
git init
يُنشئ مستودعاً جديداً في المجلّد الحاليّ
git clone <url>
يُنزّل مستودعاً إلى جهازك
git status
يُري حالة كلّ ملفّ وأين هو
git add <file>
يُجهّز ملفّاً للّقطة القادمة
git commit -m "..."
يُثبّت لقطةً برسالة تشرح السبب
git log --oneline
يعرض التاريخ سطراً لكلّ التزام
git switch <branch>
ينتقل إلى فرع موجود
git switch -c <branch>
يُنشئ فرعاً وينتقل إليه
git branch
يعرض الفروع ويُري أين أنت
git push origin <branch>
يدفع فرعك إلى نسختك على GitHub
git remote -v
يعرض المراجع البعيدة (origin وupstream)
git fetch upstream
يجلب تحديثات الأصل دون دمجها
git merge upstream/master
يدمج تحديثات الأصل في فرعك
git pull origin <branch>
fetch ثمّ merge من نسختك دفعةً واحدة
لكنّك ما زلت في البداية
هذا الفصل هو الحدّ الأدنى لتُساهم بثقة، لا خريطة Git الكاملة. تركنا عمداً rebase وcherry-pick وstash وtags وحلّ التعارضات المعقّدة، لأنّها ليست ضروريّةً لأوّل طلب دمج. حين تحتاجها ستعرف أنّك تحتاجها، وتتعلّمها حينها.
🧭 ما التالي
الآن نفّذ الجزء الثاني من الكابستون: افتح الكابستون، ثمّ اذهب إلى مستودع الـ keylogger، اعمل fork، وافتح طلب دمج حقيقيّاً بتحسين تختاره أنت. سلّم رابط الطلب.
وتذكّر القاعدة نفسها التي تحكم كلّ ما تتعلّمه هنا: تعلّم الطريق حتّى تستطيع إغلاقه.
↑↓ تنقّل⏎ فتحEsc إغلاق
تتبُّع الكود خطوةً بخطوة
قبل أن تُنزّل — تنبيه أمن ويندوز
هذه المادة تشرح كيف تعمل البرمجيات الخبيثة، فبعض الملاحظات — خاصّة
الفصلين 2A و3 — تحوي شيفرة هجوم حقيقية لغرض
التعليم. قد يضع Microsoft Defender بعض هذه الملفات في الحجر
لأن نصّها يطابق توقيعات معروفة. هذا سلوك متوقَّع من المادة التي تدرسها،
وليس إصابة فعلية لجهازك.
الأسلم: افتح الخزنة داخل الآلة الافتراضية المعزولة
(Victim VM) المخصّصة للمعمل — التحذير هناك لا يضرّك، وهذا هو
المكان الصحيح لكلّ عمل المعمل أصلاً.
إن اضطررت للعمل على جهازك المضيف مؤقتاً وأنت واعٍ بالمخاطرة:
أضف مجلد الخزنة وحده استثناءً مؤقتاً من Windows Security
← الحماية من الفيروسات والتهديدات ← إدارة الإعدادات ← الاستثناءات ←
إضافة مجلد، ثم أزِل الاستثناء فور انتهائك.
لا تستثنِ مجلد Downloads بأكمله، ولا تُطفئ
الحماية في الوقت الفعلي، ولا تفعل هذا على جهاز فيه بيانات تهمّك. استثناء
مجلد يعني أن ويندوز لن يفحص ما بداخله — سيف ذو حدّين.