
NÃO USE ESTA FERRAMENTA SE VOCÊ NÃO COMPREENDEU SEUS COMPORTAMENTOS NO CONTEXTO DA SUA MÁQUINA ALVO.
Esta ferramenta manipula interfaces de hardware e firmware de baixo nível da sua máquina. Particularmente, o ato de sondar implica incerteza sobre as consequências se o dispositivo alvo não for o dispositivo que esperávamos encontrar.
O uso desta ferramenta pode levar a instabilidade, travamentos ou falhas críticas da máquina alvo.
Os BMCs ASPEED possuem vários modos implícitos de operação:
Para atender aos modos 1 e 2, o BMC expõe recursos em várias de suas interfaces escravas que permitem ao host acessar o BMC e realizar operações arbitrárias no seu espaço de endereçamento físico.
As interfaces significativas estão ligadas aos barramentos PCIe e LPC, pois qualquer um deles pode não estar conectado à CPU do host em um determinado projeto de plataforma.
O modo 3 também é tipicamente usado, mas para os AST2400 e AST2500s o hardware é configurado para os modos 1 e 2 no boot a frio. Assim, cabe aos desenvolvedores de firmware do BMC garantir que todas as interfaces estejam seguras se desejarem manter a confidencialidade, integridade e disponibilidade dos dados em repouso e dos ambientes de tempo de execução do BMC.
PCIe VGA P2A: uma interface MMIO PCIe que fornece acesso AHB arbitrário através de uma janela deslizante de 64kiB
iLPC2AHB: um dispositivo lógico SuperIO que fornece acesso AHB arbitrário
Debug UART: um shell de depuração UART fornecido por hardware com acesso AHB arbitrário
X-DMA: acesso arbitrário ao barramento M-Bus
Dispositivo PCIe BMC: uma coleção de interfaces MMIO PCIe fixas que fornecem acesso AHB restrito através de janelas de 4kiB
LPC2AHB: um mapeamento controlado pelo BMC de ciclos LPC FW no AHB
Atualmente suporta o uso das interfaces P2A, iLPC2AHB, LPC2AHB e Debug UART
Sonda a disponibilidade de todas as interfaces através de qualquer interface disponível
Console BMC in-band a partir do host
Regrava ou despeja (dump) o firmware de um BMC em execução a partir do host
Lê e escreve a RAM do BMC
Também suporta a interface Linux /dev/mem para execução no próprio BMC
A ferramenta compila para múltiplas arquiteturas, e pelo menos as seguintes foram testadas:
Compilar é uma questão de executar make, enquanto a compilação cruzada é realizada definindo
CROSS_COMPILE no ambiente do make, por exemplo:
$ 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
$