الدرس 1 من 6

مفتاح الطبقة الواحدة

هدف الدرس

تجريب كل المفاتيح واختيار أقربها إلى الكلام

01

الشرح

هذا أوّل التحدّيات، وتلميحاته أقلّ من تلميحات الدروس. أمامك رسالة شُفّرت بـ XOR بمفتاح من بايت واحد لا تعرفه، والمطلوب أن تستخرج المفتاح والرسالة بكودك أنت.

المفاتيح الممكنة 256 فقط، فتستطيع أن تجرّبها كلّها. لكن مفاتيح كثيرة تعطي ناتجًا كلّه محارف مطبوعة دون أن يكون كلامًا مفهومًا، فلا يكفي هذا الشرط وحده. وانتبه إلى أن الطريقة chr(b).isalpha() تصدق أيضًا على بايتات فوق 0x7f تشبه الحروف، فاحسب الحروف الإنجليزية الصغيرة والمسافة وحدها لا كل ما تعدّه الدالة حرفًا. والرسائل هنا جمل إنجليزية بحروف صغيرة تفصل بين كلماتها مسافات، فالمفتاح الصحيح هو الذي يجعل الناتج أقرب ما يكون إلى جملة كهذه.

02

المطلوب

اكتب الدالة crack(cipher) لتُرجع الصفّ (key, plaintext)، أي المفتاح ثم النصّ المفكوك بايتات. والفحص يجرّبها على رسائل أخرى بمفاتيح أخرى، فلا ينفع أن تنسخ جواب الرسالة التي في الكود.

الفحوص

5 فحوص
  1. يسترجع المفتاح من رسالة مخفيّة
  2. يفكّ رسالة مخفيّة أخرى
  3. يميّز الجملة الإنجليزية من رموز تشبه الحروف
  4. يعرف الرسالة غير المشفّرة
  5. يفكّ رسالة فيها أرقام إلى محارف مطبوعة
03

تلميحات

0/3
دروس المسارأتممت 0 من 6

ستّة تحدّيات متدرّجة تعكس فيها دالة تحقّق أو بايتكود لتستخرج المفتاح بكودك أنت لا بنسخه.

مستواه متقدّم، وفيه 6 دروس مجموع مدّتها ساعتان.

main.py
المخرجاتPython (Pyodide)

نحمّل بيئة Python الآن. يحدث هذا مرّة واحدة فقط، ثم يحفظها متصفّحك.

–/5

يبدأ الفحص حين تجهز البيئة.

تجد 5 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 6

ستّة تحدّيات متدرّجة تعكس فيها دالة تحقّق أو بايتكود لتستخرج المفتاح بكودك أنت لا بنسخه.

مستواه متقدّم، وفيه 6 دروس مجموع مدّتها ساعتان.