Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
hal — HAL – محلل الأجهزة | Kitploit
أدوات/GitHubGitHub/emsec/hal
أمان الأنظمة المدمجةالهندسة العكسيةاختراق الأجهزةأمن الأجهزةأمان الأجهزة وإنترنت الأشياءتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليمتحليل البرامج الثابتة
GitHubemsec/hal

hal

HAL – محلل الأجهزة

81495منذ 6 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

مرحبًا بك في HAL!

Ubuntu 22.04 Ubuntu 24.04 macOS Deploy Documentation Doc: C++ Doc: Python

HAL [/hel/] هو إطار شامل للهندسة العكسية والتلاعب بقوائم التوصيل (netlists).

لقطة شاشة HAL

التنقل

  1. مقدمة
  2. تعليمات البناء
  3. دليل البدء السريع
  4. السياق الأكاديمي

مقدمة

ما هو HAL بحق الجحيم؟

تقريبًا جميع الأبحاث المتاحة حول تحليل قوائم التوصيل تعمل على تمثيل قائم على الرسم البياني لقائمة التوصيل قيد الفحص. في جوهره، يوفر HAL بالضبط ذلك: إطار لتحليل قوائم التوصيل من مصادر عشوائية، مثل FPGAs أو ASICs، إلى تمثيل قائمة توصيل قائم على الرسم البياني وتوفير الأدوات المدمجة اللازمة لاجتياز وتحليل البوابات (gates) والشبكات (nets) المضمنة.

رؤيتنا هي أن يصبح HAL المعادل لأدوات مثل IDA أو Ghidra في مجال الهندسة العكسية للأجهزة. نريد أن يمكن HAL الباحثين والمحللين من وجود خط أساس مشترك لتحسين قابلية تكرار نتائج الأبحاث وتجريد المهام الأساسية المتكررة مثل تحليل قوائم التوصيل إلخ.

  • أداء عالٍ بفضل نواة C++ المحسّنة
  • مرونة من خلال روابط Python المدمجة
  • نمطية عبر نظام الإضافات (plugin system) بلغة C++
  • استقرار مضمون عبر مجموعة اختبارات غنية

HAL يُطوَّر بنشاط من قبل مجموعة الأمان المضمنة (Embedded Security) في معهد ماكس بلانك للأمن والخصوصية. بالإضافة إلى العديد من المشاريع البحثية، يُستخدم أيضًا في محاضرتنا الجامعية "مقدمة في الهندسة العكسية للأجهزة" في جامعة الرور في بوخوم (RUB).

لاحظ أن لدينا أيضًا مجموعة من دوائر البنشمارك (benchmark circuits) الحديثة والمتطورة لتقييم تقنيات الهندسة العكسية لقوائم التوصيل متاحة في مستودع منفصل.

الإضافات المرفقة

يحتوي هذا المستودع على مجموعة مختارة من الإضافات المنقحة:

  • واجهة المستخدم الرسومية (GUI): واجهة رسومية غنية بالميزات تسمح بالفحص البصري لقوائم التوصيل والتحليل التفاعلي
    • تكامل أصلي لصدفة Python مع الوصول إلى روابط HAL الخاصة بـ Python
    • عزل بوابات أو وحدات معينة لفحص خالٍ من الفوضى
    • اجتياز تفاعلي لقوائم التوصيل
    • أدوات مفصلة بمعلومات عن جميع جوانب قائمة التوصيل المفحوصة
  • محاكي قوائم التوصيل: محاكٍ لأجزاء عشوائية من قائمة التوصيل المحملة
  • تحليل تدفق البيانات: إضافة تحليل تدفق البيانات DANA التي تستعيد المسجلات عالية المستوى في قائمة توصيل غير منظمة
  • خوارزميات الرسم البياني: تكامل igraph للوصول المباشر إلى الخوارزميات الشائعة من نظرية الرسوم البيانية
  • صدفة Python: إضافة سطر أوامر لتشغيل صدفة Python محملة مسبقًا بروابط HAL الخاصة بـ Python
  • محللات VHDL و Verilog: يضيف دعمًا لتحليل ملفات VHDL و Verilog كتنسيقات إدخال لقوائم التوصيل
  • محلل Liberty: يضيف دعمًا لمكتبات البوابات العشوائية بتنسيق مكتبة البوابات القياسي liberty
  • كتّاب VHDL و Verilog: يضيف دعمًا لتسلسل قائمة توصيل (معدلة) إلى ملفات VHDL أو Verilog قابلة للتوليف
  • مكتبات البوابات: يضيف دعمًا لمكتبات البوابات XILINX Unisim و Simprim

