Сетевой API управления BlackBox'ом v1
BlackBox слушает 1900й UDP-порт (UPNP/SSDP) и выполняет не только поступающие SSDP-команды, но и дополнительные команды собственного протокола, позволяющие получать содержимое его внутренней памяти (Flash-ROM, SRAM и DRAM), модифицировать состояние RAM и Flash (в т.ч. прошивать новые версии управляющей программы), запускать встроенные или временно загруженные (в RAM) программы.BlackBox также принимает UDP-команды на 161м порту (SNMP), но набор команд ограничен статистическими командами.
Отправка команд
Каждая команда посылается в виде отдельного UDP-пакета на 1900й порт по IPv4-адресу, присвоенному BlackBox'у по DHCP, назначенному предыдущими командами или по multicast-адресу 239.255.255.250 (в последнем случае команда будет выполнена всеми BlackBox'ами в локальной сети одновременно). Ответ также состоит из одного пакета, отправляемого по тому unicast-адресу и порту, с которого BlackBox получил запрос.Формат команд
UDP-пакет включает имя команды и список её параметров. Имя команды — строка со счетчиком (байт длины и текст имени в кодировке ASCII без нуля в конце). Параметры — 4х-байтовые целые числа в LE-формате либо массивы переменной длины. Длина массива задается в предшествующем массиву 4х-байтовом числе. Выравнивание на границу слова не используется.Команды
BB_VERSION
Параметры: нетВозвращает: версию встроенного ПО (строка)
BB_@
Параметры: адрес переменнойВозвращает: значение переменной
Адрес — любое число, поэтому в общем случае можно получить значение 4х байт по любому адресу в устройстве, в т.ч. значения управляющих портов (регистров встроенных в контроллер устройств и портов в/в). При обращении к недействительному адресу произойдет аппаратное исключение — ошибка доступа к памяти.
BB_!
Параметры: новое значение переменной, адрес переменнойВозвращает: старое значение переменной
BB_M@
Параметры: адрес области памяти, длина области памятиВозвращает: данные указанной области памяти (максимум 1Кб)
BB_M!
Параметры: адрес области памяти, длина области памяти, новые данные для этой области памятиВозвращает: строку "OK", если данные удалось записать без аппаратных исключений
Адрес должен относиться к RAM или управляющим буферам устройства.
BB_FLASH!
Параметры: адрес области памяти, длина области памяти, новые данные для этой области памятиВозвращает: строку "OK", если данные удалось прошить, "ERROR" в противном случае
Адрес должен относиться к FLASH. Длина максимум 1Кб.
BB_FLASH0!
Параметры: адрес области памятиВозвращает: строку "OK", если команда выполнена успешно, "ERROR" в противном случае
Очистка (установка в 0xFF) всех ячеек в 1Кб-странице встроенной в процессор flash-памяти. Адрес должен относиться к FLASH и быть выровненным на границу 1Кб.
BB_EXECUTE
Параметры: адрес области памятиВозвращает: результат (вершину стека) выполнения программы по указанному адресу
BB_CHKSUM
Параметры: адрес области памяти, длина области памятиВозвращает: контрольная сумма области памяти (используется тот же алгоритм контрольной суммы, что и в TCP/IP).
BB_UVARS
Параметры: нетВозвращает: пул глобальных переменных (значения всех переменных в одном пакете)
BB_TIMERS
Параметры: нетВозвращает: UptimeTickCount, WaitTickCount — общее время (в 100Гц тиках) после старта и время простоя
BB_ARP_SP
Параметры: нетВозвращает: нет
Включает режим ARP-spoofing'а — на любой ARP-запрос BlackBox будет отвечать своим IP-адресом. Можно использовать для испытания подверженности ЛС подобным атакам.
BB_ARP_NSP
Параметры: нетВозвращает: нет
Выключает режим ARP-spoofing'а.
Ниже перечислены вызовы, добавленные в HonixBox:
BB_FIND
Параметры: строка с байтовым счетчикомВозвращает: адрес функции с именем, заданным переданной строкой, либо ноль, если такой нет.
BB_ALLOCATE
Параметры: размер (до 8Мб)Возвращает: адрес выделенной области памяти заданного размера или 0, если память не может быть выделена.
BB_EVALUATE
Параметры: строка с байтовым счетчиком (текст программы на Форте).Возвращает: строку, содержащую текстовый вывод — результат выполнения переданной программы (если использовались команды печати EMIT, TYPE, DUMP и т.д.).