
Низкоуровневый инструмент для отладки оборудования и оценки безопасности интерфейсов ASPEED BMC AHB. Зондирует интерфейсы PCIe, LPC и UART для чтения/записи прошивки, ОЗУ и памяти BMC для тестирования безопасности платформы.
НЕ ИСПОЛЬЗУЙТЕ ЭТОТ ИНСТРУМЕНТ, ЕСЛИ ВЫ НЕ ПОНЯЛИ ЕГО ПОВЕДЕНИЕ В КОНТЕКСТЕ ВАШЕЙ ЦЕЛЕВОЙ МАШИНЫ.
Этот инструмент взаимодействует с низкоуровневыми аппаратными и микропрограммными интерфейсами вашей машины. В частности, процесс зондирования подразумевает неопределённость последствий, если целевое устройство не является тем устройством, которое мы надеялись найти.
Использование этого инструмента может привести к нестабильности, сбоям или критическим отказам целевой машины.
ASPEED BMC имеют несколько неявных режимов работы:
Для обеспечения режимов 1 и 2 BMC предоставляет функции на нескольких своих подчинённых интерфейсах, которые позволяют хосту проникать в BMC и выполнять произвольные операции в его физическом адресном пространстве.
Значимые интерфейсы расположены как на шинах PCIe, так и LPC, так как в данной конструкции платформы к хосту может быть подключена только одна из них.
Режим 3 также обычно используется, но для AST2400 и AST2500 оборудование на холодном старте настраивается на режимы 1 и 2. Таким образом, ответственность за обеспечение конфиденциальности, целостности и доступности хранимых данных BMC и сред выполнения лежит на разработчиках прошивок BMC.
PCIe VGA P2A: интерфейс PCIe MMIO, обеспечивающий произвольный доступ к AHB через скользящее окно размером 64 КБ
iLPC2AHB: логическое устройство SuperIO, обеспечивающее произвольный доступ к AHB
Debug UART: предоставляемая аппаратно UART-отладочная оболочка с произвольным доступом к AHB
X-DMA: произвольный доступ к M-Bus
PCIe BMC device: набор фиксированных интерфейсов PCIe MMIO, обеспечивающих ограниченный доступ к AHB через окна размером 4 КБ
LPC2AHB: управляемое BMC отображение циклов LPC FW на AHB
В настоящее время поддерживается использование интерфейсов P2A, iLPC2AHB, LPC2AHB и Debug UART
Зондирует доступность всех интерфейсов через любой доступный интерфейс
Внутренняя консоль BMC с хоста
Перепрошивка или дамп прошивки работающего BMC с хоста
Чтение и запись ОЗУ BMC
Также поддерживает интерфейс Linux /dev/mem для выполнения на самом BMC
Инструмент компилируется для нескольких архитектур, по крайней мере следующие были протестированы:
Сборка выполняется командой make, а кросс-компиляция — установкой переменной CROSS_COMPILE в среде make, например:
$ 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
$