
أداة تحليل البرامج الثابتة
Binwalk هي أداة سريعة وسهلة الاستخدام لتحليل صور البرامج الثابتة (firmware) وهندستها عكسياً واستخراجها.
وُجد هذا الفرع (fork) لإصلاح بعض المشكلات العالقة في binwalk v2 وللحفاظ عليه بحالة جيدة بشكل عام. وقد أدّى غرضه في مساعدة المستخدمين ومُعبّئي التوزيعات على حد سواء. ومع ذلك، وبما أن المؤلف الأصلي أعاد مؤخراً كتابة binwalk بلغة Rust وأصبح قيد التطوير النشط مرة أخرى، فلا داعي للإبقاء على صيانة binwalk v2 بعد الآن. يجب على المستخدمين والمساهمين الانتقال إلى binwalk v3. توفر هذه النسخة الجديدة أيضاً مكتبة بلغة Rust، انظر https://github.com/ReFirmLabs/binwalk/wiki/Using-the-Rust-Library.
ونتيجةً لذلك، سيصبح هذا المستودع فعلياً في نهاية الدعم (EOL) بتاريخ 12/12/2025، وعندها قد تتم أرشفة هذا المستودع أو إزالته.
هذا فرع (fork) من الكود الأصلي الخاص بـ ReFirmLabs. تتم صيانة هذا الفرع بواسطة المجتمع، ولا توجد أي علاقة بين القائمين على صيانة هذا الفرع والمؤلفين الأصليين أو الشركة الأصلية (رغم أننا نقدر عملهم كثيراً).
إذا كنت ترغب في المساهمة، فلا تتردد في فتح issues أو pull requests، أو حتى طلب الانضمام إلى المستودع للمساعدة في مراجعة ودمج PR.
يبدو أن هناك بديلاً جيد الصيانة يُدعى unblob. ووفقاً لبعض التقارير، فإنه يمتلك قدرات استخراج أفضل (قادر على استخراج بيانات أكثر وبسرعة أكبر). الجانب السلبي هو أنه لا يكتشف عدداً كبيراً من أنواع الملفات مثل binwalk. وهناك فرق مهم آخر يتمثل في عدد التبعيات (dependencies): فبينما لا يتطلب binwalk أي تبعيات (فهي اختيارية)، يعتمد unblob على حوالي 20 حزمة.
قبل الإصدار Binwalk v2.3.3، كانت الأرشيفات المستخرجة قد تُنشئ روابط رمزية (symlinks) تشير إلى أي مكان في نظام الملفات، مما قد يؤدي إلى هجوم اجتياز الدليل (directory traversal) إذا قامت أدوات استخراج لاحقة باتباع هذه الروابط الرمزية بشكل أعمى. وبشكل عام، يستخدم Binwalk العديد من أدوات الاستخراج الخارجية التابعة لجهات ثالثة والتي قد تحتوي على ثغرات أمنية غير مصححة؛ يسمح الإصدار Binwalk v2.3.3 والإصدارات الأحدث بتشغيل أدوات الاستخراج الخارجية كمستخدم غير مميز (unprivileged user) باستخدام خيار سطر الأوامر run-as (وهذا يتطلب تشغيل Binwalk نفسه بصلاحيات الجذر). بالإضافة إلى ذلك، يرفض الإصدار Binwalk v2.3.3 والإصدارات الأحدث تنفيذ الاستخراج كمستخدم جذر ما لم يتم تحديد --run-as=root.
مزيد من المعلومات على الويكي