
Genera topologías de red CORE reproducibles a partir de archivos de escenarios XML para formación y experimentación en ciberseguridad. Proporciona una interfaz web y CLI para vistas previas deterministas de topologías, asignación de vulnerabilidades y generación de tráfico.
Genera topologías de red CORE reproducibles a partir de archivos XML de escenarios mediante una GUI web completa o una interfaz de línea de comandos.
Consulta la galería de imágenes de la interfaz web docs/screenshots.md.
core-daemon en ejecuciónpython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python main.py
http://127.0.0.1:9090 por defecto (el proxy inverso nginx apunta a https://localhost).coreadmin / coreadmin; cámbiala de inmediato en Profile → Change Password.make host-web, make host-web-nginx, o make host-web PROXY=envoy. El script auxiliar scripts/dev_gen_certs.sh emite certificados autofirmados con soporte SAN.Existing Router, Existing Switch o New Router. La opción heredada New Switch se eliminó para evitar el fan-out oculto de switches; los escenarios guardados que la usan se normalizan a Existing Router durante la carga.python -m core_topo_gen.cli --xml path/to/scenario.xml --seed 42 --verbose
Opciones populares:
--scenario NAME selecciona una entrada de escenario concreta--host / --port sobrescriben el endpoint gRPC de CORE (por defecto 127.0.0.1:50051)--layout-density {compact|normal|spacious} ajusta el espaciado del mapa--seg-include-hosts, --seg-allow-docker-ports, --nat-mode, --dnat-prob ajustan la segmentación--traffic-pattern, --traffic-rate, --traffic-content sobrescriben los valores de tráfico predeterminados./reports/.base_nodes, additive_nodes, combined_nodes, etc.) para garantizar la fidelidad de ida y vuelta.explicit_count, derived_count y total_planned.scenario_total_nodes a nivel de escenario resume los hosts, routers y objetivos de vulnerabilidad planificados.core_topo_gen.parsers.planning_metadata.parse_planning_metadata().existing_router, existing_switch o new_router; los valores heredados new_switch se convierten a existing_router para que las vistas previas sigan siendo deterministas y no se sinteticen overlays de switches implícitamente.r2r_mode por elemento de enrutamiento admite Exact, Uniform, NonUniform, Min, Max y mallas heredadas vinculadas a --router-mesh-style.r2s_mode, r2s_edges, opcionalmente r2s_hosts_min/max) reagrupan hosts detrás de switches dedicados, con “Exact=1” agregando todos los hosts de cada router en un único switch./tmp/traffic (con servicios complementarios) y respetan las sobrescrituras de patrón, tasa, jitter e indicaciones de contenido./tmp/segmentation junto con segmentation_summary.json; el modo NAT, la probabilidad DNAT, la inclusión de hosts y los permisos de puertos docker son configurables./tmp/vulns, con metadatos incrustados en los nodos CORE.core_topo_gen.plugins.traffic.register() para código de emisor/receptor a medida../reports/scenario_report_<timestamp>.md) enumeran estadísticas de topología, metadatos de planificación, resultados de segmentación y artefactos de ejecución. Cada ejecución también emite un resumen JSON junto al archivo Markdown (scenario_report_<timestamp>.json) además de CSV de conectividad por ejecución cuando hay datos de grado de router disponibles.outputs/run_history.json para la página de informes.outputs/ cuando los escenarios se eliminan mediante la GUI.| Carpeta | Propósito |
|---|---|
core_topo_gen/cli.py | Punto de entrada de la CLI; orquesta el análisis, la planificación, la construcción y la generación de informes |
core_topo_gen/parsers/ | Parsers XML modulares por sección de escenario (información de nodos, enrutamiento, tráfico, servicios, vulnerabilidades, segmentación) |
core_topo_gen/builders/topology.py | Construye topologías en estrella, multi-switch y segmentadas usando las APIs gRPC de CORE |
core_topo_gen/utils/ | Asignadores de soporte, escritores de informes, ayudantes de tráfico/segmentación/servicios |
webapp/ | Interfaz web Flask, plantillas, transmisión de registros SSE, persistencia de historial |
webapp/templates/partials/dock.html | Panel de registros/XML persistente con conmutador de seguimiento y filtros |
tests/ | Suite Pytest que cubre semántica de planificación, aplicación de políticas, paridad de vistas previas y comportamientos de la CLI |
docs/ | Recursos de documentación adicionales (capturas de pantalla, notas) |
core-python no encontrado** – configura WEBUI_PYantes demake host-webo usapython3; el backend recurre a sys.executable` si es necesario.nginx/certs) – ejecuta scripts/dev_gen_certs.sh o make dev-certs antes de componer nginx.core-daemon inalcanzable` – verifica el estado del daemon y host/puerto; el modal de ejecución de la GUI mostrará los problemas de conexión de inmediato.¡Las solicitudes de extracción y los informes de incidencias son bienvenidos! Ejecuta los objetivos pytest relevantes (pytest -q) antes de enviar cambios y mantén la documentación actualizada cuando cambie el comportamiento.
@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}
}