Todos los proyectos

Escáner de topología de red

Escanea una red con Nmap, construye la topología como grafo con NetworkX y la exporta a HTML interactivo con PyVis.

Tipo
Proyecto personal
Fecha
2026 — Actualidad
Rol
Autor único
Código
GitHub

01Resumen técnico

Una herramienta en Python que convierte un rango de red en un mapa. Nmap descubre los hosts activos y sus puertos y servicios abiertos; los resultados se convierten en un grafo de NetworkX y PyVis lo exporta a una página HTML interactiva que se abre en cualquier navegador.

Está pensada para inventariar y auditar rápidamente redes propias o con autorización para escanearlas.

02Arquitectura

Input
NetworkCIDR rangee.g. 192.168.1.0/24
Discovery
Nmapping sweepports · services (-sV)
Python
ClassifierMAC vendor → categoryrisky-port flags
SQLitescan history · diff
Model
NetworkXtopology graph
Output
PyVisinteractive HTML
CSVinventory
Flujo de datos. Cada escaneo se guarda además en SQLite y se compara con el anterior.

03Mi contribución

Diseñé y escribí toda la herramienta: escaneo, clasificación, construcción del grafo, exportaciones, historial, tests y CI.

04Implementación

  • Descubrimiento — Nmap en dos fases por defecto: un barrido ping para encontrar hosts activos y después detección de puertos y servicios (-sV) solo sobre ellos. Detección de SO opcional y un modo rápido.
  • Clasificación — el fabricante de la MAC de cada host se asigna a una categoría (router, firewall, VM, NAS, impresora, cámara, IoT…). Solo funciona en el mismo segmento L2, porque ARP no atraviesa routers ni VLANs.
  • Alertas — los hosts con puertos sensibles abiertos (Telnet, SMB, RDP, FTP, VNC) se marcan en rojo.
  • Historial — cada escaneo se guarda en SQLite y se compara con el anterior: hosts nuevos o desaparecidos y puertos que cambian.
  • Interfaces — CLI y una interfaz web local opcional en Streamlit con escaneos cancelables; exportación a CSV para inventario.
  • Calidad — tests con pytest simulando Nmap (sin necesidad de red real) y GitHub Actions ejecutando tests y ruff en cada push.

05Resultado

Un mapa de topología en HTML interactivo con iconos por categoría y alertas en rojo, un inventario CSV y la comparación entre escaneos.

06Tecnologías

  • Python
  • Nmap
  • NetworkX
  • PyVis
  • SQLite
  • Streamlit
  • pytest
  • ruff
  • GitHub Actions