HAL È un ambiente integrato per l'analisi dell'elenco dei circuiti elettronici digitaliè è un framework completo di reverse engineering e manipolazione per netlist a livello di porta che si concentrano su efficienza, scalabilità e portabilità. HAL viene fornito con un sistema di plugin completo che permette di introdurre funzionalità arbitrarie nel kernel.
L'interessante di HAL è che permette di vedere e analizzare il circuito nella GUI e di manipolarlo utilizzando script Python. Negli script, è possibile utilizzare la "libreria standard" allegata di funzioni che implementano operazioni di teoria dei grafi, utile per il reverse engineering di circuiti elettronici digitali (utilizzando queste funzioni, è possibile rilevare euristicamente vari design pattern e rimuovere semplici offuscamenti con uno script su più righe) .
La biblioteca include anche classi per la gestione dei progetti nell'IDE, che può essere utilizzato durante lo sviluppo di plug-in per l'analisi e l'ispezione della connessione. I parser sono forniti per i linguaggi di descrizione hardware VHDL e Verilog.
Questo ambiente è sviluppato da diverse università tedesche, scritto in C ++, Qt e Python e rilasciato con licenza MIT.
Delle sue caratteristiche principali spiccano i seguenti:
- Rappresentazione grafica naturale diretta degli elementi della netlist e delle loro connessioni.
- Supporto per librerie di porte personalizzate.
- Alte prestazioni grazie al kernel C ++ ottimizzato
- Modularità: scrivi i tuoi plugin C ++ per un'efficiente analisi e manipolazione degli elenchi di rete (ad esempio, utilizzando algoritmi grafici)
- Una GUI ricca di funzionalità che consente l'ispezione visiva dell'elenco di reti e l'analisi interattiva
- Una shell Python incorporata per interagire in modo esplorativo con gli elementi della netlist e per interagire con i plugin dalla GUI
Informazioni su HAL versione 2.0.0
Ora questo ambiente è nella sua versione 2.0.0 in quale Gli analizzatori VHDL e Verilog sono stati migliorati, insieme al sistema di compilazione CMake che è stato aggiornato per utilizzare configurazioni basate sugli obiettivi.
anche si evidenzia che è stato aggiunto il supporto per la gerarchizzazione e la modularizzazione, così come un'ulteriore vista di isolamento e un nuovo sistema di design.
Delle altre modifiche menzionato in questa nuova versione:
- Modifiche al sistema bibliotecario della porta
- BDD sostituito con funzioni booleane
- Cambiamenti importanti nella rappresentazione interna dei tipi di cancello
- Consente la differenziazione tra LUT, flip-flop, latch e tipi di gate combinatori
- In Latch e Flip-flop è ora possibile specificare ingressi sequenziali speciali come abilitazione, clock, configurazione e ripristino.
- Librerie di gate JSON sostituite con file di libertà
- Sistema di plugin semplificato
- Libreria Igraph inclusa
- Revisione principale della GUI
Come installare HAL su Ubuntu e derivati?
Per coloro che sono interessati a installare questo framework di reverse engineering per circuiti elettronici, possono farlo seguendo le istruzioni che condividiamo di seguito.
HAL può essere installato in due modi in Ubuntu e derivati, il primo ci sta supportando dal repository dell'applicazione (Valido solo per Ubuntu 18.04).
Questo possiamo aggiungerlo al sistema con l'aiuto di un terminale (Puoi aprirlo con i tasti di scelta rapida Ctrl + Alt + T) e in esso digiteremo i seguenti comandi.
Per prima cosa aggiungeremo dal repository con:
sudo add-apt-repository ppa:sebastian-wallat/hal
Aggiorniamo i pacchetti e l'elenco dei repository con:
sudo apt-get update
E procediamo all'installazione dell'applicazione sul nostro sistema digitando il seguente comando:
sudo apt install hal-reverse
L'altro metodo di installazione è la compilazione dell'applicazione nel sistema. Per questo dobbiamo scaricare il codice HAL con l'aiuto di un terminale.
Per prima cosa digiteremo:
git clone https://github.com/emsec/hal.git && cd hal
Ora installeremo le dipendenze necessarie:
./install_dependencies.sh
E procediamo a compilare il codice con:
mkdir build && cd build cmake .. make
Terminata la compilazione, si procede ad eseguire l'installazione con:
make install
Infine può consultare la documentazione e altre informazioni su HAL nel seguente link