التوثيق

توثيق شامل لميزات HAL من منظور المستخدم متاح في ويكيبيديا. بالإضافة إلى ذلك، نقدم توثيقًا كاملاً لـ API C++ و API Python.

تعليمات البناء

للحصول على تعليمات حول كيفية بناء HAL، يرجى الرجوع إلى الصفحة المخصصة في ويكيبيديا.

دليل البدء السريع

قم بتثبيت HAL أو بنائه وابدأ الواجهة الرسومية عبر hal -g. يمكنك سرد جميع الخيارات المتاحة عبر hal [--help|-h]. لقد أدرجنا بعض المشاريع الأمثلة في المجلد الفرعي examples. لبدء العمل مع مشروع مثال، تحتاج إلى استيراده عبر Import Project من القائمة الرئيسية أو عن طريق إسقاط الملف المضغوط في منطقة OPEN PROJECT في شاشة الترحيب. عند القيام بذلك، سيظهر منبثق يطلب دليلاً بأذونات الكتابة حيث سينشئ HAL دليل المشروع ويفك ضغط الملفات. لا تستخدم أدوات خارجية لفك الضغط حيث يتم إجراء تعديلات بحيث يتم العثور على قائمة التوصيل ومكتبة البوابات في المرة التالية التي يتم فيها فتح المشروع.

في حال كنت تريد فتح قائمة توصيل Verilog أو VHDL الخاصة بك، يجب عليك تشغيل Import Netlist بدلاً من ذلك. لن يعمل هذا إلا إذا كانت هناك مكتبة بوابات مطابقة في plugins/gate_libraries/definitions أو قمت بتوفير مكتبة البوابات يدويًا. للحصول على تعليمات حول إنشاء مكتبة البوابات الخاصة بك ودروس أخرى مفيدة، ألق نظرة على الويكي.

يشير كود المثال التالي إلى مثال fsm.

استخدم صدفة Python المدمجة أو نافذة البرنامج النصي Python للتفاعل. كلاهما يتميز بميزة الإكمال التلقائي (المحدودة).

دعنا ندرج جميع جداول البحث (LUTs) ونطبع دوالهم البوليانية:

root@kitploit:~
for gate in netlist.get_gates():
    if "LUT" in gate.type.name:
        print("{} (id {}, type {})".format(gate.name, gate.id, gate.type.name))
        print("  {}-to-{} LUT".format(len(gate.type.input_pins), len(gate.type.output_pins)))
        boolean_functions = gate.boolean_functions
        for name in boolean_functions:
            print("  {}: {}".format(name, boolean_functions[name]))
        print("")

بالنسبة لمثال قائمة التوصيل fsm.vhd، سيطبع هذا:

root@kitploit:~
FSM_sequential_STATE_REG_0_i_3_inst (id 4, type LUT6)
  6-to-1 LUT
  O: (!I1 & !I2 & I3 & !I4 & I5) | (I0 & !I2) | (I0 & I1) | (I0 & I3) | (I0 & I4) | (I0 & I5)

FSM_sequential_STATE_REG_0_i_2_inst (id 3, type LUT6)
  6-to-1 LUT
  O: (I2 & I3 & I4 & !I5) | (I1 & !I5) | (I1 & !I4) | (I1 & !I3) | (I0 & I1) | (I1 & I2)

