HomePROYECTOS

Belle Herramienta de Reportes para Pentesting

Feb 08 20265 min read
GoTools
Belle
Belle Header
Belle Header

BELLE

🔐 Qué es Belle y para qué sirve?

De forma resumida: Belle es una aplicación de escritorio multiplataforma (Windows, Linux y macOS) diseñada para la creación y gestión de informes de ciberseguridad, especialmente pentesting. Permite a los usuarios estructurar hallazgos, agregar evidencia y generar informes profesionales en diversos formatos.

[!NOTE] Disclaimer: Esta es solo una herramienta para crear reportes.

Algunos ejemplos usando BELLE:

Doc

Vulnversity


💜 Belle es cross-platform, funciona en Windows, Linux y macOS.

Ejemplo: Un analista de seguridad puede documentar las vulnerabilidades encontradas en una auditoría, incluir capturas de pantalla, fragmentos de código y recomendaciones, y luego exportar el informe completo a PDF o LaTeX con solo unos pocos clics.

En detalle: Belle facilita la organización de fases de un informe, la adición de entradas detalladas para cada hallazgo (con campos para severidad, descripción, recomendaciones, comandos de shell, fragmentos de código, URLs e imágenes). Su enfoque está en la eficiencia y la personalización, permitiendo la integración de logos y la exportación a formatos estándar de la industria.

UI
UI
UI2
UI2

Versión

BELLE v2.0.0

📦 Requisitos

  • Go v1.20+
  • Node.js 16.0+ (Para la gestión de dependencias del frontend)
  • Wails CLI v2.0+ (Para compilar y ejecutar la aplicación)
  • Pandoc (Herramienta para la conversión de documentos, esencial para la exportación a PDF/LaTeX)
  • Una distribución LaTeX (ej. TeX Live o MiKTeX) (Necesaria para la generación de PDFs de alta calidad)

❓ Características

  • Generación de Informes de Pentesting: Crea informes estructurados con fases, hallazgos y detalles.
  • Editor Markdown Integrado: Permite la edición de contenido utilizando Markdown.
  • Gestión de Vulnerabilidades: Añade, edita y elimina entradas de vulnerabilidades con campos ricos en detalles.
  • Exportación Flexible: Exporta informes a PDF, LaTeX, Markdown y un formato .belle propietario para facilitar la colaboración.
  • Soporte Multimedia: Inserta imágenes, tablas, fragmentos de código y URLs en los hallazgos.
  • Personalización Visual: Incluye logo del cliente, imágenes de portada y personalización de colores.
  • Soporte Multi-idioma: Interfaz y plantillas de informes disponibles en español e inglés.
  • Integración con LLMs (Opcional): Asistencia para la redacción de recomendaciones o la mejora de texto mediante Gemini, Claude o OpenRouter.

🧑‍💻 Características técnicas

  • Backend: Go (con el framework Wails para la integración con el frontend).
  • Frontend: Svelte (un framework reactivo para la interfaz de usuario).
  • Gestión de estado: Context API de Go, Svelte stores.
  • Construcción y empaquetado: Wails y Vite.
  • Generación de documentos: Pandoc para la conversión de Markdown a LaTeX/PDF.
  • Manejo de imágenes: Procesamiento y redimensionamiento de imágenes en el backend.
  • Persistencia: Almacenamiento de proyectos y configuraciones en archivos JSON.

Estructura

El proyecto BELLE sigue una estructura organizada:

  • app.go: Contiene la lógica principal del backend de Go, interactuando con el frontend a través de Wails.
  • main.go: Punto de entrada de la aplicación Wails.
  • structs.go: Define las estructuras de datos utilizadas en el proyecto (e.g., Vulnerability, BelleProject).
  • frontend/: Contiene todo el código del frontend (Svelte, JavaScript, CSS).
  • translations.json: Archivo de traducciones para la aplicaci贸n.
  • Otros archivos de configuración y recursos.

💻 Instalación

