Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
bof — BOF (Boiboite Opener Framework) es un framework de pruebas para implementaciones y dispositivos de protocolos industriales. | Kitploit
Herramientas/GitHubGitHub/orange-cyberdefense/bof
Seguridad IoTMapeo de RedesAnálisis de VulnerabilidadesExplotaciónSeguridad SCADA/ICSRecopilación de InformaciónFuzzingPruebas de PenetraciónUtilidades y Frameworks
GitHuborange-cyberdefense/bof

bof

BOF (Boiboite Opener Framework) es un framework de pruebas para implementaciones y dispositivos de protocolos industriales.

539hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver RepositorioSitio web

BOF

BOF (Boiboite Opener Framework) es un framework de pruebas para implementaciones de protocolos de campo y dispositivos. Es una librería de Python 3.6+ que proporciona medios para enviar, recibir, crear, parsear y manipular tramas de los protocolos soportados.

La librería actualmente proporciona funciones de descubrimiento y pruebas ampliadas para KNXnet/IP, que es nuestro enfoque, pero puede extenderse a otros tipos de BMS o protocolos de redes industriales. También proporciona funciones de descubrimiento multicast y/o de extremo a extremo para redes industriales que dependen de KNXnet/IP, LLDP, Profinet DCP y Modbus TCP.

Ten en cuenta que atacar sistemas industriales puede tener un grave impacto en las personas, las operaciones industriales y los edificios, y que BOF debe usarse con cuidado.

GitHub license GitHub release

Instalación

Desde PyPI

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

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

Instalación manual

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

Instala los requisitos con:

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

Las implementaciones de protocolos utilizan el formato de Scapy.

Primeros pasos

BOF es una librería de Python 3.6+ que debe importarse en scripts.

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

Hay tres formas de usar BOF; no todas están disponibles dependiendo de la capa:

  • Automatizado: Importa o llama directamente a funciones de alto nivel de las capas. No se requiere conocimiento del protocolo. Por ejemplo, el módulo discovery contiene algunas funciones para descubrir dispositivos usando varios protocolos de redes industriales.

  • Estándar: Construye paquetes a partir de las capas para interactuar con dispositivos remotos. Se requiere conocimiento básico del protocolo.

  • Lúdico: Juega con los paquetes, usa mal el protocolo (hacemos fuzzing de dispositivos con él). El usuario final debería haber comenzado a profundizar en las especificaciones del protocolo.

¡Ahora puedes empezar a usar BOF!

TL;DR

Varias formas de descubrir dispositivos en una red

  • Descubrimiento multicast desde el módulo discovery (actualmente con LLDP, Profinet DCP, KNX):
root@kitploit:~
from bof.modules.discovery import *

devices = multicast_discovery(iface="eth0", verbose=True)
  • Descubrimiento de dispositivos usando una función de alto nivel de una capa
root@kitploit:~
from bof.layers.knx import search

devices = search()
for device in devices:
    print(device)
  • Crea y envía tu propio paquete de descubrimiento:
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))

Enviar y recibir paquetes

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()

Crea tus propios paquetes

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

Un dispositivo receptor probablemente no responderá a eso, pero al menos sabes que BOF no te impedirá manipular tus paquetes.

Interfaz con Scapy

BOF se apoya en Scapy para las implementaciones de protocolos, con una capa adicional que traduce el código de BOF a cambios en los paquetes y campos de Scapy. ¿Por qué? Porque BOF puede modificar ligeramente o anular el comportamiento interno de Scapy.

No necesitas saber cómo usar Scapy para usar BOF; sin embargo, si lo sabes, eres libre de interactuar directamente también con el paquete de 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

Documentación completa

made-with-sphinx-doc

Enlace a la documentación: https://bof.readthedocs.io

El manual de usuario en HTML y la documentación del código fuente se pueden compilar desde el repositorio:

  1. $> cd docs && make html
  2. Navega a [path to repository]/docs/_build/html/index.html

Los scripts de ejemplo están en la carpeta examples.

Contribuciones

¡Los contribuidores son bienvenidos! BOF sigue siendo un proyecto en curso, que se basa en implementaciones de protocolos de redes industriales en formato Scapy. Puedes contribuir primero aportando a Scapy y añadiendo nuevos protocolos ("layers"). O bien, puedes contribuir integrando un protocolo de Scapy en BOF. La documentación explica cómo hacerlo. Además, todavía habrá espacio para funciones de alto nivel que faciliten las pruebas o implementen ataques conocidos contra protocolos o implementaciones de protocolos.

Aquí tienes algunas cosas que debes saber de antemano:

  • Nos gusta el código limpio y esperamos que las contribuciones cumplan con PEP-8 tanto como sea posible (aunque no lo probamos). El código nuevo debe ser fácil de leer y mantener. Y recuerda: si necesitas usar "y" mientras explicas lo que hace tu función, probablemente puedas dividirla.

  • Por favor, escribe pruebas unitarias y asegúrate de que las existentes sigan pasando. Están en tests/. Puedes ejecutar todas las pruebas unitarias con: python -m unittest discover -s tests

Informe de problemas

Reporta errores, haz preguntas o solicita documentación faltante y nuevas funciones enviando un issue a través de GitHub. Para errores, describe tu problema lo más claramente que puedas.

Descargar herramienta
AutomatizadoEstándarLúdico
KNXXXX
LLDPX
ModbusXXX
Profinet DCPX