Регистрация...

HonixBox // API_1

recent wikipost // (v3)
HonixBox Подключение Драйверы Настройка HB-статистика Обновления

Сетевой API управления BlackBox'ом v1 и HonixBox'ом

BlackBox слушает 1900й UDP-порт (UPNP/SSDP) и выполняет не только поступающие SSDP-команды, но и дополнительные команды собственного протокола, позволяющие получать содержимое его внутренней памяти (Flash-ROM, SRAM и DRAM), модифицировать состояние RAM и Flash (в т.ч. прошивать новые версии управляющей программы), запускать встроенные или временно загруженные (в RAM) программы.

BlackBox также принимает UDP-команды на 161м порту (SNMP), но набор команд ограничен статистическими командами.

HonixBox дополнительно может выполнять любые команды встроенного Форта на 23м TCP-порту (подключение телнетом).

Отправка команд

Каждая команда посылается в виде отдельного 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 и т.д.).

Другие имена

Можно запускать на выполнение (напрямую по имени, минуя BB_EXECUTE) любую другую команду встроенного Форта (более 400 в BlackBox и более 1000 в HonixBox), подготовив с помощью перечисленных выше команд исходные данные для них.
 
Комментарии к версии 1 (27.02.2012 20:51) [~web] 9e41d14b
Комментарии к версии 2 (27.02.2012 20:57) [~web] a97da57b
Комментарии к этой версии (27.02.2012 21:00) [~web] 1741e7ed
Работает на Eserv/5.05555 (05.06.2016)