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 には3つの使用方法がありますが、レイヤーによってはすべてが利用できるわけではありません:

  • 自動化: レイヤーの高レベル関数を直接インポートまたは呼び出します。プロトコルに関する知識は不要です。たとえば、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 に貢献して新しいプロトコル("layers")を追加することで貢献できます。または、Scapy プロトコルを BOF に統合することで貢献することもできます。ドキュメントにはその方法が説明されています。さらに、テストを容易にしたり、プロトコルやプロトコル実装に対する既知の攻撃を実装する高レベル関数のための余地もまだあります。

事前に知っておくべきことをいくつか示します:

  • 私たちはクリーンなコードを好み、貢献が可能な限り PEP-8 準拠であることを期待しています(テストはしていませんが)。新しいコードは簡単に読めて、保守可能であるべきです。そして覚えておいてください:関数が何をするかを説明するときに "and" を使う必要があるなら、おそらく関数を分割できるでしょう。

  • ユニットテストを書き、既存のテストがまだ通ることを確認してください! テストは tests/ にあります。すべてのユニットテストは次のコマンドで実行できます: python -m unittest discover -s tests

問題の報告

バグの報告、質問、不足しているドキュメントや新機能のリクエストは、GitHub で issue を送信してください。バグの場合は、問題をできるだけ明確に説明してください。

ツールをダウンロード
自動化標準遊び心
KNXXXX
LLDPX
ModbusXXX
Profinet DCPX