الدرس 6 من 6
التحدّي الأخير
- 25 دقيقة
- 5 فحوص
- 3 تلميحات
- إلى المطلوب
هدف الدرس
سلسلة خطوات تنتهي بالعلم
01
الشرح
هذا آخر تحدٍّ، ويجمع ما تعلّمته في المنطقة كلّها. الكتلة BLOB قطعة من ملف تنفيذي مخترَع، بين بايتاتها نصوص مطبوعة، والعلم مخبّأ خلف أربع طبقات:
- استخرج النصوص المطبوعة التي طولها أربعة محارف فأكثر.
- النصّ الذي يبدأ بـ
KEYSEED=يحمل بعده بذرة المفتاح، والمفتاح هو مجموع بايتات البذرة بالباقي 256. - النصّ الذي يبدأ بـ
DATA=يحمل بعده حمولة مرمّزة بـ base64، وترميز base64 يكتب البايتات حروفًا مطبوعة، وتعيدها الدالةbase64.b64decode(text)بايتات، ثم فكّ XOR بالمفتاح. - الحمولة بعد فكّها سجلّ يبدأ بالتوقيع
REفي بايتين، ثم طول العلم في بايتين بترتيب صغير الطرف، ثم العلم، وبعده بايتات زائدة، فاقرأ الطول واقطع العلم به ولا تعتمد على رمز نهايته.
02
المطلوب
اكتب الدالة solve(blob) لتُرجع العلم نصًّا، واحفظ علم BLOB في المتغيّر flag. والفحص يبني كتلًا أخرى ببذور وأعلام مختلفة، وقد يتغيّر فيها ترتيب النصوص.
الفحوص
5 فحوص- يحلّ كتلة مخفيّة
- يحلّ كتلة ببذرة وعلم آخرين
- لا يتأثّر بترتيب النصوص
- يقطع العلم بطوله لا برمز نهايته
- المتغيّر flag يحمل علم الكتلة BLOB