الدرس 5 من 6

السجلّ المخفي

هدف الدرس

المشي على سجلّات بأطوال متغيّرة

01

الشرح

هذه كتلة بايتات من ملف بيانات مخترَع. أوّل بايت فيها عدد السجلّات، ثم تأتي السجلّات متتالية، وكل سجلّ يبدأ ببايت نوعه (tag)، ثم بايت طوله، ثم بياناته بذلك الطول:

count | tag len data... | tag len data... | ...

والسجلّ الذي نوعه 0xFF يحمل العلم. وأطوال السجلّات تختلف، فلا تعرف أين يبدأ سجلّ حتى تقرأ طول الذي قبله.

02

المطلوب

اكتب الدالة extract_flag(blob) لتقرأ السجلّات بالترتيب وتُرجع بيانات السجلّ الذي نوعه 0xFF بايتات، أو None إن لم يكن في الكتلة سجلّ كهذا. والفحص يعطيها كتلًا أخرى بسجلّات مختلفة.

الفحوص

5 فحوص
  1. يستخرج العلم من أوّل سجلّ
  2. يجد العلم في السجلّ الثالث
  3. يتعامل مع سجلّات فارغة وطويلة
  4. لا ينخدع ببايت 0xFF داخل البيانات
  5. يُرجع None حين لا سجلّ للعلم
03

تلميحات

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

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

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

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

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

–/5

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

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

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

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

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