Para instalar y ejecutar Belle, sigue estos pasos:

  1. Clonar el repositorio:
    bash
    1git clone https://github.com/aiskoa/BELLE.git
    2cd BELLE
    3
  2. Instalar dependencias de Node.js:
    bash
    1npm install
    2
  3. Compilar y ejecutar la aplicación: Asegúrate de tener instalados Go, Node.js y la CLI de Wails.
    bash
    1wails build # Para construir el ejecutable
    2wails dev   # Para ejecutar en modo desarrollo
    3
    Si encuentras errores al exportar a PDF, asegúrate de tener Pandoc y una distribución LaTeX (como TeX Live o MiKTeX) instalados y configurados en tu PATH.

Función de ejemplo

Un ejemplo de cómo interactuar con el backend de Belle desde el frontend es la función ExportMarkdown. Esta función toma los datos del proyecto y los exporta a un archivo Markdown.

go
1func (a *App) ExportMarkdown(projectData string) (string, error) {
2	// Prevenir condiciones de carrera para la exportaci贸n a Markdown
3	a.exportMDMutex.Lock()
4	defer a.exportMDMutex.Unlock()
5
6	runtime.EventsEmit(a.ctx, "export-progress", map[string]interface{}{"type": "markdown", "stage": "inicio", "percent": 5})
7	var project BelleProject
8	err := json.Unmarshal([]byte(projectData), &project)
9	if err != nil {
10		runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
11			Type:    runtime.ErrorDialog,
12			Title:   "Error",
13			Message: "No se pudo parsear los datos del proyecto para Markdown: " + err.Error(),
14		})
15		return "", err
16	}
17
18	runtime.EventsEmit(a.ctx, "export-progress", map[string]interface{}{"type": "markdown", "stage": "generando contenido", "percent": 40})
19	md, err := a.GenerateMarkdown(project, nil) // Llama a una función interna para generar el contenido Markdown
20	if err != nil {
21		runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
22			Type:    runtime.ErrorDialog,
23			Title:   "Error",
24			Message: "No se pudo generar el Markdown: " + err.Error(),
25		})
26		return "", err
27	}
28
29	// Abre un diálogo para que el usuario guarde el archivo
30	filePath, err := runtime.SaveFileDialog(a.ctx, runtime.SaveDialogOptions{
31		Title:           "Exportar a Markdown",
32		DefaultFilename: "reporte.md",
33		Filters: []runtime.FileFilter{
34			{DisplayName: "Markdown (*.md)", Pattern: "*.md"},
35		},
36	})
37	if err != nil {
38		return "", err
39	}
40	if filePath == "" {
41		return "", nil
42	}
43
44	runtime.EventsEmit(a.ctx, "export-progress", map[string]interface{}{"type": "markdown", "stage": "guardando archivo", "percent": 80})
45	err = os.WriteFile(filePath, []byte(md), 0644) // Escribe el contenido en el archivo
46	if err != nil {
47		return "", err
48	}
49
50	runtime.EventsEmit(a.ctx, "export-progress", map[string]interface{}{"type": "markdown", "stage": "finalizado", "percent": 100})
51	runtime.MessageDialog(a.ctx, runtime.MessageDialogOptions{
52		Type:    runtime.InfoDialog,
53		Title:   "脡xito",
54		Message: "Reporte en Markdown exportado correctamente.",
55	})
56	return "ok", nil
57}
58

Asegurate de tener instalado la ultima versión de Wails, Node y Go en tu equipo.

ATENCIÓN!!

Si solo deseas usarla, puedes descargarla desde github o desde el sitio oficial según tu sistema.

Desde Sitio Oficial: ⬇ Descargar Belle


TODO List

  • LLM
  • Bloqueo por password PDF
  • Mejor UI
  • Templetes

🤝 Contribuyendo

¡Las contribuciones, los problemas y las solicitudes de características son bienvenidos! Siéntete libre de consultar la página de problemas.

❤️ Muestra tu apoyo

¡Da una ⭐️ si este proyecto te ayudó!

📝 Licencia

Copyright © 2026 aiskoa. Este proyecto tiene licencia MIT.

Share this article

© 2026