يستخدم الجهاز مجموعة شرائح RTL8197DN ، باستخدام مجموعة تعليمات MIPS ذات الأجنبية الكبيرة. وفقًا لبحثي ، يبدو أن جوهر MIPS الفعلي هو lexra (ليتم التحقق منه).
الضغط على WPS وإعادة التعيين في نفس الوقت أثناء الإقلاع يدخل وضع تحميل التمهيد. يوفر Bootloader واجهة أمر بسيط عبر UART ، وكذلك يسمح بتحميل التحديثات عبر TFTP (انظر ./UPLOAD_UPDATE.SH ). يتم إدخال جهاز تحميل التشغيل تلقائيًا في حالة فشل التشغيل (يعمل أيضًا في وضع الاسترداد).
عند تحميل التحديث عبر TFTP ، يتم تحميله في RAM على العنوان 0x80500000. إذا كان الملف عبارة عن ملف تحديث مناسب ، فستبدأ الولادة تلقائيًا ، وإلا فإن الملف يبقى فقط في ذاكرة الوصول العشوائي ويمكن أن يتم تمييزه يدويًا باستخدام أمر FLW.
أوامر العمل المؤكدة:
يعرض الجهاز رأس UART مع رسائل تحميل التمهيد وقذيفة Linux. 38400 باود
اسم المستخدم: كلمة مرور الجذر: كل ما تم تكوينه على أنه كلمة مرور المسؤول في لوحة الويب (افتراضي: المسؤول)
كل شيء كبير إنديان. راجع ./check_update.py للحصول على برنامج نصي يحلل ملفات التحديث ، و ./make_header.py للحصول
يتم تصنيع ملف التحديث من الكتل التالية المتسلسلة معًا:
| الإزاحة | مقاس | وصف |
|---|---|---|
| 0 | 4 | نوع الملف-راجع https://github.com/jameshilliard/wecb-vz-gpl/blob/master/rtl819x/bootcode/boot/init/rtk.h لأنواع صالحة. يبدو أن الجهاز الذي لدينا فقط يستخدم "CR6C" لـ kernel و "R6CR" لـ ROUTFs (وربما "التمهيد" لـ Bootloader؟) |
| 4 | 4 | عنوان التحميل في ذاكرة الوصول العشوائي (يستخدم فقط لصورة kernel على ما يبدو؟) |
| 8 | 4 | العنوان في ذاكرة الفلاش |
| 12 | 4 | طول البيانات |
| 16 | * | بيانات |
تم التحقق من البيانات - يجب أن يكون مجموع البايتات الكبير 16 بت لجميع البايتات 0x0000 (ما لم تكن تومض قسم ملفات الويب ، والتي لا يوجد بها هذا الجهاز - في هذه الحالة يكون الاختبار 8 بت). عادة ما يتم تحقيق ذلك عن طريق إلحاق اثنين من البايتات في النهاية.
عندما يحاول جهاز تحميل التشغيل تحميل أولاً ينظر إلى ~ 4 عناوين متشددين أولاً ، ثم يتابع البحث عن الفلاش بالكامل للحصول على توقيع ، والذي يبدو أنه يشير إلى أن تخطيط الفلاش قد يكون مختلفًا على أجهزة مختلفة. تحتوي البيانات على فحص فحوصات متطابق إلى ملفات التحديث أعلاه.
انظر ./split_img.sh
| ابدأ العنوان | عنوان النهاية | رأس | وصف |
|---|---|---|---|
| 0x00000000 | 0x00006000 | - | رمز تحميل التمهيد |
| 0x00006000 | 0x00008000 | H601 (؟) | تكوين الأجهزة (عنوان MAC وما إلى ذلك) |
| 0x00008000 | 0x00010000 | compds (؟) | التكوين الافتراضي |
| 0x00010000 | 0x00018000 | compcs (؟) | التكوين الحالي |
| 0x00018000 | 0x00138000 | تحديث رأس CR6C | kernel Linux ، مسبوقة برأس مماثل لتنسيق رأس التحديث |
| 0x00138000 | 0x00327002 | رأس ملفات ملفات Squashfs ، بدءًا من HSQS | نظام ملفات الجذر. تتم إضافة البايتات الأخيرة للشيكات. |
| 0x00327002 | 0x00400000 | - | 0xff 0xff 0xff 0xff ... |