
Génère des topologies réseau CORE reproductibles à partir de fichiers de scénarios XML pour la formation et l'expérimentation en cybersécurité. Fournit une interface Web (GUI) et une interface en ligne de commande (CLI) pour des aperçus déterministes de topologie, l'affectation de vulnérabilités et la génération de trafic.
Générez des topologies réseau CORE reproductibles à partir de fichiers XML de scénario en utilisant une interface Web riche ou une interface en ligne de commande.
Consultez la galerie d'images de l'interface Web docs/screenshots.md
core-daemon en cours d'exécutionpython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py
http://127.0.0.1:9090 (le proxy inverse nginx cible https://localhost via docker-compose).coreadmin / coreadmin ; changez-le immédiatement sous Profil → Changer le mot de passe.make host-web, make host-web-nginx ou make host-web PROXY=envoy. Le script d'aide scripts/dev_gen_certs.sh délivre des certificats auto-signés avec support SAN.Routeur existant, Commutateur existant ou Nouveau routeur. L'ancien choix Nouveau commutateur a été supprimé pour éviter l'extension cachée des commutateurs ; les scénarios sauvegardés qui l'utilisent sont normalisés en Routeur existant lors du chargement.python -m core_topo_gen.cli --xml path/to/scenario.xml --seed 42 --verbose
Options courantes :
--scenario NAME choisir une entrée de scénario spécifique--host / --port remplacer le point de terminaison gRPC CORE (par défaut 127.0.0.1:50051)--layout-density {compact|normal|spacious} ajuster l'espacement de la carte--seg-include-hosts, --seg-allow-docker-ports, --nat-mode, --dnat-prob affiner la segmentation--traffic-pattern, --traffic-rate, --traffic-content remplacer les valeurs par défaut du trafic./reports/.base_nodes, additive_nodes, combined_nodes, etc.) pour une fidélité aller-retour.explicit_count, derived_count et total_planned.scenario_total_nodes résume les hôtes, routeurs et cibles de vulnérabilité planifiés.core_topo_gen.parsers.planning_metadata.parse_planning_metadata().existing_router, existing_switch ou new_router ; les anciennes valeurs new_switch sont converties en existing_router afin que les aperçus restent déterministes et que les superpositions de commutateurs ne soient pas synthétisées implicitement.r2r_mode prend en charge Exact, Uniform, NonUniform, Min, Max et les maillages hérités liés à --router-mesh-style.r2s_mode, r2s_edges, optionnel r2s_hosts_min/max) regroupent les hôtes derrière des commutateurs dédiés, avec « Exact=1 » agrégeant tous les hôtes par routeur en un seul commutateur./tmp/traffic (avec des services compagnons) et respectent les surcharges pour les indices de motif, débit, gigue et contenu./tmp/segmentation accompagnés d'un segmentation_summary.json ; le mode NAT, la probabilité DNAT, l'inclusion des hôtes et les autorisations de ports Docker sont configurables./tmp/vulns, avec des métadonnées intégrées dans les nœuds CORE.core_topo_gen.plugins.traffic.register() pour du code émetteur/récepteur sur mesure../reports/scenario_report_<timestamp>.md) énumèrent les statistiques de topologie, les métadonnées de planification, les résultats de segmentation et les artefacts d'exécution. Chaque exécution émet également un résumé JSON à côté du fichier Markdown (scenario_report_<timestamp>.json) ainsi que des CSV de connectivité par exécution lorsque les données de degré des routeurs sont disponibles.outputs/run_history.json pour la page Rapports.outputs/ lorsque les scénarios sont supprimés via l'interface graphique.| Dossier | Objectif |
|---|---|
core_topo_gen/cli.py | Point d'entrée CLI ; orchestre l'analyse, la planification, la construction et la génération de rapports |
core_topo_gen/parsers/ | Analyseurs XML modulaires par section de scénario (infos nœuds, routage, trafic, services, vulnérabilités, segmentation) |
core_topo_gen/builders/topology.py | Construit les topologies en étoile, multi-commutateur et segmentées en utilisant les API gRPC de CORE |
core_topo_gen/utils/ | Allocateurs de soutien, rédacteurs de rapports, assistants trafic/segmentation/services |
webapp/ | Interface Web Flask, templates, streaming de logs SSE, persistance de l'historique |
webapp/templates/partials/dock.html | Console de logs/XML persistante avec bascule de suivi et filtres |
tests/ | Suite Pytest couvrant la sémantique de planification, l'application des politiques, la parité des aperçus et les comportements CLI |
docs/ | Ressources de documentation supplémentaires (captures d'écran, notes) |
core-python introuvable – définissez WEBUI_PY avant make host-web ou utilisez python3 ; le backend revient à sys.executable si nécessaire.nginx/certs) – exécutez scripts/dev_gen_certs.sh ou make dev-certs avant de composer nginx.core-daemon inaccessible – vérifiez l'état du démon et l'hôte/port ; la fenêtre modale d'exécution de l'interface graphique signalera immédiatement les problèmes de connexion.Les pull requests et les signalements de problèmes sont les bienvenus ! Veuillez exécuter les cibles pytest pertinentes (pytest -q) avant de soumettre des modifications et maintenir la documentation à jour lorsque le comportement change.
@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}
}