Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
bof — BOF (Boiboite Opener Framework) est un framework de test pour les implémentations et les appareils de protocoles industriels. | Kitploit
Outils/GitHubGitHub/orange-cyberdefense/bof
Sécurité IoTCartographie RéseauAnalyse des VulnérabilitésExploitationSécurité SCADA/ICSCollecte d'InformationsFuzzingTests d'IntrusionUtilitaires et Frameworks
GitHuborange-cyberdefense/bof

bof

BOF (Boiboite Opener Framework) est un framework de test pour les implémentations et les appareils de protocoles industriels.

5397il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôtSite web

BOF

BOF (Boiboite Opener Framework) est un framework de test pour les implémentations de protocoles de terrain et les dispositifs. C'est une bibliothèque Python 3.6+ qui fournit des moyens d'envoyer, recevoir, créer, analyser et manipuler des trames des protocoles supportés.

La bibliothèque fournit actuellement des fonctionnalités de découverte et de test étendu pour KNXnet/IP, qui est notre objectif, mais elle peut être étendue à d'autres types de protocoles BMS ou de réseaux industriels. Elle fournit également des fonctions de découverte multicast et/ou de bout en bout pour les réseaux industriels reposant sur KNXnet/IP, LLDP, Profinet DCP et Modbus TCP.

Veuillez noter que cibler des systèmes industriels peut avoir un impact grave sur les personnes, les opérations industrielles et les bâtiments, et que BOF doit être utilisé avec précaution.

GitHub license GitHub release

Installation

Depuis PyPI

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

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

Installation manuelle

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

Installez les dépendances avec :

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

Les implémentations de protocole utilisent le format de Scapy.

Pour commencer

BOF est une bibliothèque Python 3.6+ qui doit être importée dans les scripts.

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

Il y a trois façons d'utiliser BOF, toutes ne sont pas disponibles selon la couche :

  • Automatisé : Importer ou appeler directement des fonctions de haut niveau des couches. Aucune connaissance du protocole requise. Par exemple, le module discovery contient quelques fonctions pour découvrir des dispositifs en utilisant plusieurs protocoles de réseaux industriels.

  • Standard : Créer des paquets à partir des couches pour interagir avec des dispositifs distants. Connaissances de base du protocole requises.

  • Ludique : Jouer avec les paquets, abuser du protocole (nous faisons du fuzzing de dispositifs avec). L'utilisateur final devrait avoir commencé à creuser les spécifications du protocole.

Maintenant vous pouvez commencer à utiliser BOF !

TL;DR

Plusieurs façons de découvrir des dispositifs sur un réseau

  • Découverte multicast depuis le module discovery (actuellement avec LLDP, Profinet DCP, KNX) :
root@kitploit:~
from bof.modules.discovery import *

devices = multicast_discovery(iface="eth0", verbose=True)
  • Découverte de dispositifs en utilisant une fonction de haut niveau d'une couche
root@kitploit:~
from bof.layers.knx import search

devices = search()
for device in devices:
    print(device)
  • Créer et envoyer votre propre paquet de découverte :
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))

Envoyer et recevoir des paquets

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

Créer vos propres paquets

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 dispositif récepteur ne répondra probablement pas à cela, mais au moins vous savez que BOF ne vous empêchera pas de jouer avec vos paquets.

Interfaçage avec Scapy

BOF s'appuie sur Scapy pour les implémentations de protocole, avec une couche supplémentaire qui traduit le code BOF en modifications sur les paquets et champs Scapy. Pourquoi ? Parce que BOF peut légèrement modifier ou outrepasser le comportement interne de Scapy.

Vous n'avez pas besoin de savoir utiliser Scapy pour utiliser BOF, mais si vous le savez, vous êtes libre d'interagir directement avec le paquet Scapy également.

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

Documentation complète

made-with-sphinx-doc

Lien vers la documentation : https://bof.readthedocs.io

Le manuel d'utilisation en HTML et la documentation du code source peuvent être construits à partir du dépôt :

  1. $> cd docs && make html
  2. Naviguez vers [chemin vers le dépôt]/docs/_build/html/index.html

Les exemples de scripts se trouvent dans le dossier examples.

Contribuer

Les contributeurs sont les bienvenus ! BOF est encore un projet en cours, qui repose sur des implémentations de protocoles de réseaux industriels au format Scapy. Vous pouvez d'abord contribuer en contribuant à Scapy et en ajoutant de nouveaux protocoles ("layers"). Ou, vous pouvez contribuer en intégrant un protocole Scapy dans BOF. La documentation explique comment faire. De plus, il y aura encore de la place pour des fonctions de plus haut niveau qui faciliteront les tests ou implémenteront des attaques connues contre des protocoles ou des implémentations de protocoles.

Voici quelques choses à savoir avant de contribuer :

  • Nous aimons le code propre et attendons des contributions qu'elles soient conformes à PEP-8 autant que possible (même si nous ne le testons pas). Le nouveau code doit être facilement lisible et maintenable. Et rappelez-vous : si vous avez besoin d'utiliser "et" en expliquant ce que fait votre fonction, alors vous pouvez probablement la diviser.

  • Veuillez écrire des tests unitaires et assurez-vous que les tests existants passent toujours ! Ils se trouvent dans tests/. Vous pouvez exécuter tous les tests unitaires avec : python -m unittest discover -s tests

Signaler des problèmes

Signalez des bogues, posez des questions ou demandez de la documentation manquante et de nouvelles fonctionnalités en soumettant un problème sur GitHub. Pour les bogues, veuillez décrire votre problème aussi clairement que possible.

Télécharger l’outil
AutomatiséStandardLudique
KNXXXX
LLDPX
ModbusXXX
Profinet DCPX