
Strumento di debug hardware di basso livello e valutazione della sicurezza per le interfacce AHB ASPEED BMC. Sonda le interfacce PCIe, LPC e UART per leggere/scrivere firmware, RAM e memoria BMC per test di sicurezza della piattaforma.
NON USARE QUESTO STRUMENTO SE NON HAI COMPRESO I SUOI COMPORTAMENTI NEL CONTESTO DELLA TUA MACCHINA TARGET.
Questo strumento interviene su interfacce hardware e firmware di basso livello della tua macchina. In particolare, l'atto di sondare implica incertezza sulle conseguenze se il dispositivo target non è il dispositivo che ci aspettavamo di trovare.
L'uso di questo strumento può causare instabilità, crash o guasti critici della macchina target.
I BMC ASPEED hanno diverse modalità di funzionamento implicite:
Per supportare 1 e 2, il BMC espone funzionalità su diverse delle sue interfacce slave che consentono all'host di accedere al BMC ed eseguire operazioni arbitrarie nel suo spazio di indirizzi fisico.
Le interfacce principali sono collegate sia al bus PCIe sia al bus LPC, poiché uno dei due potrebbe non essere collegato alla CPU host in un dato progetto di piattaforma.
Anche la modalità 3 è tipicamente usata, ma per gli AST2400 e gli AST2500 l'hardware è configurato per le modalità 1 e 2 all'avvio a freddo. Pertanto, l'onere ricade sugli sviluppatori di firmware BMC per garantire che tutte le interfacce siano protette se desiderano mantenere riservatezza, integrità e disponibilità dei dati a riposo del BMC e degli ambienti di esecuzione.
PCIe VGA P2A: un'interfaccia MMIO PCIe che fornisce un accesso AHB arbitrario tramite una finestra scorrevole da 64kiB
iLPC2AHB: un dispositivo logico SuperIO che fornisce accesso AHB arbitrario
Debug UART: una shell di debug UART fornita dall'hardware con accesso AHB arbitrario
X-DMA: accesso arbitrario al M-Bus
Dispositivo PCIe BMC: un insieme di interfacce MMIO PCIe fisse che forniscono accesso AHB limitato tramite finestre da 4kiB
LPC2AHB: un mapping controllato dal BMC dei cicli LPC FW sull'AHB
Supporta attualmente l'uso delle interfacce P2A, iLPC2AHB, LPC2AHB e Debug UART
Sonda la disponibilità di tutte le interfacce tramite qualunque interfaccia disponibile
Console BMC in-band dall'host
Riflashare o dumpare il firmware di un BMC in esecuzione dall'host
Leggere e scrivere la RAM del BMC
Supporta anche l'interfaccia Linux /dev/mem per l'esecuzione sul BMC stesso
Lo strumento compila per più architetture e almeno le seguenti sono state testate:
Per compilare è sufficiente eseguire make, mentre la compilazione incrociata si esegue impostando CROSS_COMPILE nell'ambiente di make, ad esempio:
$ make CROSS_COMPILE=powerpc64le-linux-gnu-
$ ./doit
Not enough arguments
Usage:
./doit probe [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit ilpc read ADDRESS
./doit ilpc write ADDRESS VALUE
./doit p2a vga read ADDRESS
./doit p2a vga write ADDRESS VALUE
./doit debug read ADDRESS INTERFACE [IP PORT USERNAME PASSWORD]
./doit debug write ADDRESS VALUE INTERFACE [IP PORT USERNAME PASSWORD]
./doit devmem read ADDRESS
./doit devmem write ADDRESS VALUE
./doit console HOST_UART BMC_UART BAUD USER PASSWORD
./doit read firmware
./doit read ram
./doit write firmware
./doit replace ram MATCH REPLACE
./doit reset TYPE [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc read ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc erase ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
./doit sfc fmc write ADDRESS LENGTH [INTERFACE [IP PORT USERNAME PASSWORD]]
$ ./doit probe --require confidentiality digi,portserver-ts-16 <IP> <PORT> <USER> <PASSWORD>
Connecting to Digi Portserver TS 16 at <IP>:23
Logging into Digi Portserver TS
Configuring binary mode on port 4
Resetting port 4
Connecting to BMC console at <IP>:2104
Entering debug mode
Initialised Debug UART AHB interface
Performing interface discovery via Debug UART
Exiting debug mode
Have SuperIO: Yes
iLPC2AHB Bridge: Read-only
Have VGA PCIe device: Yes
Have MMIO on VGA device: Yes
P2A write filter state:
0x00000000-0x0fffffff (Firmware): Read-write
0x10000000-0x1fffffff (SoC IO): Read-write
0x20000000-0x3fffffff (Flashes): Read-write
0x40000000-0x5fffffff (Reserved): Read-write
0x60000000-0x7fffffff (LPC Host): Read-write
0x80000000-0xffffffff (DRAM): Read-write
Have X-DMA on VGA device: Yes
Have BMC PCIe device: No
X-DMA is unconstrained: No
Have debug UART: Yes
Debug UART enabled on: UART5
$ echo $?
1
$