
XMLシナリオファイルから再現可能なCOREネットワークトポロジーを生成し、サイバーセキュリティのトレーニングと実験を支援します。決定論的なトポロジープレビュー、脆弱性の割り当て、トラフィック生成のためのWeb GUIとCLIを提供します。
リッチなWeb GUIまたはコマンドラインインターフェースを使用して、シナリオXMLファイルから再現可能なCOREネットワークトポロジを生成します。
WebUI画像ギャラリーは docs/screenshots.md をご覧ください。
core-daemonが実行中であることpython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py
http://127.0.0.1:9090 にアクセスします(リバースプロキシ nginx のcomposeターゲットは https://localhost)。coreadmin / coreadmin アカウントが作成されます。プロフィール → パスワード変更 で直ちに変更してください。make host-web、make host-web-nginx、または make host-web PROXY=envoy で設定します。ヘルパースクリプト scripts/dev_gen_certs.sh はSAN対応の自己署名証明書を発行します。Existing Router、Existing Switch、New Router が用意されています。隠れたスイッチファンアウトを防ぐため、従来の New Switch オプションは削除されました。これを使用して保存されたシナリオは、読み込み時に Existing Router に正規化されます。python -m core_topo_gen.cli --xml path/to/scenario.xml --seed 42 --verbose
主なオプション:
--scenario NAME 特定のシナリオエントリを選択--host / --port CORE gRPCエンドポイントを上書き(デフォルトは 127.0.0.1:50051)--layout-density {compact|normal|spacious} マップの間隔を調整--seg-include-hosts、--seg-allow-docker-ports、--nat-mode、--dnat-prob セグメンテーションを微調整--traffic-pattern、--traffic-rate、--traffic-content トラフィックのデフォルトを上書き./reports/ に書き込みます。base_nodes、additive_nodes、combined_nodes など)に書き込まれます。explicit_count、derived_count、total_planned を通じて導出カウントと明示カウントを記録します。scenario_total_nodes は、計画されたホスト、ルーター、脆弱性ターゲットを要約します。core_topo_gen.parsers.planning_metadata.parse_planning_metadata()。existing_router、existing_switch、または new_router に正規化されます。従来の new_switch 値は existing_router に強制変換されるため、プレビューは決定論的に保たれ、スイッチオーバーレイが暗黙的に合成されることはありません。r2r_mode は Exact、Uniform、NonUniform、Min、Max、および --router-mesh-style に紐づく従来のメッシュをサポートします。r2s_mode、r2s_edges、オプションの r2s_hosts_min/max)は、専用スイッチの背後にホストを再グループ化します。「Exact=1」はルーターごとのすべてのホストを単一のスイッチに集約します。/tmp/traffic に配置され(付随サービスを含む)、パターン、レート、ジッター、コンテンツヒントの上書きを尊重します。segmentation_summary.json とともに /tmp/segmentation に配置されます。NATモード、DNAT確率、ホストの包含、Dockerポートの許可は設定可能です。/tmp/vulns にノードごとのdocker-composeファイルを添付し、メタデータはCOREノードに埋め込まれます。core_topo_gen.plugins.traffic.register() を通じて登録できます。./reports/scenario_report_<timestamp>.md)は、トポロジ統計、プランニングメタデータ、セグメンテーション結果、ランタイム成果物を列挙します。各実行では、Markdownファイル(scenario_report_<timestamp>.json)とともにJSONサマリーも出力され、ルーター次数データが利用可能な場合は実行ごとの接続性CSVも出力されます。outputs/run_history.json に保持されます。outputs/ 配下の関連出力を削除しつつ、レポートは保持します。| フォルダ | 目的 |
|---|---|
core_topo_gen/cli.py | CLIエントリポイント。解析、プランニング、ビルド、レポート生成を統括します。 |
core_topo_gen/parsers/ | シナリオセクションごとのモジュール式XMLパーサー(ノード情報、ルーティング、トラフィック、サービス、脆弱性、セグメンテーション) |
core_topo_gen/builders/topology.py | CORE gRPC APIを使用してスター型、マルチスイッチ型、セグメント化トポロジを構築します。 |
core_topo_gen/utils/ | アロケーター、レポートライター、トラフィック/セグメンテーション/サービスのヘルパーをサポート。 |
webapp/ | Flask Web UI、テンプレート、SSEログストリーミング、履歴の永続化 |
webapp/templates/partials/dock.html | フォロートグルとフィルターを備えた永続ログ/XMLドック |
tests/ | プランニングのセマンティクス、ポリシー適用、プレビュー同等性、CLI動作をカバーするPytestスイート |
docs/ | 追加ドキュメント資産(スクリーンショット、ノート) |
core-python が見つからない – make host-web の前に WEBUI_PY を設定するか、python3 に依存してください。必要に応じてバックエンドは sys.executable にフォールバックします。nginx/certs) – nginxをcomposeする前に scripts/dev_gen_certs.sh または make dev-certs を実行してください。core-daemon に到達できない – デーモンの状態とホスト/ポートを確認してください。GUIの実行モーダルは接続の問題を即座に表示します。プルリクエストと問題報告を歓迎します!変更を送信する前に該当するpytestターゲット(pytest -q)を実行し、動作が変更された場合はドキュメントを最新の状態に保ってください。
@article{rodriguez2025agentcyte,
title={AgentCyTE: Leveraging Agentic AI to Generate Cybersecurity Training & Experimentation Scenarios},
author={Rodriguez, Ana M and Acosta, Jaime and Kotal, Anantaa and Piplai, Aritran},
journal={Annual Computer Security Applications Conference Workshop (ACSACW)},
year={2025}
}