HAL Това е интегрирана среда за анализ на списъка с цифрови електронни схемиТова е цялостна обратна инженерна и манипулационна рамка за мрежови списъци на ниво врата, който се фокусира върху ефективността, мащабируемостта и преносимостта. HAL идва с приставка система пълен което позволява да се въведат произволни функционалности в ядрото.
Интересното от HAL е, че позволява да се види и анализира веригата в GUI и да се манипулира с нея използване на python скриптове. В скриптове можете да използвате приложената "стандартна библиотека" от функции, които реализират операции по теория на графовете, полезни за цифрови електронни схеми с обратен инженеринг (използвайки тези функции, можете евристично да откривате различни дизайнерски модели и да премахвате прости запушвания със скрипт на множество редове) .
Библиотека включва и класове за управление на проекти в IDE, които могат да се използват при разработването на приставки за проверка и анализ на връзките. Предлагат се парсери за езиците за описание на хардуера VHDL и Verilog.
Тази среда е разработена от няколко германски университета, написана на C ++, Qt и Python и издадена под лиценза MIT.
От основните му характеристики открояват се следните:
- Насочено естествено графично представяне на елементи от netlist и техните връзки.
- Поддръжка за персонализирани библиотеки на врати.
- Висока производителност благодарение на оптимизираното ядро C ++
- Модулност - Напишете свои собствени плъгини за C ++ за ефективен анализ и манипулация на списъка с мрежи (например с помощта на графични алгоритми)
- Богат на функции графичен интерфейс, който позволява визуална проверка на мрежовия списък и интерактивен анализ
- Вградена обвивка на Python за експлоративно взаимодействие с елементи от мрежовия списък и за взаимодействие с плъгини от GUI
Относно HAL версия 2.0.0
Сега тази среда е във версията си 2.0.0 в която VHDL и Verilog анализаторите бяха подобрени, заедно със системата за изграждане на CMake, която беше актуализирана, за да използва конфигурации, базирани на цели.
също подчертава се, че е добавена поддръжка за йерархизация и модуларизация, както и допълнителен изглед на изолация и нова система за проектиране.
От останалите промени споменати в тази нова версия:
- Промени в системата на библиотеката на вратите
- BDD заменен с булеви функции
- Основни промени във вътрешното представяне на типове порта
- Позволява разграничаване между LUT, джапанки, резета и комбинационни типове порта
- В резетата и джапанките вече можете да посочите специални последователни входове като активиране, часовник, конфигуриране и нулиране.
- JSON библиотеките на портата бяха заменени с файлове със свобода
- Опростена система за приставки
- Включена библиотека за играфи
- Основен преглед на GUI
Как да инсталирам HAL на Ubuntu и деривати?
За тези, които се интересуват от инсталирането на тази обратна инженерна рамка за електронни схеми, те могат да го направят, следвайки инструкциите че споделяме по-долу.
HAL може да се инсталира по два начина в Ubuntu и деривати, първият ни подкрепя от хранилището на приложението (Важи само за Ubuntu 18.04).
това можем да го добавим към системата с помощта на терминал (Можете да го отворите с клавишните комбинации Ctrl + Alt + T) и в него ще въведем следните команди.
Първо ще добавим от хранилището с:
sudo add-apt-repository ppa:sebastian-wallat/hal
Актуализираме пакетите и списъка на хранилищата с:
sudo apt-get update
И ние продължаваме да инсталираме приложението в нашата система, като напишем следната команда:
sudo apt install hal-reverse
Другият метод за инсталиране е чрез компилиране на приложението в системата. За това трябва да изтеглим HAL кода с помощта на терминал.
Първо ще напишем:
git clone https://github.com/emsec/hal.git && cd hal
Сега ще инсталираме необходимите зависимости:
./install_dependencies.sh
И ние продължаваме да компилираме кода с:
mkdir build && cd build cmake .. make
След като компилацията приключи, ние продължаваме да изпълняваме инсталацията с:
make install
Накрая може да се запознаете с документацията и друга информация за HAL В следващия линк.