Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
bof — BOF (Boiboite Opener Framework) — это фреймворк для тестирования реализаций промышленных протоколов и устройств. | Kitploit
Инструменты/GitHubGitHub/orange-cyberdefense/bof
Безопасность IoTКартирование сетиАнализ уязвимостейЭксплуатацияБезопасность SCADA/ICSСбор информацииФаззингТестирование на ПроникновениеУтилиты и фреймворки
GitHuborange-cyberdefense/bof

bof

BOF (Boiboite Opener Framework) — это фреймворк для тестирования реализаций промышленных протоколов и устройств.

53973 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
РепозиторийСайт

BOF

BOF (Boiboite Opener Framework) — это фреймворк для тестирования реализаций полевых протоколов и устройств. Это библиотека Python 3.6+, предоставляющая средства для отправки, приёма, создания, разбора и манипулирования кадрами поддерживаемых протоколов.

В настоящее время библиотека предоставляет функции обнаружения и расширенного тестирования для KNXnet/IP, который является нашей основной задачей, но она может быть расширена на другие типы BMS или промышленных сетевых протоколов. Она также предоставляет функции многоадресного и/или сквозного обнаружения для промышленных сетей, использующих KNXnet/IP, LLDP, Profinet DCP и Modbus TCP.

Обратите внимание: воздействие на промышленные системы может иметь серьёзные последствия для людей, промышленных объектов и зданий, поэтому BOF необходимо использовать с осторожностью.

GitHub license GitHub release

Установка

Из PyPI

root@kitploit:~
pip install boiboite-opener-framework

https://pypi.org/project/boiboite-opener-framework/

Установка вручную

root@kitploit:~
git clone https://github.com/Orange-Cyberdefense/bof.git

Установите зависимости с помощью:

root@kitploit:~
pip install -r requirements.txt

Реализации протоколов используют формат Scapy.

Начало работы

BOF — это библиотека Python 3.6+, которую следует импортировать в скрипты.

root@kitploit:~
import bof
from bof.layers import profinet, knx
from bof.layers.knx import KnxPacket

Существует три способа использования BOF, и не все они доступны в зависимости от уровня:

  • Автоматизированный: импортируйте или напрямую вызывайте высокоуровневые функции из уровней. Знание протокола не требуется. Например, модуль discovery содержит несколько функций для обнаружения устройств с использованием различных промышленных сетевых протоколов.

  • Стандартный: создавайте пакеты из уровней для взаимодействия с удалёнными устройствами. Требуется базовое знание протокола.

  • Экспериментальный: играйте с пакетами, неправильно используйте протокол (с его помощью мы фаззим устройства). Конечный пользователь должен уже начать разбираться в спецификациях протокола.

Теперь вы можете начать использовать BOF!

TL;DR

Несколько способов обнаружения устройств в сети

  • Многоадресное обнаружение из модуля discovery (в настоящее время для LLDP, Profinet DCP, KNX):
root@kitploit:~
from bof.modules.discovery import *

devices = multicast_discovery(iface="eth0", verbose=True)
  • Обнаружение устройств с помощью высокоуровневой функции уровня
root@kitploit:~
from bof.layers.knx import search

devices = search()
for device in devices:
    print(device)
  • Создайте и отправьте собственный пакет обнаружения:
root@kitploit:~
from bof.layers.knx import *

pkt = KNXPacket(type="search request")
responses = KNXnet.multicast(pkt, (KNX_MULTICAST_ADDR, KNX_PORT))
for response, _ in responses:
    print(KNXPacket(response))

Отправка и приём пакетов

root@kitploit:~
from bof.layers.knx import KNXnet, KNXPacket, SID
from bof import BOFNetworkError

try:
    knxnet = KNXnet().connect("192.168.1.242", 3671)
    pkt = KNXPacket(type=SID.description_request,
                    ip_address=knxnet.source_address,
                    port=knxnet.source_port)
    pkt.show2()
    response, _ = knxnet.sr(pkt)
    response.show2()
except BOFNetworkError as bne:
    pass
finally:
    knxnet.disconnect()

Создание собственных пакетов

root@kitploit:~
from bof.layers.knx import KNXPacket, SID
from bof.layers.raw_scapy.knx import LcEMI

pkt = KNXPacket(type=SID.description_request)
pkt.ip_address = b"\x01\x01"
pkt.port = 99999 # Yes it's too large
pkt.append(LcEMI())
pkt.show2() # This may output something strange

Устройство-получатель, скорее всего, не ответит на это, но по крайней мере вы знаете, что BOF не помешает вам возиться со своими пакетами.

Взаимодействие со Scapy

BOF использует Scapy для реализации протоколов, добавляя дополнительный уровень, который преобразует код BOF в изменения пакетов и полей Scapy. Зачем? Потому что BOF может незначительно изменять или переопределять внутреннее поведение Scapy.

Для использования BOF вам не нужно уметь пользоваться Scapy, однако если вы умеете, вы также можете напрямую взаимодействовать с пакетом Scapy.

root@kitploit:~
packet = KNXPacket(type=connect_request)
packet.field1 = 1 # Applying additional BOF operations (ex: change types)
packet.scapy_pkt.field1 = 1 # Direct access to Scapy Packet object

Полная документация

made-with-sphinx-doc

Ссылка на документацию: https://bof.readthedocs.io

Пользовательское руководство в формате HTML и документацию по исходному коду можно собрать из репозитория:

  1. $> cd docs && make html
  2. Перейдите в [path to repository]/docs/_build/html/index.html

Примеры скриптов находятся в папке examples.

Участие в разработке

Мы приветствуем участников! BOF — это всё ещё развивающийся проект, который опирается на реализации промышленных сетевых протоколов в формате Scapy. Вы можете начать с вклада в Scapy и добавления новых протоколов («уровней»). Либо вы можете внести вклад, интегрировав протокол Scapy в BOF. В документации объясняется, как это сделать. Кроме того, всегда найдётся место для высокоуровневых функций, которые упростят тестирование или реализуют известные атаки на протоколы или их реализации.

Вот несколько вещей, которые стоит знать заранее:

  • Нам нравится чистый код, и мы ожидаем, что вклад будет по возможности соответствовать PEP-8 (даже если мы это не проверяем). Новый код должен легко читаться и поддерживаться. И помните: если при объяснении того, что делает ваша функция, вам нужно использовать «и», то, вероятно, её можно разделить.

  • Пожалуйста, пишите модульные тесты и убедитесь, что существующие по-прежнему проходят! Они находятся в tests/. Вы можете запустить все модульные тесты с помощью: python -m unittest discover -s tests

Сообщение о проблемах

Сообщайте об ошибках, задавайте вопросы или запрашивайте недостающую документацию и новые функции, создавая issue на GitHub. При сообщении об ошибках, пожалуйста, описывайте свою проблему как можно яснее.

Скачать инструмент
АвтоматизированныйСтандартныйЭкспериментальный
KNXXXX
LLDPX
ModbusXXX
Profinet DCPX