FSM_sequential_STATE_REG_1_i_3_inst (id 6, type LUT6)
  6-to-1 LUT
  O: (!I1 & I4 & !I5) | (!I1 & !I3 & I4) | (I0 & I4 & !I5) | (I0 & !I3 & I4) | (!I1 & I2 & I4) | (I0 & I2 & I4) | (!I2 & !I5) | (!I2 & !I4) | (!I2 & !I3) | (!I0 & !I4) | (!I0 & !I2) | (!I0 & !I1) | (I1 & !I4) | (I1 & !I2) | (I0 & I1) | (I3 & !I5) | (I3 & !I4) | (!I0 & I3) | (I1 & I3) | (I2 & I3) | (!I4 & I5) | (!I3 & I5) | (!I0 & I5) | (I1 & I5) | (I2 & I5)

FSM_sequential_STATE_REG_1_i_2_inst (id 5, type LUT6)
  6-to-1 LUT
  O: (!I0 & I1 & !I2 & I3 & I4 & !I5) | (I0 & !I2 & I3 & I4 & I5)

OUTPUT_BUF_0_inst_i_1_inst (id 18, type LUT1)
  1-to-1 LUT
  O: !I0

OUTPUT_BUF_1_inst_i_1_inst (id 20, type LUT2)
  2-to-1 LUT
  O: (I0 & !I1) | (!I0 & I1)

المساهمة

نرحب بمساهمتك في تطوير HAL. لا تتردد في تقديم طلب سحب (pull request) جديد عبر github. يرجى النظر في تشغيل الفحوصات الثابتة + clang format قبل ذلك. يمكنك أيضًا تثبيت هذه الفحوصات كخطافات git قبل أي إيداع.

تشغيل الفحوصات الثابتة و clang format محليًا

لتثبيت خطاف clang-format، قم بتثبيت git-hooks ثم شغّل:

git hooks --install

ابدأ بناء Docker عبر: docker-compose run --rm hal-build

توليد سجل التغييرات (Changelog)

git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%s" --no-merges

السياق الأكاديمي

إذا كنت تستخدم HAL في سياق أكاديمي، يرجى الاستشهاد بالإطار باستخدام المرجع أدناه:

root@kitploit:~
@misc{hal,
    author = {{Embedded Security Group}},
    publisher = {{Max Planck Institute for Security and Privacy}},
    title = {{HAL - The Hardware Analyzer}},
    year = {2019},
    howpublished = {\url{https://github.com/emsec/hal}},
}

لا تتردد أيضًا في تضمين الورقة الأصلية. ومع ذلك، نلاحظ أن HAL قد تغير بشكل كبير منذ نموذجه الأولي الذي تم وصفه في الورقة. وبالتالي، نفضل الاستشهاد بالإدخال أعلاه.

root@kitploit:~
@article{2018:Fyrbiak:HAL,
    author = {Marc Fyrbiak and Sebastian Wallat and Pawel Swierczynski and Max Hoffmann and Sebastian Hoppach and Matthias Wilhelm and Tobias Weidlich and Russell Tessier and Christof Paar},
    title = {{HAL-} The Missing Piece of the Puzzle for Hardware Reverse Engineering, Trojan Detection and Insertion},
    journal = {IEEE Transactions on Dependable and Secure Computing},
    year = {2018},
    publisher = {IEEE},
    howpublished = {\url{https://github.com/emsec/hal}}
}

للحصول على نظرة عامة على التحديات التي شرعنا في حلها باستخدام HAL، لا تتردد في مشاهدة محادثتنا في مؤتمر 36C3.

الترخيص

HAL مرخص بموجب رخصة MIT لتشجيع التعاون مع المجموعات البحثية الأخرى والمساهمات من الصناعة. يرجى الرجوع إلى ملف الترخيص لمزيد من المعلومات.

إخلاء مسؤولية

HAL هو برنامج بجودة ألفا على الأكثر. استخدمه على مسؤوليتك الخاصة. نحن لا نشجع أي استخدام ضار لأداتنا.

تنزيل الأداة