Arquitectura¶
PortHound esta organizado como una aplicacion local con cuatro capas claras: bootstrap, runtime HTTP/WebSocket, motor de escaneo/persistencia y frontend.
Capas del runtime¶
| Capa | Archivo | Responsabilidad |
|---|---|---|
| Bootstrap | manage.py |
Carga entorno, normaliza el launcher publico y arranca la instancia local. |
| Configuracion | settings.py |
Resuelve variables de entorno y defaults efectivos del runtime. |
| Web backend | app.py |
Expone vistas HTML, API JSON, WebSocket, mapas y telemetria. |
| Persistencia y scan engine | server.py |
Esquema SQLite, normalizacion, workers TCP/UDP/ICMP/SCTP y banner grabbing. |
| UI | frontend/src/ |
SPA Vue 3 + Vuetify para dashboard, tablas, paneles y refresco en vivo. |
Flujo de datos¶
- El usuario crea o edita un
target. app.pyyserver.pyvalidan el payload y lo guardan en SQLite.- Los workers de
TCP,UDP,ICMP,SCTP,BannerTCPyBannerUDPconsumen esos targets. - Los resultados se escriben en
ports,tags,bannersyfavicons. app.pyconstruye snapshots para dashboard, mapa, graficas, endpoint catalog y host intel.frontend/src/state/appStore.jsescucha cambios por WebSocket y refresca vistas relacionadas.
Servicios en segundo plano¶
attack_telemetrygenera eventos sinteticos de ataque para la consola y la vista de resumen.scan_map_telemetryemite snapshots del mapa geolocalizado cuando cambian los hosts.start_scanners_for_dbarranca los workers de escaneo sobre la base activa.ws_demo.pyaporta el registro de clientes WebSocket y el chat efimero.
Archivo por archivo¶
manage.pyaplica politicas de host y puerto fijos para la app local y materializa la configuracion de arranque.settings.pyconsolida los env vars que realmente ve el runtime.app.pyusawsbuilder.Appcomo runtime principal, registra rutas y mantiene caches comoIP_INTEL_CACHE.server.pyconcentra el acceso a SQLite y las reglas de normalizacion de targets, banners, catalogos y scan payloads.frontend/src/state/appStore.jsadministraapiBase, token de acceso, reconexion WebSocket y refresco de tablas.frontend/src/views/define las pantallas activas y las vistas auxiliares.
Superficies auxiliares¶
El repositorio todavia contiene superficies auxiliares en el frontend que sirven como referencia tecnica y para futuras extensiones:
ExplorerView.vuepara busqueda global de targets, servicios, banners, tags y favicons.ChartsView.vuepara analitica D3 sobre el catalogo de scans.TagsView.vuepara el registro de metadatos y tiempos.CatalogView.vueyFileCatalogView.vuepara catalogos DB-backed y seed files.MapWorldView.vuepara el atlas inmersivo con proyecciones flat y globe.
Persistencia y UI¶
La UI no habla con un ORM. Habla con SQLite por medio de server.py y con snapshots JSON por medio de app.py. Esa division es importante: server.py cambia el estado, app.py lo presenta y frontend/src/state/appStore.js decide cuando refrescar.