
Shadowbroker v0.9.84
Plataforma OSINT geoespacial en tiempo real que agrega más de 60 fuentes de telemetría pública (ADS-B, AIS, satélites, CCTV) en un mapa unificado con un kit de reconocimiento del lado del servidor, un canal de agente de IA y comunicaciones descentralizadas en malla.
🛰️ S H A D O W B R O K E R
Intercepción Global de Amenazas — Plataforma de Inteligencia Geoespacial en Tiempo Real
ShadowBroker es una plataforma de inteligencia descentralizada que agrega telemetría OSINT en tiempo real de múltiples dominios desde más de 60 fuentes de inteligencia en vivo en una única interfaz de mapa de operaciones oscuras. Aeronaves, barcos, satélites, zonas de conflicto, redes CCTV, interferencias GPS, dispositivos conectados a internet, escáneres policiales, nodos de radio mesh y eventos geopolíticos de última hora — todo actualizándose en tiempo real en una sola pantalla, así como un protocolo de comunicaciones ofuscado e infraestructura de intercambio de información.
🛰️ Descripción del Proyecto
Construido con Next.js, MapLibre GL, FastAPI y Python. Más de 40 capas de datos alternables, incluyendo detección de cambios en el suelo mediante SAR, Telegram OSINT (vistas previas de canales públicos georreferenciadas en el mapa), un kit de herramientas de reconocimiento del lado del servidor (DNS, WHOIS, sanciones, BGP, barrido de IP y más), superposiciones de riesgo de cadena de suministro, y feeds de amenazas cibernéticas de malware/C2 + CISA KEV. Múltiples modos visuales (DEFAULT / SATELLITE / FLIR / NVG / CRT). Haga clic derecho en cualquier punto de la Tierra para obtener un dossier del país, un resumen del jefe de estado, una expansión del grafo de entidades y la última foto satelital Sentinel-2. ShadowBroker no tiene cuentas, telemetría de producto ni analíticas; el panel se comunica con su backend autoalojado. Las consultas sensibles de reconocimiento y Shodan nunca llegan a APIs de terceros desde el navegador; se enrutan a través del backend con protecciones SSRF y autenticación del operador local. El canal de comandos de agente OpenClaw expone los mismos backends de reconocimiento más la búsqueda completa de telemetría — no se requiere integración API separada.
Diseñado para analistas, investigadores, operadores de radio y cualquier persona que quiera ver cómo se ve el mundo cuando todas las señales públicas están en el mismo mapa.
🌍 Por Qué Existe Esto
Una cantidad sorprendente de telemetría global ya es pública — transmisiones ADS-B de aeronaves, señales AIS marítimas, datos orbitales de satélites, sensores sísmicos, redes de radio mesh, feeds de escáneres policiales, estaciones de monitoreo ambiental, telemetría de infraestructura de internet y más. Estos datos están dispersos en docenas de herramientas y APIs. ShadowBroker combina todo en una sola interfaz.
El proyecto no introduce nuevas capacidades de vigilancia — agrega y visualiza conjuntos de datos públicos existentes. Es completamente de código abierto para que cualquiera pueda auditar exactamente qué datos se acceden y cómo. ShadowBroker no incluye telemetría de producto, analíticas ni cuentas. Las claves proporcionadas por el operador permanecen en su implementación local, pero las funciones OSINT en vivo necesariamente realizan solicitudes salientes a los proveedores de datos públicos que habilite o consulte.
📡 Shodan y Reconocimiento (priorizando la seguridad)
ShadowBroker incluye un conector Shodan opcional para acceso API proporcionado por el operador (SHODAN_API_KEY) y un panel de Kit de Herramientas de Reconocimiento para búsquedas OSINT sin clave. Ambos se ejecutan solo en el lado del servidor: el navegador llama a sus rutas autoalojadas /api/osint/* y /api/tools/shodan/*; las solicitudes salientes son realizadas por el backend después de la validación SSRF. El reconocimiento requiere acceso de operador local (mismo modelo de confianza que las alternancias de capas y rutas de administración). Los resultados de Shodan se renderizan como una superposición de mapa separada y siguen sujetos a los términos de servicio de Shodan.
🗺️ Casos de Uso Interesantes
- Siga al Air Force One, los jets privados de multimillonarios y dictadores, y todos los petroleros militares, ISR y cazas que transmiten ADS-B. Air Force One y todos los aviones presidenciales/vicepresidenciales que lo acompañan se resaltan y monitorean desde el momento en que despegan.
- Conecte un agente de IA como coanalista a través del canal de comandos de agente firmado por HMAC de ShadowBroker — compatible con OpenClaw y cualquier otro agente que hable el protocolo (Claude, GPT, LangChain, personalizado). El agente obtiene acceso completo de lectura/escritura a todas las más de 40 capas de datos, búsqueda compacta entre capas (
search_telemetry,search_news), el kit de herramientas de reconocimiento completo (osint_lookuppara IP/DNS/WHOIS/sanciones/CVE/etc.), expansión de grafos de entidades, colocación de pines, control del mapa, cambio de suelo SAR, redes mesh y entrega de alertas. Ve todo lo que el operador ve y puede tomar acciones en el mapa en tiempo real. - Comuníquese en la testnet InfoNet — La primera malla de inteligencia descentralizada integrada en una herramienta OSINT. Mensajería ofuscada con personajes de puerta, intercambio peer-to-peer Dead Drop y una CLI de terminal integrada. Sin cuentas, sin registro. La privacidad aún no está garantizada — esta es una testnet experimental — pero el protocolo está activo y se está endureciendo.
- Haga clic derecho en cualquier lugar de la Tierra para obtener un dossier del país (jefe de estado, población, idiomas), un resumen de Wikipedia y la última foto satelital Sentinel-2 con resolución de 10 metros.
- Haga clic en un nodo KiwiSDR y sintonice la radio de onda corta en vivo directamente en el panel. Haga clic en un feed de escáner policial y espíe con un solo clic.
- Vea más de 11,000 cámaras CCTV en 6 países — Londres, Nueva York, California, España, Singapur y más — transmitiendo en vivo en el mapa.
- Vea zonas de interferencia GPS en tiempo real — derivadas del análisis de degradación NAC-P de datos de transpondedores de aeronaves.
- Monitoree satélites en órbita codificados por colores según el tipo de misión — reconocimiento militar, SIGINT, SAR, alerta temprana, estaciones espaciales — con redes de estaciones terrestres SatNOGS y TinyGS.
- Siga el tráfico naval incluyendo más de 25,000 embarcaciones AIS, actividad pesquera a través de Global Fishing Watch, y superyates de multimillonarios.
- Siga terremotos, erupciones volcánicas, incendios forestales activos (NASA FIRMS), alertas meteorológicas severas y lecturas de calidad del aire en todo el mundo.
- Mapa de bases militares, más de 35,000 plantas de energía, más de 2,000 centros de datos y regiones de corte de internet — referenciados cruzadamente de forma automática.
- Conéctese a nodos de radio mesh Meshtastic y redes de radioaficionados APRS — visibles en el mapa e integrados en Mesh Chat.
- Detecte cambios en el suelo a través de la cobertura de nubes con SAR (Radar de Apertura Sintética) — deformación del suelo a escala milimétrica, extensión de inundaciones, perturbación de la vegetación y evaluaciones de daños de NASA OPERA y Copernicus EGMS. Defina sus propias áreas de vigilancia y reciba alertas de anomalías. Gratis con una cuenta de NASA Earthdata.
- Cambie modos visuales — DEFAULT, SATELLITE, FLIR (térmico), NVG (visión nocturna), CRT (terminal retro) — a través del botón STYLE.
- Siga trenes en EE. UU. (Amtrak) y Europa (DigiTraffic) en tiempo real.
- Estime dónde están los portaaviones estadounidenses utilizando raspado automatizado de noticias GDELT — ninguna otra herramienta abierta hace esto.
- Busque dispositivos conectados a internet en todo el mundo a través de Shodan — cámaras, sistemas SCADA, bases de datos — trazados como una superposición en vivo en el mapa.
- Ejecute un kit de herramientas de reconocimiento completo desde la barra lateral izquierda — geolocalización IP, DNS, RDAP/WHOIS, transparencia de certificados, BGP/ASN, búsqueda de sanciones OFAC, consulta CVE, verificaciones de amenazas Tor/OTX y barridos de subred (InternetDB proxyado en el lado del servidor).
- Expanda un grafo de entidades cuando seleccione una aeronave, embarcación, empresa o IP — Wikidata + OFAC + enlaces cruzados de tienda en vivo renderizados en el panel Entity Graph.
- Monitoree el riesgo de la cadena de suministro — fábricas de semiconductores y baterías de nivel 1/2 puntuadas contra terremotos cercanos, incendios forestales y eventos de conflicto (panel SCM).
- Active/desactive puntos críticos de malware C2 — feeds de abuse.ch Feodo Tracker + URLhaus mapeados por país (capa opcional).
- Monitoree canales OSINT de Telegram — feeds públicos
t.me/sde guerra/conflicto (OSINTdefender, NEXTA, etc.) raspados cada hora, puntuados por riesgo, georreferenciados a anclas de metro y trazados como pines de mapa cliqueables con medios en línea. - Superponer cables submarinos globales — rutas de cable estáticas derivadas de TeleGeography (capa opcional).
⚡ Inicio Rápido (Docker)
Desde GitHub (predeterminado — usa imágenes GHCR)```bash
git clone https://github.com/bigbodycobain/Shadowbroker.git cd Shadowbroker docker compose pull docker compose up -d
### De GitLab (usa GitLab Container Registry)```bash
git clone https://gitlab.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml pull
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml up -d
Ambos caminos producen contenedores idénticos: misma fuente, mismo CI, mismas imágenes byte por byte. Elige el ecosistema que ya uses.
Abre http://localhost:3000 para ver el panel de control! (Requiere Docker Desktop o Docker Engine)
Únete al enjambre privado InfoNet (sb-testnet-0): Haz clic en NODE en el panel, o ejecuta
./meshnode.shpara un participante sin interfaz. Sin lista manual de pares — la flota por defecto descubre la semilla y obtiene el manifiesto firmado automáticamente. EstableceMESH_INFONET_FLEET_JOIN=falseen.envpara un nodo privado solitario.
¿Puerto del backend ya en uso? El navegador solo necesita el puerto
3000, pero la API del backend también se publica en el puerto del host8000para diagnósticos locales. Si otra aplicación ya usa8000, crea o edita.envjunto adocker-compose.ymly estableceBACKEND_PORT=8001, luego ejecutadocker compose up -d.
¿Noticias/UAP/bases/aguas residuales en blanco después de varios minutos? Verifica reinicios OOM del backend con
docker events --since 30m --filter container=shadowbroker-backend --filter event=oom. El archivo compose predeterminado asigna al backend 4GB; si tu host tiene menos memoria, reduce los feeds habilitados o estableceBACKEND_MEMORY_LIMIT=3Gy espera que las capas más lentas/pesadas se calienten más gradualmente.
Usuarios de Podman: Podman funciona, pero
podman composees un envoltorio y aún necesita un proveedor de Compose instalado. En Windows/WSL, si veslooking up compose provider failed, instalapodman-composey ejecutapodman-compose pullseguido depodman-compose up -ddesde dentro de la carpeta clonadaShadowbroker. En shells de Linux/macOS/WSL también puedes usar./compose.sh --engine podman pully./compose.sh --engine podman up -d.
🔄 Cómo Actualizar
ShadowBroker usa imágenes Docker preconstruidas — no requiere compilación local. La actualización toma segundos:```bash docker compose pull docker compose up -d
Eso es todo. `pull` obtiene las últimas imágenes, `up -d` reinicia los contenedores.
> **¿Vienes de una versión anterior?** Primero obtén el código del repositorio más reciente y luego las imágenes:
>
> ```bash
> git pull origin main
> docker compose down
> docker compose pull
> docker compose up -d
> ```
>
> Los usuarios de Podman deben ejecutar el comando equivalente de su proveedor, por ejemplo `podman-compose pull` y `podman-compose up -d`, o usar `./compose.sh --engine podman pull` y `./compose.sh --engine podman up -d` desde un shell compatible con bash.
### Integridad de las Actualizaciones
Las actualizaciones de Docker se entregan a través de registros de contenedores firmados. El actualizador automático ZIP heredado verifica los archivos de lanzamiento a través de esta cadena, en orden:
* `MESH_UPDATE_SHA256` cuando un operador fija un resumen explícitamente.
* `backend/data/release_digests.json` para pines de lanzamiento incluidos.
* El activo `SHA256SUMS.txt` del lanzamiento en GitHub cuando no hay un pin incluido.
Los mantenedores de versiones deben ejecutar `python backend/scripts/release_helper.py hash <ShadowBroker_vX.Y.Z.zip>` antes de publicar, luego publicar `SHA256SUMS.txt` y actualizar `backend/data/release_digests.json` al enviar un objetivo de actualización ZIP. El actualizador mantiene intacta la ruta de anulación del operador en lugar de fallar de forma cerrada ante la ausencia de resúmenes incluidos, de modo que las instalaciones existentes no queden varadas por un error en el proceso de lanzamiento.
### Endurecimiento de CSP
El frontend de producción se distribuye con un CSP compatible con hidratación y un CSP estricto solo con nonce en `Content-Security-Policy-Report-Only`. Establezca `SHADOWBROKER_STRICT_CSP=1` solo después de verificar que la compilación exacta se hidrata correctamente en su implementación. Las fuentes de Google en tiempo de ejecución no son necesarias; el pipeline de fuentes Next incluido sirve la fuente del panel desde la compilación de la aplicación.
### ⚠️ **¿Atascado en la versión anterior?**
**Si `git pull` falla o `docker compose up` sigue compilando desde el código fuente en lugar de obtener imágenes**, su clonación es anterior a una migración del repositorio de marzo de 2026 que reescribió el historial de commits. Un `git pull` normal no puede solucionarlo. Ejecute:```bash
# Back up any local config you want to keep (.env, etc.)
cd ..
rm -rf Shadowbroker
git clone https://github.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose pull
docker compose up -d
Cómo saber si estás afectado: Si docker compose up muestra RUN apt-get, RUN npm ci, o RUN pip install — está compilando desde el código fuente en lugar de descargar imágenes precompiladas. Necesitas un clon nuevo.
Otras soluciones de problemas:
- Forzar re-descarga:
docker compose pull --no-cache - Purgar imágenes antiguas:
docker image prune -f - Ver registros:
docker compose logs -f backend
☸️ Kubernetes / Helm (Avanzado)
Para despliegues de alta disponibilidad o clústeres de laboratorio en casa, ShadowBroker soporta el despliegue mediante Helm. Este chart está basado en la plantilla bjw-s-labs y proporciona una configuración robusta y modular tanto para el backend como para el frontend.
1. Añadir el Repositorio:```bash helm repo add bjw-s-labs https://bjw-s-labs.github.io/helm-charts/ helm repo update
**2. Instalar el Chart:**```bash
# Default — pulls images from GHCR
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker
# GitLab registry variant
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker \
-f helm/chart/values.yaml \
-f helm/chart/values-gitlab.yaml
3. Características Clave:
- Arquitectura Modular: Escala de forma individual el backend de inteligencia y el frontend HUD.
- Contexto de Seguridad: Se ejecuta con UIDs restringidos (1001) para endurecimiento de contenedores.
- Preparado para Ingress: Compatible con Traefik, Cert-Manager y Gateway API para acceso externo seguro a su nodo de inteligencia.
Agradecimientos especiales a @chr0n1x por contribuir con la arquitectura inicial de Kubernetes.
🌐 Red de Pruebas Experimental — Sin Garantía de Privacidad
ShadowBroker v0.9.7 incluye InfoNet (malla de inteligencia descentralizada + economía de gobernanza Sovereign Shell), un canal de comandos de IA agéntica (compatible con OpenClaw y cualquier agente con firma HMAC), reproducción instantánea de Time Machine y detección de cambios terrestres por satélite SAR. Esta es una red de pruebas experimental — no es un mensajero privado ni un sistema de gobernanza en producción.
| Canal | Estado de Privacidad | Detalles |
|---|---|---|
| Meshtastic / APRS | PÚBLICO | Las transmisiones de radio RF son públicas e interceptables por diseño. |
| InfoNet Gate Chat | OFUSCADO | Los mensajes se ofuscan con personas de puerta y firma canónica de carga útil, pero NO están cifrados de extremo a extremo. Los metadatos no están ocultos a pesar de estar diseñados a través de Tor y Reticulum (Trabajo en progreso). |
| Dead Drop DMs | CANAL MÁS FUERTE ACTUALMENTE | Buzón de correo de época basado en tokens con verificación de palabras SAS. El canal más fuerte en esta compilación, pero aún no confiadamente privado. |
| Gobernanza de Sovereign Shell | LIBRO MAYOR PÚBLICO | Peticiones, votos, hashes de actualización y apuestas de disputa son eventos firmados en una cadena de hash pública. Seudónimo a través de persona de puerta, pero las acciones de gobernanza son intencionalmente observables. |
| Primitivas de privacidad (RingCT / sigilo / DEX) | AÚN NO CONECTADAS | Los contratos de protocolo bloqueados están en su lugar, pero el esquema criptográfico no ha sido elegido. La crate Rust de núcleo de privacidad es el objetivo de integración para un sprint futuro. |
No transmita nada sensible en ningún canal. Trate todos los canales como abiertos y públicos por ahora. El cifrado de extremo a extremo y un endurecimiento nativo/Tauri más profundo son los próximos hitos. Si bifurca este proyecto, mantenga estas etiquetas intactas y no haga afirmaciones de privacidad más fuertes de las que soporta la implementación.
Para una imagen completa de lo que la malla realmente defiende y lo que no, lea el modelo de amenazas y la conciliación de afirmaciones. Cada oración anterior está mapeada allí a la ruta de código que la aplica (o no).
✨ Características
🧅 InfoNet — Malla de Inteligencia Descentralizada + Sovereign Shell (expandido en v0.9.7)
La primera capa de comunicación y gobernanza de inteligencia descentralizada construida directamente en una plataforma OSINT. Sin cuentas, sin registro, sin identidad requerida. v0.9.7 promueve InfoNet de una capa de chat a una economía de gobernanza completa con un camino claro hacia una plataforma de inteligencia descentralizada que preserva la privacidad.
Capa de comunicación (desde v0.9.6):
- InfoNet Red de Pruebas Experimental — Un relevo de mensajes global y ofuscado utilizando Tor y Reticulum. Cualquier persona que ejecute ShadowBroker puede transmitir y recibir en InfoNet. Los mensajes pasan a través de una capa de relevo Wormhole con personas de puerta, firma canónica de carga útil Ed25519 y ofuscación de transporte.
- Panel de Chat de Malla — Interfaz de tres pestañas: INFONET (chat de puerta con transporte ofuscado), MESH (integración de radio Meshtastic), DEAD DROP (intercambio de mensajes peer-to-peer con buzones de correo de época basados en tokens — canal más fuerte actualmente).
- Sistema de Persona de Puerta — Identidades seudónimas con claves de firma Ed25519, paquetes de claves previas, verificación de contacto por palabras SAS e informes de abuso.
- Terminal de Malla — CLI integrada:
send,dm, comandos de mercado, inspección de estado de puerta. Panel arrastrable, se minimiza a la barra superior. Escribahelppara ver todos los comandos. - Pila Criptográfica — Firma Ed25519, Diffie-Hellman X25519, cifrado AESGCM con derivación de clave HKDF, sistema de compromiso de cadena hash. Andamiaje de DM de doble trinquete en progreso.
Sovereign Shell — economía de gobernanza (NUEVO en v0.9.7):
- Peticiones + DSL de Gobernanza — Cambios de parámetros en cadena a través de peticiones firmadas. Ejecutor de carga útil con seguridad de tipos para
UPDATE_PARAM,BATCH_UPDATE_PARAMS,ENABLE_FEATUREyDISABLE_FEATURE. Los parámetros ajustables cambian por voto — no se requieren despliegues de código. - Gobernanza de Hash de Actualización — Las actualizaciones de protocolo que necesitan nueva lógica (no solo cambios de parámetros) votan sobre un hash SHA-256 de la versión verificada. Supermayoría del 80%, cuórum del 40%, activación de Nodo Pesado del 67%. Ciclo de vida: firmas → votación → ventana de desafío → esperando preparación → activado.
- Resolución y Mercados de Disputa — Apueste en resultados de resolución de mercado (sí / no / datos_no_disponibles), abra disputas con evidencia vinculada y apueste en confirmación o reversión de disputa. El estado de envío por fila permanece aislado para que las acciones concurrentes no compartan una ranura en vuelo.
- Envío de Evidencia — Paquetes de evidencia vinculados con canonicalización SHA-256 del lado del cliente que coincide exactamente con
repr()de Python, por lo que los hashes circulan limpiamente a través de la cadena. - Suspensión / Apagado / Apelaciones de Puerta — Formularios de presentación para suspender o apagar una puerta, con un flujo de apelación reutilizable que apunta automáticamente a la petición pendiente.
- Arranque de Nodo Elegible-Un-Voto — Los primeros 100 mercados se resuelven mediante un voto por nodo elegible en lugar de resolución ponderada por apuesta. Elegibilidad: antigüedad de identidad ≥ 3 días, no en conjunto de exclusión de predictor, PoW Argon2id válido (solo Nodo Pesado). Transiciona a resolución apostada en 1000 nodos.
- Finalidad de Dos Niveles + Época — Los eventos de Nivel 1 se propagan al estilo CRDT para baja latencia; los eventos de Nivel 2 requieren finalidad de época antes de poder actuar sobre ellos. Rotación de identidad, penalizaciones progresivas, hitos de rampa e invariantes constitucionales aplicados a través de
MappingProxyType. - Sondeo Adaptativo — Las vistas de Sovereign Shell sondean cada 8 segundos durante fases activas de votación / desafío / activación, cada 30–60 segundos cuando está inactivo. La votación se siente en vivo sin una capa de websocket.
- Diagnósticos Textuales — Cada botón de escritura muestra la razón de rechazo textual del backend. Sin toasts opacos de "denegado".
Pista de primitivas de privacidad (NUEVO en v0.9.7):
- Teclas de Función — Andamiaje de Credencial Anónima — La infraestructura está en su lugar para anuladores, desafío-respuesta, recibos de confirmación en dos fases, códigos de denegación enumerados y liquidación por lotes. El desafío-respuesta de hoy es un marcador de posición basado en HMAC para pruebas de integración, no una prueba de ciudadanía anónima o de conocimiento cero de producción. La verdadera emisión desvinculable aún espera una decisión de primitiva (firmas ciegas RSA vs BBS+ vs U-Prove vs Idemix).
- Contratos de Protocolo Bloqueados — Interfaces estables en
services/infonet/privacy/contracts.pypara firmas de anillo, direcciones sigilosas, compromisos Pedersen, pruebas de rango y coincidencia DEX. La crate Rustprivacy-corees el objetivo de integración — ningún llamante del módulo de privacidad necesita saber qué esquema está activo. - Ruta Sprint 11+ — Cuando se elija el esquema criptográfico, las primitivas se conectarán a los Protocolos bloqueados sin cambios en la API.
Red de Pruebas Experimental — Sin Garantía de Privacidad: Los mensajes de InfoNet están ofuscados pero NO cifrados de extremo a extremo. La red Mesh (Meshtastic/APRS) NO es privada — las transmisiones de radio son inherentemente públicas. Los contratos de primitivas de privacidad están andamiados pero aún no conectados. No envíe nada sensible en ningún canal. Trate todos los canales como abiertos y públicos por ahora.
🔍 Kit de Herramientas de Reconocimiento y Shodan (derivado de Osiris, seguridad primero)
Adaptado de la pila de reconocimiento OSIRIS (MIT) con el modelo proxy de ShadowBroker. Atribución: backend/third_party/osiris/NOTICE.md.
Kit de Herramientas de Reconocimiento (barra lateral izquierda — solo operador local):
- IP / DNS / WHOIS — Geolocalización de ip-api.com, Google DNS-over-HTTPS, datos del registrante RDAP con puntuación opcional de encabezados de seguridad HTTP
- Certificados y BGP — Descubrimiento de subdominios crt.sh, búsquedas de ASN/prefijo bgpview.io
- Inteligencia de amenazas — Pulsos de AlienVault OTX, comprobaciones de nodos de salida Tor, reputación opcional por IP/dominio
- Sanciones — Índice
us_ofac_sdnde OpenSanctions (CC-BY); comprobaciones cruzadas en entidades WHOIS y cadenas ISP/org de IP - CVE / MAC / GitHub / filtraciones — API MITRE CVE, búsqueda de proveedor MAC, reconocimiento de perfil GitHub, comprobaciones de brechas públicas
- Barrido IP —
/api/osint/sweep/scangeolocaliza un objetivo /24–/32 y proxy el descubrimiento de host Shodan InternetDB del lado del servidor (el navegador nunca contacta InternetDB directamente) - Protección SSRF — Los nombres de host privados, de bucle local, link-local y de metadatos se bloquean antes de cualquier recuperación proporcionada por el usuario
Grafo de entidad — Seleccione cualquier entidad del mapa para abrir el panel de Grafo de Entidad (GET /api/entity/expand). Resuelve aeronaves, embarcaciones, empresas, personas, IPs y países en un grafo de nodo/enlace (Wikidata SPARQL + OFAC + almacén en memoria de vuelos/barcos).
OpenClaw / acceso de agente — Los mismos backends de reconocimiento están disponibles en el canal de comandos HMAC (sin puerta de operador local del navegador): osint_lookup (IP/DNS/WHOIS/certs/BGP/sanciones/CVE/MAC/GitHub/filtraciones/amenazas pasivas), entity_expand (grafo de relaciones) y osint_sweep (escaneo de subred activo — solo nivel de acceso completo). Llame a osint_tools para listar los tipos de búsqueda compatibles. Paquete de habilidades: openclaw-skills/shadowbroker/ (SKILL.md + sb_query.py).
Superposición Shodan (sin cambios):
- Búsqueda de Dispositivos de Internet — Consulte Shodan con su propia clave API; los resultados se trazan como una superposición en vivo
- Marcadores Configurables — Personalización de forma, color y tamaño para resultados de Shodan
🛩️ Seguimiento de Aviación
- Vuelos Comerciales — Posiciones en tiempo real a través de OpenSky Network (~5,000+ aeronaves)
- Aeronaves Privadas — Aviación general ligera, turbohélices, aviones de negocios rastreados por separado
- Jets Privados — Aeronaves de individuos de alto patrimonio neto con identificación del propietario
- Vuelos Militares — Cisternas, ISR, cazas, transportes a través del punto final militar de adsb.lol
- Acumulación de Rastro de Vuelo — Rastros de migas de pan persistentes para todas las aeronaves rastreadas
- Detección de Patrón de Espera — Marca automáticamente aeronaves en círculo (>300° de giro total)
- Clasificación de Aeronaves — Iconos SVG precisos de forma: aviones de línea, turbohélices, aviones de negocios, helicópteros
- Detección en Tierra — Aeronaves por debajo de 100 pies AGL renderizadas con iconos grises
🚢 Seguimiento Marítimo
- Flujo de Buques AIS — 25,000+ embarcaciones a través de WebSocket de aisstream.io (tiempo real)
- Clasificación de Buques — Tipos de embarcaciones de carga, tanque, pasajero, yate, militar con iconos codificados por colores
- Rastreador de Grupo de Ataque de Portaaviones — Los 11 portaaviones activos de la Armada de EE. UU. con posiciones estimadas por OSINT. Ninguna otra herramienta abierta hace esto.
- Raspado automatizado de noticias GDELT analiza informes de movimiento de portaaviones para estimar posiciones
- 50+ mapeos de región geográfica a coordenadas (ej. "Mediterráneo Oriental" → lat/lng)
- Posiciones almacenadas en caché de disco, se actualiza automáticamente a las 00:00 y 12:00 UTC
- Cruceros y Buques de Pasajeros — Capa dedicada para cruceros y transbordadores
- Actividad Pesquera — Eventos de embarcaciones de Global Fishing Watch (NUEVO)
- Visualización Agrupada — Los barcos se agrupan en zoom bajo con etiquetas de recuento, se desagrupan al acercar
🚆 Seguimiento Ferroviario (NUEVO en v0.9.6)
- Trenes Amtrak — Posiciones en tiempo real de trenes Amtrak en EE. UU. con velocidad, rumbo, ruta y estado
- Ferrocarril Europeo — Integración DigiTraffic para posiciones de trenes europeos
🛰️ Espacio y Satélites
- Seguimiento Orbital — Posiciones de satélites en tiempo real a través de datos TLE de CelesTrak + propagación SGP4 (2,000+ satélites activos, sin clave API requerida)
- Clasificación por Tipo de Misión — Codificado por colores por misión: reconocimiento militar (rojo), SAR (cian), SIGINT (blanco), navegación (azul), alerta temprana (magenta), imágenes comerciales (verde), estación espacial (oro)
- Estaciones Terrestres SatNOGS — Red de estaciones terrestres de satélites amateur con datos de observación en vivo (NUEVO)
- Satélites LoRa TinyGS — Seguimiento de constelación de satélites LoRa (NUEVO)
🌍 Geopolítica y Conflictos
- Incidentes Globales — Agregación de eventos de conflicto impulsada por GDELT (últimas 8 horas, ~1,000 eventos)
- Frente de Ucrania — GeoJSON de frente de guerra en vivo desde DeepState Map
- Alertas Aéreas de Ucrania — Alertas de incursión aérea regionales en tiempo real (NUEVO)
- Fuente de Noticias SIGINT/RISINT — Agregación RSS en tiempo real de múltiples fuentes centradas en inteligencia con fuentes personalizables por el usuario (hasta 20 fuentes, pesos de prioridad configurables 1-5)
- Dossier de Región — Haga clic derecho en cualquier lugar de la Tierra para un informe de inteligencia instantáneo:
- Perfil del país (población, capital, idiomas, monedas, área)
- Jefe de Estado actual y tipo de gobierno (consulta en vivo Wikidata SPARQL)
- Resumen local de Wikipedia con miniatura
- Última foto satelital Sentinel-2 con fecha de captura y cobertura de nubes (resolución de 10 m)
🛰️ Imágenes Satelitales
- NASA GIBS (MODIS Terra) — Superposición diaria de imágenes satelitales en color verdadero con control deslizante de tiempo de 30 días, reproducción/pausa de animación y control de opacidad (~250 m/píxel)
- Alta Resolución Satelital (Esri) — Imágenes de resolución submétrica a través de Esri World Imagery — acerque a edificios y detalles del terreno (zoom 18+)
- Tarjeta de Inteligencia Sentinel-2 — Haga clic derecho en cualquier lugar del mapa para una tarjeta de inteligencia flotante que muestra la última foto satelital Sentinel-2 con fecha de captura, % de cobertura de nubes e imagen de resolución completa en la que se puede hacer clic (resolución de 10 m, actualizada cada ~5 días)
- API de Proceso de Sentinel Hub — Imágenes satelitales Copernicus CDSE con flujo de token OAuth2 (NUEVO)
- Luces Nocturnas VIIRS — Superposición de detección de cambios de luz nocturna (NUEVO)
- 5 Modos Visuales — Alterne toda la estética del mapa a través del botón ESTILO:
- PREDETERMINADO — Mapa base CARTO oscuro
- SATELITAL — Esri World Imagery submétrica
- FLIR — Estética de imágenes térmicas (escala de grises invertida)
- NVG — Fósforo verde de visión nocturna
- CRT — Superposición de líneas de escaneo de terminal retro
🛰️ Detección de Cambios Terrestres SAR (NUEVO)
- Capa de Radar de Apertura Sintética — Detecta cambios en el suelo a través de la cobertura de nubes, de noche, en cualquier lugar de la Tierra. Dos modos, ambos gratuitos:
- Modo A (Catálogo) — Metadatos de escena gratuitos de Sentinel-1 del Alaska Satellite Facility. Sin cuenta requerida. Muestra cuándo ocurrieron los pasos de radar sobre sus AOI y cuándo viene el próximo paso.
- Modo B (Anomalías Completas) — Alertas de cambio de suelo en tiempo real de NASA OPERA (DISP, DSWx, DIST-ALERT) y Copernicus EGMS. Requiere una cuenta gratuita de NASA Earthdata — el asistente en la aplicación lo guía a través de la configuración en menos de un minuto.
- Tipos de Anomalía — Deformación del suelo (subsidencia a escala mm, deslizamientos de tierra), cambio de agua superficial (extensión de inundación), perturbación de vegetación (deforestación, cicatrices de incendio, cráteres de explosión), evaluaciones de daños (UNOSAT/Copernicus EMS verificados) y detección de cambio de coherencia
- Visualización en el Mapa — Pines de anomalía codificados por colores según el tipo (naranja para deformación, cian para agua, verde para vegetación, rojo para daño, morado para coherencia). Límites de AOI dibujados como polígonos discontinuos con coloración basada en categoría. Haga clic en cualquier pin para un popup de detalle con magnitud, confianza, solucionador, recuento de escenas y enlace de procedencia.
- Editor de AOI — Defina áreas de interés directamente desde el mapa. Haga clic en el botón "EDITAR AOI" cuando la capa SAR esté activa, luego use la herramienta de mira para hacer clic y soltar un centro de AOI en el mapa. Establezca nombre, radio (1–500 km) y categoría. Los AOI aparecen en el mapa inmediatamente.
- Integración con OpenClaw — El agente de IA puede inspeccionar detalles de anomalía SAR (
sar_pin_click) y volar el mapa del operador a cualquier centro de AOI (sar_focus_aoi) — permitiendo flujos de trabajo de analista colaborativos. - Panel de Configuración — Pestaña SAR dedicada en Configuración que muestra el estado del Modo A/B, el estado de integración de OpenClaw y permite revocar las credenciales de Earthdata con un clic.
📻 Radio Definida por Software y SIGINT
- Receptores KiwiSDR — 500+ receptores SDR públicos trazados en todo el mundo con marcadores ámbar agrupados
- Sintonizador de Radio en Vivo — Haga clic en cualquier nodo KiwiSDR para abrir un sintonizador SDR incrustado directamente en el panel SIGINT
- Visualización de Metadatos — Nombre del nodo, ubicación, tipo de antena, bandas de frecuencia, usuarios activos
- Radio de Malla Meshtastic — Integración de radio de malla basada en MQTT con mapa de nodos, integrado en Chat de Malla (NUEVO)
- Integración APRS — Posicionamiento de radioaficionados a través de feed TCP APRS-IS (NUEVO)
- Detección de Interferencia GPS — Análisis en tiempo real de valores NAC-P (Categoría de Precisión de Navegación) de aeronaves
- La agregación basada en cuadrícula identifica zonas de interferencia
- Cuadrados de superposición rojos con etiquetas de severidad "INTERFERENCIA GPS XX%"
- Panel de Interceptación de Radio — IU estilo escáner con feeds de escáner policial/bomberos de OpenMHZ. Haga clic en cualquier sistema para escuchar en vivo. El modo de escaneo recorre automáticamente los feeds activos. Escuche con un clic comunicaciones de emergencia reales.
📷 Vigilancia
- Malla CCTV — 22,000+ cámaras de tráfico en vivo de 21 ingestores en 10 países (EE. UU., Reino Unido, Canadá, Australia, Austria, España, Singapur, Países Bajos cuando el feed NDW está activo, más OSM):
- 🇬🇧 Transport for London JamCams
- 🇺🇸 NYC DOT, Austin TX (TxDOT)
- 🇺🇸 California (12 distritos de Caltrans), Estado de Washington (WSDOT), Georgia DOT, Illinois DOT, Michigan DOT
- 🇪🇸 DGT Nacional España (20 ciudades), Ayuntamiento de Madrid (357 cámaras a través de KML)
- 🇦🇹 Autopistas ASFINAG Austria webcams
- 🇸🇬 LTA Singapur
- 🌍 Windy Webcams
- Renderizado de Feed — Detección y renderizado automáticos de feeds de video, MJPEG, HLS, incrustación, mosaico satelital e imagen
- Visualización de Mapa Agrupado — Puntos verdes se agrupan con etiquetas de recuento, se desagrupan al acercar
🔥 Monitoreo Ambiental y de Peligros
- Puntos Calientes de Incendios NASA FIRMS (24h) — 5,000+ anomalías térmicas globales del satélite NOAA-20 VIIRS, actualizadas cada ciclo. Iconos en forma de llama codificados por colores según la potencia radiativa del incendio (FRP): amarillo (bajo), naranja, rojo, rojo oscuro (intenso). Agrupados en zoom bajo con marcadores de grupo con forma de fuego.
- Volcanes — Volcanes del Holoceno del Programa de Vulcanismo Global Smithsonian trazados en todo el mundo (NUEVO)
- Alertas Meteorológicas — Polígonos de clima severo con indicadores de urgencia/severidad (NUEVO)
- Calidad del Aire (PM2.5) — Estaciones OpenAQ en todo el mundo con lecturas de partículas en tiempo real (NUEVO)
- Terremotos (24h) — Feed de terremotos en tiempo real del USGS con marcadores escalados por magnitud
- Insignia del Clima Espacial — Indicador de tormenta geomagnética NOAA en vivo en la barra de estado inferior. Índice Kp codificado por colores: verde (tranquilo), amarillo (activo), rojo (tormenta G1–G5). Datos del feed planetario del índice K de 1 minuto del SWPC.
🏗️ Monitoreo de Infraestructura* Monitor de Cortes de Internet — Alertas regionales de conectividad a internet desde Georgia Tech IODA. Marcadores grises en regiones afectadas con porcentaje de severidad. Utiliza solo fuentes de datos confiables (tablas de enrutamiento BGP, sondeo activo de ping) — sin datos de telescopio ni interpolados.
- Mapeo de Centros de Datos — Más de 2,000 centros de datos globales trazados a partir de un conjunto de datos curado. Marcadores púrpura agrupados con iconos de racks de servidores. Haga clic para operador, ubicación y referenciación cruzada automática de cortes de internet por país.
- Bases Militares — Base de datos global de instalaciones militares y sitios de misiles (NUEVO)
- Plantas de Energía — Más de 35,000 plantas de energía globales de la base de datos WRI (NUEVO)
- Cables Submarinos — Rutas globales de cables submarinos a partir de GeoJSON estático derivado de TeleGeography (
frontend/public/data/submarine-cables.json). Superposición de líneas opcional. - Capa de C2 de Malware — Servidores C2 de botnets (Feodo Tracker) y URLs recientes de malware (URLhaus) de abuse.ch, actualizados en el nivel lento cuando la capa está habilitada.
- Riesgo de Proveedores SCM — Fábricas de nivel 1/2 y plantas de baterías (TSMC, Samsung, CATL, etc.) referenciadas cruzadamente contra terremotos, incendios FIRMS y proximidad de conflictos GDELT. Alertas en el panel SCM; capa de mapa opcional.
- Feed de Amenazas Cibernéticas — Entradas recientes de Vulnerabilidades Explotadas Conocidas (KEV) de CISA expuestas a través de
/api/cyber-threatsy el alternador de capa. - Índice de Riesgo País — Puntuaciones estáticas de riesgo geopolítico con enriquecimiento de terremotos del USGS a través de
/api/country-risk. - OSINT de Telegram — Vistas previas web de canales públicos (
t.me/s/*) de fuentes configurables de guerra/OSINT. Fusión incremental por hora (sin re-raspado redundante), puntuación de riesgo por palabras clave, alias de lugares en cirílico/árabe, geocodificación con anclaje de metro (separada de los centroides de noticias), foto/video en línea a través del proxy/api/telegram/media. Clave de capa:telegram_osint.
🌐 Capas y Herramientas Adicionales
- Ciclo Día/Noche — Superposición del terminador solar que muestra el día/noche global
- Ticker de Mercados Globales — Índices de mercados financieros en vivo (minimizable)
- Herramienta de Medición — Medición de distancia y rumbo punto a punto en el mapa
- Barra LOCATE — Buscar por coordenadas (31.8, 34.8) o nombre de lugar (Teherán, Estrecho de Ormuz) para volar directamente a cualquier ubicación — geocodificado a través de OpenStreetMap Nominatim
Gaza
🤖 Canal de Comandos de IA Agéntica — OpenClaw + Agentes Compatibles (expandido en v0.9.7)
ShadowBroker expone un canal de comandos de IA agéntica bidireccional — un puente firmado y con niveles de acceso que otorga a cualquier agente de IA compatible acceso completo de lectura/escritura a la plataforma de inteligencia. OpenClaw es el agente de referencia, pero el canal es un protocolo abierto: cualquier agente impulsado por LLM que firme solicitudes con HMAC-SHA256 (Claude Code, GPT, LangChain, clientes personalizados de Python/TypeScript, o su propia integración) puede conectarse como un analista que ve los mismos datos que el operador y puede realizar acciones en el mapa. ShadowBroker no incluye un LLM, un entorno de ejecución de agente o pesos de modelo — proporciona la superficie; usted trae el agente.
v0.9.7 convierte a ShadowBroker de un panel que un humano observa en una superficie de inteligencia sobre la que cualquier agente puede actuar.
Transporte del canal (NUEVO en v0.9.7):
- Canal de Comando Único —
POST /api/ai/channel/commandacepta{cmd, args}y lo envía a cualquier herramienta registrada. - Ejecución Concurrente por Lotes —
POST /api/ai/channel/batchacepta hasta 20 comandos en una sola solicitud. El backend los ejecuta concurrentemente y devuelve un mapa de resultados en abanico. Reduce la latencia del agente en un orden de magnitud en comparación con llamadas secuenciales. - Acceso por Niveles —
OPENCLAW_ACCESS_TIERcontrola qué comandos puede llamar el agente:restrictedexpone el conjunto de solo lectura,fullañade escrituras e inyección. El endpoint de descubrimiento devuelveavailable_commandspara que el agente pueda inspeccionar sus propias capacidades. - Firma HMAC-SHA256 — Cada comando se firma
HMAC-SHA256(secret, METHOD|path|timestamp|nonce|sha256(body))con protección de repetición por timestamp + nonce e integridad de solicitud. Soporta modo local (sin configuración) y modo remoto (agente en una máquina diferente / VPS).
Capacidades:
- Acceso Completo a Telemetría — El agente consulta todas las más de 40 capas de datos: vuelos, barcos, satélites, SIGINT, eventos de conflicto, terremotos, incendios, aguas residuales, OSINT de Telegram, malware/C2, amenazas cibernéticas CISA KEV, superposiciones SCM, actividad pesquera (GFW), mercados de predicción y más. Los endpoints de nivel rápido y lento devuelven datos enriquecidos con coordenadas geográficas, marcas de tiempo y atribución de fuente.
- Búsqueda Compacta (preferida sobre volcados completos) —
get_summary→get_layer_sliceconsince_layer_versionspor capa (el push SSElayer_changedle dice al agente exactamente qué capas se actualizaron).search_telemetryes el índice de palabras clave entre capas al estilo Google.search_newscubre noticias, GDELT, CrowdThreat, LiveUAMap, frentes de batalla y publicaciones de Telegram.entities_near,brief_area,find_flights/find_ships/find_entityycorrelate_entityresponden preguntas específicas sin descargas de varios megabytes. - Kit de Reconocimiento en el Canal —
osint_lookupejecuta los mismos backends protegidos contra SSRF que el panel de Recon (ip,dns,whois,certs,bgp,sanctions,cve,mac,github,leaks,threats,sweep_init).entity_expandconstruye gráficos de relaciones de Wikidata + OFAC.osint_sweepejecuta descubrimiento de subredes de Shodan InternetDB (nivel completo). Alias de capa:telegram,malware/botnet,cyber/cisa/kev,scm/suppliers,gfw/fishing. - Pines de Inteligencia de IA — Coloca marcadores de investigación con código de colores directamente en el mapa del operador. 14 categorías de pines (amenaza, anomalía, militar, marítimo, aviación, SIGINT, infraestructura, etc.) con puntuaciones de confianza, caducidad TTL, URLs de origen y colocación por lotes de hasta 100 pines a la vez.
- Control del Mapa — Vuela la vista del mapa del operador a cualquier coordenada, activa búsquedas de imágenes satelitales y abre dosieres de región. El agente puede dirigir la atención del operador a ubicaciones específicas en tiempo real.
- Cambio de Terreno SAR — Consulta feeds de anomalías SAR, inspecciona detalles de pines, gestiona AOIs y vuela el mapa para vigilar áreas. El agente puede monitorear deformación del terreno, extensión de inundaciones o daños y promocionar anomalías a pines.
- Inyección de Capa Nativa — Introduce datos personalizados directamente en las capas nativas de ShadowBroker (cámaras CCTV, barcos, nodos SIGINT, bases militares, etc.) para que las fuentes descubiertas por el agente se representen junto a los feeds reales.
- Participación en Malla Wormhole — El agente puede unirse a la InfoNet descentralizada, publicar mensajes firmados, unirse a canales de puerta cifrados, enviar/recibir mensajes directos cifrados e interactuar con la radio Meshtastic y Dead Drops — operando como un par de malla completo.
- Participación en Sovereign Shell (v0.9.7) — Presentar peticiones, firmar y votar cambios de gobernanza, apostar en resoluciones y disputas, señalar la preparación de Heavy-Node para actualizaciones — todo programáticamente, todo controlado por nivel y HMAC. Los agentes se convierten en participantes de primera clase en la economía de inteligencia descentralizada.
- Geocodificación y Escaneos de Proximidad — Resuelve nombres de lugares a coordenadas, luego escanea todas las capas dentro de un radio para obtener un resumen completo de proximidad.
- Noticias y GDELT Cerca de una Ubicación — Extrae eventos de conflicto de GDELT y artículos de noticias agregados cerca de cualquier coordenada para conciencia situacional regional.
- Entrega de Alertas — Envía resúmenes de inteligencia con marca, advertencias y notificaciones de amenazas a webhooks de Discord y canales de Telegram.
- Informes de Inteligencia — Genera informes estructurados con estadísticas resumidas, principales vuelos militares, correlaciones, actividad sísmica, recuentos de SIGINT e inventarios de pines.
- Auditable — Cada llamada al canal se registra; el operador puede inspeccionar lo que el agente ha hecho.
Conecta un agente: Abre el panel de AI Intel en la barra lateral izquierda, haz clic en Conectar Agente y copia el secreto HMAC. Desde allí, apunta cualquier agente compatible al canal — para OpenClaw, importa ShadowBrokerClient desde openclaw-skills/shadowbroker/sb_query.py (consulta SKILL.md para ejemplos); para cualquier otro agente, usa el mismo contrato HMAC documentado anteriormente (timestamp + nonce + digest del cuerpo, controlado por nivel). Descubrimiento: GET /api/ai/tools y GET /api/ai/capabilities. El canal es el protocolo, no el agente.
Docker Compose + agentes remotos: La interfaz del panel se comunica con el backend a través del puente privado de Docker (confianza automática). Un agente OpenClaw ejecutándose en el host (fuera del contenedor) accede a http://localhost:8000 desde la IP de la puerta de enlace de Docker — HMAC es requerido allí. En AI Intel → Conectar Agente, haz clic en Bootstrap luego Revelar, copia SHADOWBROKER_HMAC_SECRET en el entorno de tu agente, y reinicia el backend una vez para que data/openclaw.env en el volumen backend_data se cargue. Prueba rápida con:
curl -s -X POST 'http://localhost:8000/api/ai/channel/command' \
-H 'X-HMAC-Signature: ...' \
-H 'Content-Type: application/json' \
-d '{"cmd":"ping","args":{}}'
Deberías ver {"status":"ok","message":"pong"} como respuesta. Si obtienes 401 o 403, vuelve a verificar tu secreto HMAC y los registros del backend.```bash
export SHADOWBROKER_URL=http://127.0.0.1:8000
export SHADOWBROKER_HMAC_SECRET=
python openclaw-skills/shadowbroker/verify_hmac.py
Usa el puerto del backend (`:8000`), no el puerto del panel de Next.js (`:3000`). Los firmantes hechos a mano deben hashear los bytes exactos del POST: `json.dumps(payload, separators=(",", ":"), sort_keys=True)`.
### ⏱️ Máquina del Tiempo — Reproducción de Instantáneas (NUEVO en v0.9.7)
Un transporte al estilo multimedia para todo el flujo de telemetría. Trata el mapa en vivo como una grabación que se puede adelantar, pausar y reproducir.
* **Alternancia En Vivo ↔ Instantánea** — Cambiar al modo instantánea pausa el bucle de sondeo global al instante; volver a En Vivo invalida los ETags y fuerza la actualización de los niveles rápido y lento para que el panel se ponga al día sin parpadeo de fotogramas obsoletos.
* **Índice por Hora** — Cada instantánea capturada se indexa por su bloque horario con `count`, `latest_id`, `latest_ts` y la lista completa de `snapshot_ids`. Salta a cualquier marca de tiempo capturada directamente desde el control de línea de tiempo.
* **Interpolación de Fotogramas** — Las entidades en movimiento (aeronaves, barcos, satélites, vuelos militares) se interpolan suavemente entre los fotogramas grabados durante la reproducción para que el movimiento se mantenga continuo incluso cuando las instantáneas son escasas.
* **Velocidad de Reproducción Variable** — Avance paso a paso, reproducción, avance rápido y retroceso a través de la telemetría guardada a velocidad ajustable.
* **Consciente del Perfil** — Cada instantánea registra el perfil de privacidad que estaba activo cuando se capturó, por lo que la reproducción es fiel a lo que un operador con ese perfil habría visto.
* **Del Lado del Operador, No del Servidor** — Las instantáneas se almacenan localmente en el backend; ningún tercero ve nunca la línea de tiempo de reproducción.
### 📦 Panel de Claves API — Primero la Ruta, Solo Lectura (NUEVO en v0.9.7)
Configuración → Claves API ahora es un registro de solo lectura. Los valores de las claves nunca llegan al proceso del navegador — ni siquiera un prefijo ofuscado. El panel muestra:
* La ruta absoluta al archivo `.env` del backend según la resuelve `Path(__file__).resolve()` — funciona en todos los SO, todas las unidades, todas las ubicaciones de instalación (Linux `/home/...`, macOS `/Users/...`, Windows en cualquier unidad, contenedores Docker, VMs en la nube).
* Indicadores `[exists]` / `[will be created on first save]` / `[NOT WRITABLE — edit by hand]` en la ruta misma.
* La ruta a la plantilla `.env.example` para que los usuarios puedan copiarla y completar sus claves.
* Una insignia binaria `CONFIGURED` / `NOT CONFIGURED` por clave, más una línea de env copiable (ej. `OPENSKY_CLIENT_ID=YOUR_VALUE`) que el usuario puede insertar manualmente en el archivo.
Las credenciales de la API de OpenSky ahora son un requisito de entorno **critical-warn**: la verificación de entorno al inicio marca las credenciales OAuth2 de OpenSky faltantes con una advertencia fuerte, y el modal de registro de cambios enlaza directamente a la página de registro gratuito. Sin ellas, la capa de vuelos recurre a cobertura solo ADS-B con vacíos significativos en África, Asia y Latinoamérica.
</details>
---
<details>
<summary>🏗️ Arquitectura</summary>
ShadowBroker v0.9.7 se compone de tres planos apilados verticalmente — la **Interfaz de Usuario del Operador**, el **Plano de Servicio Backend** y la **Capa Descentralizada (InfoNet)** — más dos puentes transversales (la **Máquina del Tiempo** y el **Canal de IA Agéntica**, que es el protocolo a través del cual se conectan OpenClaw y cualquier otro agente compatible) y un **Núcleo de Privacidad** (crate Rust) que respalda tanto la malla heredada como el futuro trabajo de monedas protegidas / DEX.```
╔═════════════════════════════════════════════════════════════════════════════╗
║ OPERATOR UI (Next.js + MapLibre) ║
║ ║
║ ┌────────────────┐ ┌──────────┐ ┌────────────────┐ ┌────────────────┐ ║
║ │ MapLibre GL │ │ NewsFeed │ │ Sovereign Shell│ │ Mesh Chat │ ║
║ │ WebGL render │ │ SIGINT │ │ Petitions / │ │ + Mesh Term. │ ║
║ │ + clusters │ │ GDELT │ │ Upgrades / │ │ (Infonet / │ ║
║ │ │ │ Threat │ │ Disputes / │ │ Mesh / │ ║
║ │ │ │ │ │ Gates / │ │ Dead Drop) │ ║
║ │ │ │ │ │ Bootstrap / │ │ │ ║
║ │ │ │ │ │ Function Keys │ │ │ ║
║ └──────┬─────────┘ └────┬─────┘ └────────┬───────┘ └────────┬───────┘ ║
║ │ │ │ │ ║
║ ┌──────┴─────────────────┴─────────────────┴───────────────────┴───────┐ ║
║ │ Time Machine ◀── snapshot playback ── snapshotMode toggle ──▶ Live │ ║
║ │ hourly index │ frame interpolation │ profile-aware │ per-tier ETag │ ║
║ └──────────────────────────────────┬───────────────────────────────────┘ ║
║ │ REST + /api/[...path] proxy ║
╠═════════════════════════════════════╪═══════════════════════════════════════╣
║ BACKEND SERVICE PLANE (FastAPI) ║
║ │ ║
║ ┌──────────────────────────────────┴────────────────────────────────────┐ ║
║ │ Data Fetcher (APScheduler — fast / slow tiers) │ ║
║ │ │ ║
║ │ ┌───────────┬───────────┬───────────┬───────────┬───────────┐ │ ║
║ │ │ OpenSky* │ adsb.lol │ CelesTrak │ USGS │ AIS WS │ │ ║
║ │ │ Flights │ Military │ Sats │ Quakes │ Ships │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Carrier │ GDELT │ CCTV (12) │ DeepState │ NASA │ │ ║
║ │ │ Tracker │ Conflict │ Cameras │ Frontline │ FIRMS │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ GPS │ KiwiSDR │ Shodan │ Amtrak │ SatNOGS │ │ ║
║ │ │ Jamming │ Radios │ Devices │ DigiTraf │ TinyGS │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Volcanoes │ Weather │ Fishing │ Mil Bases │ IODA │ │ ║
║ │ │ Air Qual │ Alerts │ Activity │ PwrPlants │ Outages │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Sentinel │ MODIS │ VIIRS │ Data │ Meshtastic│ │ ║
║ │ │ Hub/STAC │ Terra │ Nightlts │ Centers │ APRS │ │ ║
║ │ ├───────────┴───────────┴───────────┴───────────┴───────────┤ │ ║
║ │ │ SAR (NEW v0.9.7) │ │ ║
║ │ │ Mode A: ASF Search catalog (free, no account) │ │ ║
║ │ │ Mode B: NASA OPERA / Copernicus EGMS / GFM / EMS / │ │ ║
║ │ │ UNOSAT ground-change anomalies (opt-in) │ │ ║
║ │ └───────────────────────────────────────────────────────────┘ │ ║
║ │ * OpenSky: REQUIRED for global flight coverage │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌──────────────────────────────────┴────────────────────────────────────┐ ║
║ │ Snapshot Store (Time Machine source) │ ║
║ │ Hourly index │ per-snapshot layer manifest │ profile metadata │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌───────────────────────────────────────────────────────────────────────┐ ║
║ │ Agentic AI Channel (HMAC-SHA256, tier-gated — OpenClaw + others) │ ║
║ │ │ ║
║ │ POST /api/ai/channel/command → one tool call │ ║
║ │ POST /api/ai/channel/batch → up to 20 concurrent tool calls │ ║
║ │ │ ║
║ │ Tier: restricted (read-only) │ full (read + write + inject) │ ║
║ │ Auth: X-SB-Timestamp + X-SB-Nonce + X-SB-Signature │ ║
║ │ Sig = HMAC-SHA256(secret, METHOD|path|ts|nonce|sha256(body)) │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
╠═════════════════════════════════════════════════════════════════════════════╣
║ DECENTRALIZED LAYER (InfoNet Testnet — signed events) ║
║ ║
║ ┌────────────────────────────┐ ┌──────────────────────────────────┐ ║
║ │ Mesh Hashchain │ │ Sovereign Shell Governance │ ║
║ │ │ │ │ ║
║ │ Ed25519 signed events │ │ Petitions (DSL: UPDATE_PARAM, │ ║
║ │ Public-key binding │ │ ENABLE_FEATURE …) │ ║
║ │ Replay / sequence guard │ │ Upgrade-Hash voting (80% / 40% │ ║
║ │ Two-tier finality │ │ quorum / 67% Heavy) │ ║
║ │ ├ Tier 1 (CRDT, fast) │ │ Resolution & Dispute markets │ ║
║ │ └ Tier 2 (epoch finality)│ │ Gate suspend / shutdown / appeal│ ║
║ │ Identity rotation │ │ Bootstrap eligible-node-1-vote │ ║
║ │ Constitutional invariants │ │ (Argon2id PoW, Heavy-Node only)│ ║
║ │ (MappingProxyType) │ │ Function Keys (5 of 6 pieces) │ ║
║ └─────────────┬──────────────┘ └─────────────┬────────────────────┘ ║
║ │ │ ║
║ └──────────────┬──────────────────┘ ║
║ │ ║
║ ┌────────────────────────────┴──────────────────────────────────────┐ ║
║ │ Wormhole / InfoNet Relay (transport layer) │ ║
║ │ Gate personas │ canonical signing │ Dead Drop epoch mailboxes │ ║
║ └───────────────────────────────────────────────────────────────────┘ ║
╠═════════════════════════════════════════════════════════════════════════════╣
║ PRIVACY CORE (Rust crate — locked Protocol contracts) ║
║ ║
║ privacy-core/ ─► Argon2id │ Ed25519/X25519 │ AESGCM │ HKDF ║
║ Ring sigs* │ Stealth addrs* │ Pedersen* │ Bulletproofs*║
║ Blind-sig issuance* (RSA / BBS+ / U-Prove / Idemix) ║
║ ║
║ * = locked Protocol contract; cryptographic primitive lands Sprint 11+ ║
╚═════════════════════════════════════════════════════════════════════════════╝
Distribution
────────────
GitHub (primary): ghcr.io/bigbodycobain/shadowbroker-{backend,frontend}
GitLab (mirror): registry.gitlab.com/bigbodycobain/shadowbroker/{backend,frontend}
Multi-arch: linux/amd64 + linux/arm64 (Raspberry Pi 5 supported)
Desktop: Tauri shell → packaged backend-runtime + Next.js frontend
📊 Fuentes de datos y APIs
| Fuente | Datos | Frecuencia de actualización | ¿Requiere clave API? |
|---|---|---|---|
| OpenSky Network | Vuelos comerciales y privados | ~60s | Sí |
| adsb.lol | Aeronaves militares | ~60s | No |
| aisstream.io | Posiciones de buques AIS | WebSocket en tiempo real | Sí |
| CelesTrak | Posiciones orbitales de satélites (TLE + SGP4) | ~60s | No |
| USGS Earthquake | Eventos sísmicos globales | ~60s | No |
| GDELT Project | Eventos de conflicto global | ~6h | No |
| DeepState Map | Línea del frente en Ucrania | ~30min | No |
| Shodan | Búsqueda de dispositivos conectados a Internet | Bajo demanda | Sí |
| OpenSanctions | Índice de sanciones OFAC SDN (reconocimiento + grafo de entidades) | Caché de 24h | No |
| abuse.ch Feodo + URLhaus | URLs de C2/distribución de malware | ~5min (capa opt-in) | No |
| CISA KEV | CVEs explotados conocidos | ~5min (capa opt-in) | No |
| ip-api.com | Geolocalización IP (reconocimiento, grafo de entidades) | Bajo demanda | No |
| Google Public DNS | Consultas DNS sobre HTTPS (reconocimiento) | Bajo demanda | No |
| RDAP.org | Datos de registro de dominios (reconocimiento) | Bajo demanda | No |
| crt.sh | Transparencia de certificados (reconocimiento) | Bajo demanda | No |
| bgpview.io | Enrutamiento BGP/ASN (reconocimiento) | Bajo demanda | No |
| TeleGeography (estático) | Rutas de cables submarinos | Estático | No |
| ASFINAG | Webcams de autopistas en Austria | ~10min | No |
| Amtrak | Posiciones de trenes en EE. UU. | ~60s | No |
| DigiTraffic | Posiciones de trenes europeos | ~60s | No |
| Global Fishing Watch | Eventos de actividad de buques pesqueros | ~1h | Sí (GFW_API_TOKEN) |
| Vistas previas públicas de Telegram | Publicaciones de canales de guerra/OSINT (telegram_osint) | ~1h | No (opcional TELEGRAM_OSINT_CHANNELS) |
| Transport for London, NYC DOT, TxDOT | Cámaras CCTV (Reino Unido, EE. UU.) | ~10min | No |
| Caltrans, WSDOT, GDOT, IDOT, MDOT | Cámaras CCTV (5 estados de EE. UU.) | ~10min | No |
| Spain DGT, Madrid City | Cámaras CCTV (España) | ~10min | No |
| Singapore LTA | Cámaras de tráfico en Singapur | ~10min | Sí |
| Windy Webcams | Webcams globales | ~10min | No |
| SatNOGS | Estaciones terrestres de satélites amateur | ~30min | No |
| TinyGS | Estaciones terrestres de satélites LoRa | ~30min | No |
| Meshtastic MQTT | Posiciones de nodos de radio mesh | En tiempo real | No |
| APRS-IS | Posiciones de radio amateur | TCP en tiempo real | No |
| KiwiSDR | Ubicaciones de receptores SDR públicos | ~30min | No |
| OpenMHZ | Transmisiones de escáner policial/bomberos | En tiempo real | No |
| Smithsonian GVP | Volcanes del Holoceno en todo el mundo | Estático (en caché) | No |
| OpenAQ | Estaciones de calidad del aire PM2.5 | ~120s | No |
| NOAA / NWS | Alertas meteorológicas severas y polígonos | ~120s | No |
| WRI Global Power Plant DB | Más de 35.000 centrales eléctricas | Estático (en caché) | No |
| Conjuntos de datos de bases militares | Instalaciones militares globales | Estático (en caché) | No |
| NASA FIRMS | Puntos calientes de incendios/térmicos NOAA-20 VIIRS | ~120s | No |
| NOAA SWPC | Índice Kp de clima espacial y eventos solares | ~120s | No |
| IODA (Georgia Tech) | Alertas regionales de cortes de Internet | ~120s | No |
| DC Map (GitHub) | Ubicaciones globales de centros de datos | Estático (caché de 7d) | No |
| NASA GIBS | Imágenes diarias de satélite MODIS Terra | Diario (retraso de 24-48h) | No |
| Esri World Imagery | Mapa base satelital de alta resolución | Estático (actualizado periódicamente) | No |
| MS Planetary Computer | Escenas Sentinel-2 L2A (clic derecho) | Bajo demanda | No |
| Copernicus CDSE | Imágenes de Sentinel Hub (API Process) | Bajo demanda | Sí (gratuito) |
| VIIRS Nightlights | Detección de cambios en luces nocturnas | Estático | No |
| RestCountries | Datos de perfil de países | Bajo demanda (caché 24h) | No |
| Wikidata SPARQL | Datos de jefes de estado | Bajo demanda (caché 24h) | No |
| API de Wikipedia | Resúmenes de ubicaciones e imágenes de aeronaves | Bajo demanda (en caché) | No |
| OSM Nominatim | Geocodificación de nombres de lugares (barra LOCALIZAR) | Bajo demanda | No |
| CARTO Basemaps | Azulejos de mapa oscuro | Continuo | No |
Privacidad y auditoría de salida (#348–#366): Cada instalación autoalojada utiliza su propia IP de backend y un identificador User-Agent por instalación. Consulte docs/OUTBOUND_DATA.md para conocer qué contacta a terceros, controles opt-in/env y las compensaciones aceptadas (Referer de CCTV, CDN de mapas base, LiveUAMap, etc.).
🚀 Empezando
🐳 Configuración con Docker (Recomendado para autoalojamiento)
El repositorio incluye un docker-compose.yml que descarga imágenes preconstruidas desde GitHub Container Registry.```bash
git clone https://github.com/BigBodyCobain/Shadowbroker.git
cd Shadowbroker
Add your API keys in a repo-root .env file (optional — see Environment Variables below)
docker compose pull docker compose up -d
Abre `http://localhost:3000` para ver el panel de control.
> **¿Desplegando públicamente o en una LAN?** No se necesita configuración para la mayoría de los casos.
> El frontend redirige todas las llamadas API a través del servidor Next.js a `BACKEND_URL`,
> que por defecto es `http://backend:8000` (red interna de Docker).
> El puerto `8000` del host está publicado solo para acceso local a la API/depuración (`127.0.0.1:8000`
> en `docker-compose.yml`). Si entra en conflicto con otro servicio, establece
> `BACKEND_PORT=8001` en `.env`; deja `BACKEND_URL` como `http://backend:8000`
> porque ese es el puerto interno de Docker.
>
> **Ejecutando el backend fuera de Docker** (`cd backend && python main.py`):
> el servidor de desarrollo se vincula **solo a loopback** (`127.0.0.1:8000`) por lo que otras máquinas en
> tu LAN no pueden acceder a rutas de administrador/confianza local con un `ADMIN_KEY` vacío. Establece
> `SHADOWBROKER_DEV_BIND_ALL=true` en `.env` solo cuando deliberadamente necesites
> `0.0.0.0` y uses un `ADMIN_KEY` fuerte para cualquier llamador no local.
> El límite de memoria del backend se controla mediante `BACKEND_MEMORY_LIMIT` y por defecto es
> `4G`. Si Docker reporta eventos OOM, el backend se reiniciará y las capas lentas
> pueden verse vacías hasta que se vuelvan a poblar.
>
> Si tu backend se ejecuta en un **host o puerto diferente**, establece `BACKEND_URL` en tiempo de ejecución — no se necesita reconstruir:
>
> ```bash
> # Linux / macOS
> BACKEND_URL=http://myserver.com:9096 docker compose up -d
>
> # Podman (via compose.sh wrapper)
> BACKEND_URL=http://192.168.1.50:9096 ./compose.sh up -d
>
> # Windows (PowerShell)
> $env:BACKEND_URL="http://myserver.com:9096"; docker compose up -d
>
> # Or add to a .env file next to docker-compose.yml:
> # BACKEND_URL=http://myserver.com:9096
> ```
**Usuarios de Podman:** No pases la URL de GitHub a `podman compose pull`; clona el repositorio primero, `cd Shadowbroker`, luego ejecuta compose desde esa carpeta. `podman compose` también requiere un proveedor de Compose. Si Podman informa `looking up compose provider failed`, instala uno:```bash
# Linux / macOS / WSL
python3 -m pip install --user podman-compose
podman-compose pull
podman-compose up -d
- Generar una CA raíz
./certman eca -ca
Este comando genera el certificado y la clave privada de la CA raíz, almacenando ambos en la carpeta certs.
Luego, el script ofrece la opción de mantener la clave privada de la CA en la carpeta certs o moverla a una ubicación más segura.
Los usuarios pueden volver a ejecutar ./certman eca -ca en cualquier momento para regenerar la CA con nuevos valores.
- Generar un certificado
./certman eca -ca -cn blog.internal -o server
La bandera -common-name (-cn) establece el Nombre Común (CN) para el certificado. Si no se especifica, su valor predeterminado es root.
En el ejemplo del certificado de servidor, el CN es blog.internal. La bandera -o define el nombre del archivo de salida del certificado, mientras que la bandera -type especifica su uso previsto como certificado server.
- Revocar un certificado
./certman rvk -ca -cn blog.internal
Este comando revoca el certificado asociado con el Nombre Común especificado (blog.internal).
Importante: Si la CA está comprometida, puedes revocar toda la CA, invalidando todos los certificados firmados por ella.
También puedes revocar certificados individuales manteniendo la CA intacta, lo que proporciona un control granular sobre la validez de los certificados.
Comandos de generación de claves
- Generar una clave privada RSA
./certman gen rsa
Esto genera una clave privada RSA y la almacena en la carpeta keys.
- Generar una clave de curva elíptica
./certman gen ecdsa
Esto genera una clave privada ECDSA y la almacena en la carpeta keys.
- Generar una clave privada SSH
./certman gen ssh
``````powershell
# Windows PowerShell
py -m pip install --user podman-compose
podman-compose pull
podman-compose up -d
Si estás en una shell compatible con bash, el wrapper incluido puede detectar automáticamente Docker o Podman:```bash ./compose.sh --engine podman pull ./compose.sh --engine podman up -d
</details>
---
<details>
<summary>🐋 Despliegue Independiente (Portainer, Uncloud, NAS, etc.)</summary>
No es necesario clonar el repositorio. Usa las imágenes preconstruidas de GitHub Container Registry. Las imágenes del registro de GitLab pueden usarse como espejo si las publicas allí.
Crea un archivo `docker-compose.yml` con el siguiente contenido y despliégalo directamente — pégalo en el stack editor de Portainer, `uncloud deploy`, o cualquier host de Docker:```yaml
## Image registry — uncomment ONE line per service:
## GitHub (primary): ghcr.io/bigbodycobain/shadowbroker-backend:latest
## GitLab (mirror): registry.gitlab.com/bigbodycobain/shadowbroker/backend:latest
services:
backend:
image: ghcr.io/bigbodycobain/shadowbroker-backend:latest
# image: registry.gitlab.com/bigbodycobain/shadowbroker/backend:latest
container_name: shadowbroker-backend
ports:
- "${BACKEND_PORT:-8000}:8000"
environment:
- AIS_API_KEY=your_aisstream_key # Required — get one free at aisstream.io
- OPENSKY_CLIENT_ID= # Optional — higher flight data rate limits
- OPENSKY_CLIENT_SECRET= # Optional — paired with Client ID above
- LTA_ACCOUNT_KEY= # Optional — Singapore CCTV cameras
- SHODAN_API_KEY= # Optional — Shodan device search overlay
- SH_CLIENT_ID= # Optional — Sentinel Hub satellite imagery
- SH_CLIENT_SECRET= # Optional — paired with Sentinel Hub ID
- CORS_ORIGINS= # Optional — comma-separated allowed origins
volumes:
- backend_data:/app/data
restart: unless-stopped
frontend:
image: ghcr.io/bigbodycobain/shadowbroker-frontend:latest
# image: registry.gitlab.com/bigbodycobain/shadowbroker/frontend:latest
container_name: shadowbroker-frontend
ports:
- "3000:3000"
environment:
- BACKEND_URL=http://backend:8000 # Docker internal networking — no rebuild needed
depends_on:
- backend
restart: unless-stopped
volumes:
backend_data:
Cómo funciona: El contenedor frontend envía todas las solicitudes
/api/*a través del servidor Next.js aBACKEND_URLutilizando la red interna de Docker. El navegador solo se comunica con el puerto 3000. El puerto host del backend es para acceso local de API/depuración y se puede cambiar conBACKEND_PORT=8001sin modificarBACKEND_URL.
BACKEND_URLes una variable de entorno en tiempo de ejecución (no es una variable de compilaciónNEXT_PUBLIC_*), por lo que puedes cambiarla en Portainer, Uncloud o cualquier editor de compose sin reconstruir la imagen. Establécelo en la dirección donde tu backend sea accesible desde dentro de la red de Docker (ej.http://backend:8000,http://192.168.1.50:8000).
📦 Inicio rápido (sin necesidad de código)
Si solo quieres ejecutar el panel sin usar comandos de terminal:
- Ve a la pestaña Releases en el lado derecho de esta página del repositorio.
- Descarga el último archivo
.zipde la versión. - Extrae la carpeta en tu computadora.
- Windows: Haz doble clic en
start.bat. Mac/Linux: Abre la terminal, escribechmod +x start.sh,dos2unix start.shy ejecuta./start.sh. - ¡Se instalará automáticamente todo y lanzará el panel!
Notas sobre el lanzador local:
start.bat/start.shejecutan la aplicación sin Docker: instalan dependencias e inician ambos servidores directamente.- Si los puntos finales de identidad de Wormhole o contacto DM fallan después de una actualización, consulta la carpeta
docs/mesh/para solucionar problemas. - Para la implementación de testigo raíz de DM, transparencia y monitoreo de operadores, comienza con
docs/mesh/wormhole-dm-root-operations-runbook.md. - Para activos de puente de operaciones raíz de DM de muestra, consulta también
scripts/mesh/poll-dm-root-health-alerts.mjs,scripts/mesh/export-dm-root-health-prometheus.mjs,scripts/mesh/publish-external-root-witness-package.mjs,scripts/mesh/smoke-external-root-witness-flow.mjs,scripts/mesh/smoke-root-transparency-publication-flow.mjs,scripts/mesh/smoke-dm-root-deployment-flow.mjs,scripts/mesh/sync-dm-root-external-assurance.mjsydocs/mesh/examples/.
💻 Configuración para desarrolladores
Si deseas modificar el código o ejecutar desde el código fuente:
Requisitos previos
- Node.js 18+ y npm — nodejs.org
- Python 3.10, 3.11 o 3.12 con
pip— python.org (marca "Agregar a PATH" durante la instalación)- ⚠️ Python 3.13+ puede tener problemas de compatibilidad con algunas dependencias. Se recomienda 3.11 o 3.12.
- Claves de API para:
aisstream.io(obligatorio) y opcionalmenteopensky-network.org(OAuth2),lta.gov.sg
Instalación```bash
Clone the repository
git clone https://github.com/BigBodyCobain/Shadowbroker.git cd Shadowbroker
Backend setup
cd backend python -m venv venv venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux
pip install .
Optional helper scripts (creates venv + installs dev deps)
Windows PowerShell
.\backend\scripts\setup-venv.ps1
macOS/Linux
./backend/scripts/setup-venv.sh
Optional env check (prints warnings for missing keys)
Windows PowerShell
.\backend\scripts\check-env.ps1
macOS/Linux
./backend/scripts/check-env.sh
Create .env with your API keys
echo "AIS_API_KEY=your_aisstream_key" >> .env echo "OPENSKY_CLIENT_ID=your_opensky_client_id" >> .env echo "OPENSKY_CLIENT_SECRET=your_opensky_secret" >> .env
Frontend setup
cd ../frontend npm ci
### Ejecutando```bash
# From the frontend directory — starts both frontend & backend concurrently
npm run dev
- Next.js frontend en
http://localhost:3000 - FastAPI backend en
http://localhost:8000
Pre-commit (Opcional)
Si usas pre-commit, instala los hooks una vez desde la raíz del repositorio:```bash pre-commit install
### Receptor AIS Local (Opcional)
Puedes alimentar tus propios datos de barcos AIS a ShadowBroker usando un dongle RTL-SDR y [AIS-catcher](https://github.com/jvde-github/AIS-catcher), un decodificador AIS de código abierto. Esto te brinda cobertura en tiempo real de embarcaciones en tu área local, sin necesidad de clave API.
1. Conecta un dongle RTL-SDR
2. Instala AIS-catcher ([lanzamientos](https://github.com/jvde-github/AIS-catcher/releases)) o usa la imagen Docker:
docker run -d --restart unless-stopped --name ais-catcher --device /dev/bus/usb ghcr.io/jvde-github/ais-catcher:latest
bash
docker run -d --device /dev/bus/usb
ghcr.io/jvde-github/ais-catcher -H http://host.docker.internal:4000/api/ais/feed interval 10
3. O ejecutar de forma nativa: ```bash
AIS-catcher -H http://localhost:4000/api/ais/feed interval 10
AIS-catcher decodifica señales de radio VHF en 161.975 MHz y 162.025 MHz y envía mediante POST los datos decodificados de embarcaciones a ShadowBroker cada 10 segundos. Los barcos detectados por tu antena SDR aparecen junto al flujo global de AIS.
Docker (ARM/Raspberry Pi): Consulta docker-shipfeeder para una imagen Docker lista para producción optimizada para ARM.
Nota: El alcance del AIS depende de tu antena — típicamente 20-40 millas náuticas con una configuración básica, 60+ mn con una antena VHF marina en altura.
🎛️ Capas de Datos
Las 41 capas se pueden activar/desactivar de forma independiente desde el panel izquierdo:
| Capa | Predeterminado | Descripción |
|---|---|---|
| Vuelos comerciales | ✅ ON | Aerolíneas, carga, aeronaves de aviación general |
| Vuelos privados | ✅ ON | Aeronaves privadas no comerciales |
| Jets privados | ✅ ON | Jets ejecutivos de alto valor con datos del propietario |
| Vuelos militares | ✅ ON | Aeronaves militares y gubernamentales |
| Aeronaves rastreadas | ✅ ON | Lista de vigilancia de interés especial |
| Interferencia GPS | ✅ ON | Zonas de degradación NAC-P |
| Portaaviones / Mil / Carga | ✅ ON | Portaaviones, buques de carga, petroleros |
| Embarcaciones civiles | ✅ ON | Yates, pesca, recreativos |
| Cruceros / Pasajeros | ✅ ON | Cruceros y ferris |
| Yates rastreados | ✅ ON | Superyates de multimillonarios y oligarcas |
| Actividad pesquera | ✅ ON | Eventos de embarcaciones de Global Fishing Watch |
| Trenes | ✅ ON | Amtrak + posiciones ferroviarias europeas |
| Satélites | ✅ ON | Activos orbitales por tipo de misión |
| SatNOGS | ✅ ON | Estaciones terrestres de satélites amateur |
| TinyGS | ✅ ON | Estaciones terrestres de satélites LoRa |
| Terremotos (24h) | ✅ ON | Eventos sísmicos del USGS |
| Puntos calientes de incendios (24h) | ✅ ON | Anomalías térmicas VIIRS de NASA FIRMS |
| Volcanes | ✅ ON | Volcanes del Holoceno del Smithsonian |
| Alertas meteorológicas | ✅ ON | Polígonos de clima severo |
| Calidad del aire (PM2.5) | ✅ ON | Estaciones OpenAQ en todo el mundo |
| Frente de Ucrania | ✅ ON | Posiciones en vivo del frente de guerra |
| Alertas aéreas de Ucrania | ✅ ON | Alertas regionales de ataques aéreos |
| Incidentes globales | ✅ ON | Eventos de conflicto GDELT |
| Malla CCTV | ✅ ON | Más de 11,000 cámaras en 13 fuentes, 6 países |
| Cortes de Internet | ✅ ON | Alertas regionales de conectividad IODA |
| Centros de datos | ✅ ON | Ubicaciones globales de centros de datos (más de 2,000) |
| Bases militares | ✅ ON | Instalaciones militares globales |
| Receptores KiwiSDR | ✅ ON | Receptores de radio SDR públicos |
| Nodos Meshtastic | ✅ ON | Posiciones de nodos de radio malla |
| APRS | ✅ ON | Posicionamiento de radioaficionados |
| Escáneres | ✅ ON | Transmisiones de escáneres policiales/bomberos |
| Ciclo día / noche | ✅ ON | Superposición del terminador solar |
| MODIS Terra (Diario) | ❌ OFF | Imágenes satelitales diarias de NASA GIBS |
| Satélite de alta resolución | ❌ OFF | Imágenes satelitales submétricas de Esri |
| Sentinel Hub | ❌ OFF | API de Proceso CDSE de Copernicus |
| Luces nocturnas VIIRS | ❌ OFF | Detección de cambios de luz nocturna |
| Plantas de energía | ❌ OFF | Más de 35,000 plantas de energía globales |
| Superposición Shodan | ❌ OFF | Resultados de búsqueda de dispositivos de Internet |
| Tendencias de carga por carretera | ❌ OFF | Tendencias de movimiento de camiones Sentinel-2 en autopistas principales (Analizar aquí) |
| Cables submarinos | ❌ OFF | Rutas globales de cables submarinos (GeoJSON estático) |
| C2 de malware | ❌ OFF | Puntos de amenaza de abuse.ch Feodo + URLhaus |
| Proveedores SCM | ❌ OFF | Marcadores de riesgo de cadena de suministro de nivel 1/2 + alertas de panel |
| Amenazas cibernéticas | ❌ OFF | Entradas recientes de CISA KEV (estadísticas en payload de nivel lento) |
| Telegram OSINT | ✅ ON | Canales públicos de Telegram de guerra/OSINT — raspado por hora, pines geolocalizados |
| SAR | ✅ ON | Catálogo de radar de apertura sintética + alertas de anomalía |
Herramientas de reconocimiento y entidades (no son capas del mapa — barra lateral izquierda / selección):
| Herramienta | Acceso desde el panel | Comando OpenClaw | Descripción |
|---|---|---|---|
| Kit de Reconocimiento | Operador local (/api/osint/*) | osint_lookup, osint_sweep† | IP, DNS, WHOIS, certificados, BGP, sanciones, CVE, MAC, GitHub, filtraciones, amenazas, barrido de subred |
| Grafo de Entidades | Operador local (/api/entity/expand) | entity_expand | Wikidata + OFAC + grafo de relaciones en almacén en vivo |
| Panel de Riesgo SCM | Operador local (/api/scm-suppliers) | get_layer_slice(["scm_suppliers"]) | Resumen de amenazas de proveedores + marcadores de mapa |
| Descubrimiento de Herramientas | — | osint_tools | Enumera tipos de búsqueda de reconocimiento y esquemas de expansión de entidades |
† osint_sweep (escaneo activo de InternetDB) requiere OPENCLAW_ACCESS_TIER=full.
🔧 Rendimiento
La plataforma está optimizada para manejar conjuntos de datos masivos en tiempo real:
- Compresión Gzip — cargas útiles de API comprimidas ~92% (11.6 MB → 915 KB)
- Caché ETag — las respuestas
304 Not Modifiedevitan el análisis redundante de JSON - Recorte de viewport — Solo se renderizan las características dentro de los límites del mapa visible (+20% de búfer)
- Actualizaciones imperativas del mapa — Las capas de alto volumen (vuelos, satélites, incendios) evitan la reconciliación de React mediante llamadas directas a
setData() - Renderizado agrupado — Barcos, CCTV, terremotos y centros de datos usan agrupamiento de MapLibre para reducir el recuento de características
- Actualizaciones de viewport con debounce — El debounce de 300ms evita la reconstrucción excesiva de GeoJSON durante el desplazamiento/zoom; debounce de 2s en capas densas (satélites, incendios)
- Interpolación de posición — Animación suave de tick de 10s entre actualizaciones de datos
- React.memo — Componentes pesados envueltos para evitar re-renderizaciones innecesarias
- Precisión de coordenadas — Lat/lng redondeado a 5 decimales (~1m) para reducir el tamaño del JSON
📁 Estructura del Proyecto
Los nuevos colaboradores pueden usar docs/contributor-map.md para una guía de orientación más breve.``` Shadowbroker/ ├── openclaw-skills/shadowbroker/ # OpenClaw skill — SKILL.md, sb_query.py client, alerts/monitor helpers ├── backend/ │ ├── main.py # FastAPI app, middleware, API routes (~4,000 lines) │ ├── cctv.db # SQLite CCTV camera database (auto-generated) │ ├── config/ │ │ └── news_feeds.json # User-customizable RSS feed list │ ├── services/ │ │ ├── data_fetcher.py # Core scheduler — orchestrates all data sources │ │ ├── ais_stream.py # AIS WebSocket client (25K+ vessels) │ │ ├── carrier_tracker.py # OSINT carrier position estimator (GDELT news scraping) │ │ ├── cctv_pipeline.py # 14-source CCTV camera ingestion pipeline │ │ ├── ssrf_guard.py # SSRF validation for operator recon fetches │ │ ├── sanctions/ofac.py # OpenSanctions OFAC SDN index │ │ ├── osint/lookups.py # Server-side recon lookups (Osiris port) │ │ ├── osint/openclaw_recon.py # OpenClaw dispatch for recon + entity_expand │ │ ├── osint_intel/resolve.py # Entity graph resolver (Wikidata + OFAC) │ │ ├── scm/suppliers.py # Supply-chain risk overlay │ │ ├── intel_feeds/ # Country risk index helpers │ │ ├── fetchers/malware.py # abuse.ch Feodo + URLhaus │ │ ├── fetchers/cyber_status.py # CISA KEV feed │ │ ├── fetchers/telegram_osint.py # Public Telegram channel scrape + geoparse │ │ ├── third_party/osiris/ # MIT attribution for Osiris-derived code │ │ ├── geopolitics.py # GDELT + Ukraine frontline + air alerts │ │ ├── region_dossier.py # Right-click country/city intelligence │ │ ├── radio_intercept.py # Police scanner feeds + OpenMHZ │ │ ├── kiwisdr_fetcher.py # KiwiSDR receiver scraper │ │ ├── sentinel_search.py # Sentinel-2 STAC imagery search │ │ ├── shodan_connector.py # Shodan device search connector │ │ ├── sigint_bridge.py # APRS-IS TCP bridge │ │ ├── network_utils.py # HTTP client with curl fallback │ │ ├── api_settings.py # API key management │ │ ├── news_feed_config.py # RSS feed config manager │ │ ├── fetchers/ │ │ │ ├── flights.py # OpenSky, adsb.lol, GPS jamming, holding patterns │ │ │ ├── geo.py # AIS vessels, carriers, GDELT, fishing activity │ │ │ ├── satellites.py # CelesTrak TLE + SGP4 propagation │ │ │ ├── earth_observation.py # Quakes, fires, volcanoes, air quality, weather │ │ │ ├── infrastructure.py # Data centers, power plants, military bases │ │ │ ├── trains.py # Amtrak + DigiTraffic European rail │ │ │ ├── sigint.py # SatNOGS, TinyGS, APRS, Meshtastic │ │ │ ├── meshtastic_map.py # Meshtastic MQTT + map node aggregation │ │ │ ├── military.py # Military aircraft classification │ │ │ ├── news.py # RSS intelligence feed aggregation │ │ │ ├── financial.py # Global markets data │ │ │ └── ukraine_alerts.py # Ukraine air raid alerts │ │ └── mesh/ # InfoNet / Wormhole protocol stack │ │ ├── mesh_protocol.py # Core mesh protocol + routing │ │ ├── mesh_crypto.py # Ed25519, X25519, AESGCM primitives │ │ ├── mesh_hashchain.py # Hash chain commitment system (~1,400 lines) │ │ ├── mesh_router.py # Multi-transport router (APRS, Meshtastic, WS) │ │ ├── mesh_wormhole_persona.py # Gate persona identity management │ │ ├── mesh_wormhole_dead_drop.py # Dead Drop token-based DM mailbox │ │ ├── mesh_wormhole_ratchet.py # Double-ratchet DM scaffolding │ │ ├── mesh_wormhole_gate_keys.py # Gate key management + rotation │ │ ├── mesh_wormhole_seal.py # Message sealing + unsealing │ │ ├── mesh_merkle.py # Merkle tree proofs for data commitment │ │ ├── mesh_reputation.py # Node reputation scoring │ │ ├── mesh_oracle.py # Oracle consensus protocol │ │ └── mesh_secure_storage.py # Secure credential storage │ ├── routers/ │ │ ├── osint.py # /api/osint/* recon routes (local operator) │ │ ├── entity_graph.py # /api/entity/expand │ │ ├── scm.py # /api/scm-suppliers │ │ └── intel_feeds.py # /api/malware, /api/cyber-threats, /api/telegram-feed, /api/country-risk ├── frontend/ │ ├── public/data/ │ │ └── submarine-cables.json # Static undersea cable GeoJSON │ ├── src/ │ │ ├── app/ │ │ │ └── page.tsx # Main dashboard — state, polling, layout │ │ └── components/ │ │ ├── MaplibreViewer.tsx # Core map — all GeoJSON layers │ │ ├── MeshChat.tsx # InfoNet / Mesh / Dead Drop chat panel │ │ ├── MeshTerminal.tsx # Draggable CLI terminal │ │ ├── NewsFeed.tsx # SIGINT feed + entity detail panels │ │ ├── WorldviewLeftPanel.tsx # Data layer toggles (40+ layers) │ │ ├── ShodanPanel.tsx # Shodan device search overlay │ │ ├── ReconPanel.tsx # Server-side OSINT recon toolkit │ │ ├── ScmPanel.tsx # Supply-chain risk command panel │ │ ├── EntityGraphPanel.tsx # Entity graph on map selection │ │ ├── MaplibreViewer/popups/TelegramOsintPopup.tsx # Threat-intercept styled Telegram pin popups │ │ ├── WorldviewRightPanel.tsx # Search + filter sidebar │ │ ├── AdvancedFilterModal.tsx # Airport/country/owner filtering │ │ ├── MapLegend.tsx # Dynamic legend with all icons │ │ ├── MarketsPanel.tsx # Global financial markets ticker │ │ ├── RadioInterceptPanel.tsx # Scanner-style radio panel │ │ ├── FindLocateBar.tsx # Search/locate bar │ │ ├── ChangelogModal.tsx # Version changelog popup (auto-shows on upgrade) │ │ ├── SettingsPanel.tsx # API Keys + News Feed + Shodan config │ │ ├── ScaleBar.tsx # Map scale indicator │ │ └── ErrorBoundary.tsx # Crash recovery wrapper │ └── package.json
</details>
---
<details>
<summary>🔑 Variables de Entorno</summary>
### Backend (`backend/.env`)```env
# Required for airplane telemetry (NEW in v0.9.7 — startup env check flags these as critical)
# Free registration: https://opensky-network.org/index.php?option=com_users&view=registration
OPENSKY_CLIENT_ID=your_opensky_client_id # OAuth2 — global flight state vectors
OPENSKY_CLIENT_SECRET=your_opensky_secret # OAuth2 — paired with Client ID above
# Optional (enhances data quality)
AIS_API_KEY=your_aisstream_key # Maritime vessel tracking (aisstream.io) — ships layer empty without it
LTA_ACCOUNT_KEY=your_lta_key # Singapore CCTV cameras
SHODAN_API_KEY=your_shodan_key # Shodan device search overlay
SH_CLIENT_ID=your_sentinel_hub_id # Copernicus CDSE Sentinel Hub imagery
SH_CLIENT_SECRET=your_sentinel_hub_secret # Paired with Sentinel Hub Client ID
MESH_SAR_EARTHDATA_USER= # NASA Earthdata user (SAR Mode B — OPERA products)
MESH_SAR_EARTHDATA_TOKEN= # NASA Earthdata token (paired with user above)
MESH_SAR_COPERNICUS_USER= # Copernicus Data Space user (SAR Mode B — EGMS / EMS)
MESH_SAR_COPERNICUS_TOKEN= # Copernicus token (paired with user above)
OPENCLAW_ACCESS_TIER=restricted # OpenClaw agent tier: "restricted" (read-only) or "full"
# OPENCLAW_HMAC_SECRET= # Optional; UI Bootstrap persists to data/openclaw.env in Docker
GFW_API_TOKEN=your_gfw_token # Global Fishing Watch — fishing_activity layer (Settings → Maritime)
TELEGRAM_OSINT_ENABLED=true # Telegram OSINT layer (default on)
TELEGRAM_OSINT_CHANNELS=osintdefender,... # Comma-separated public channel slugs (see .env.example)
# Private-lane privacy-core pinning (required when Arti or RNS is enabled)
PRIVACY_CORE_MIN_VERSION=0.1.0
PRIVACY_CORE_ALLOWED_SHA256=your_privacy_core_sha256
# Optional override if you load a non-default shared library path
PRIVACY_CORE_LIB=
Cuando MESH_ARTI_ENABLED=true o MESH_RNS_ENABLED=true, el inicio del backend ahora falla cerrado a menos que el artefacto privacy-core cargado reporte una versión analizable igual o superior a PRIVACY_CORE_MIN_VERSION y coincida con uno de los hashes en PRIVACY_CORE_ALLOWED_SHA256.
Genera el hash del artefacto que planeas distribuir:```powershell Get-FileHash .\privacy-core\target\release\privacy_core.dll -Algorithm SHA256
---```bash
sha256sum ./privacy-core/target/release/libprivacy_core.so
Luego confirma que las solicitudes autenticadas GET /api/wormhole/status o GET /api/settings/wormhole-status muestran los mismos valores: privacy_core.version, privacy_core.library_path y privacy_core.library_sha256.
Frontend
| Variable | Dónde configurar | Propósito |
|---|---|---|
BACKEND_URL | environment en docker-compose.yml, o variable de entorno del shell | URL que el servidor Next.js usa para redirigir llamadas API al backend. Por defecto http://backend:8000. Variable en tiempo de ejecución — no requiere reconstrucción. |
BACKEND_PORT | .env en la raíz del repositorio o variable de entorno del shell antes de docker compose up | Puerto del host usado para exponer la API del backend para diagnósticos locales. Por defecto 8000; establece BACKEND_PORT=8001 si el puerto 8000 ya está en uso. No cambia BACKEND_URL interno de Docker. |
Cómo funciona: El frontend redirige todas las solicitudes /api/* a través del servidor Next.js hacia BACKEND_URL usando la red interna de Docker. Los navegadores solo se comunican con el puerto 3000; el puerto del host del backend es solo para diagnósticos locales. Para desarrollo local sin Docker, BACKEND_URL predetermina a http://localhost:8000.
🤝 Colaboradores
ShadowBroker se construye en abierto. Estas personas enviaron código real:
| Quién | Qué | PR |
|---|---|---|
| @Alienmajik | Soporte para Raspberry Pi 5 — empaquetado ARM64, notas de despliegue headless, ajuste de tiempo de ejecución para hardware clase Pi | — |
| @wa1id | Corrección de ingesta CCTV — SQLite con hilos, base de datos persistente, hidratación al inicio, clicabilidad del clúster | #92 |
| @AlborzNazari | Fuentes DGT de España + CCTV de Madrid, exportación de inteligencia de amenazas STIX 2.1 | #91 |
| @adust09 | Capa de plantas de energía, cobertura de inteligencia de Asia Oriental (bases JSDF, enriquecimiento ICAO, noticias de Taiwán, clasificación militar) | #71, #72, #76, #77, #87 |
| @Xpirix | Mejoras de estilo e interacción de LocateBar | #78 |
| @imqdcr | División del interruptor de barcos (4 categorías) + IDs de entidad MMSI/indicativo estables | — |
| @csysp | Alertas de amenazas descartables + IDs de entidad estables para GDELT y Noticias | #48, #63 |
| @suranyami | Compilaciones Docker multiarquitectura en paralelo (11min → 3min) + corrección de BACKEND_URL en tiempo de ejecución | #35, #44 |
| @chr0n1x | Arquitectura de Helm chart para Kubernetes para despliegues de alta disponibilidad | — |
⚠️ Aviso legal
Esta herramienta está construida enteramente con datos de inteligencia de código abierto (OSINT) disponibles públicamente. No se utilizan datos clasificados, restringidos o no públicos. Las posiciones de los portadores son estimaciones basadas en informes públicos. La interfaz de usuario con temática militar es puramente estética.
📜 Licencia
Este proyecto es para fines educativos y de investigación personal. Consulta los términos de servicio de cada proveedor de API para conocer las restricciones de uso de datos.
Construido con ☕ y demasiadas llamadas API