██████╗  ██████╗  ██████╗ ████████╗ ██████╗  █████╗ ██╗   ██╗███████╗███████╗
██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝██╔════╝ ██╔══██╗██║   ██║██╔════╝██╔════╝
███████╔╝██║   ██║██║   ██║   ██║   ██║      ███████║██║   ██║███████╗█████╗
██╔══██╗██║   ██║██║   ██║   ██║   ██║      ██╔══██║██║   ██║╚════██║██╔══╝
██║  ██║╚██████╔╝╚██████╔╝   ██║   ╚██████╗ ██║  ██║╚██████╔╝███████║███████╗
╚═╝  ╚═╝ ╚═════╝  ╚═════╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝ ╚═════╝ ╚══════╝╚══════╝
                          W E B   I N S P E C T O R

Sensor forense de la superficie del navegador.
Todo lo que tu navegador guarda, deja entrar y deja salir —cookies, sesiones de correo,
extensiones, descargas, permisos— puede ser el primer indicio de que algo está ocurriendo.

CI Node 20.11+ Cero dependencias Apache 2.0 v0.1.0 Telemetría cero

Diagnóstico primero. Intervención después.

⚡ Qué ve, y qué te dice

Once pestañas de diagnóstico, doce familias de regla y un semáforo que siempre explica por qué está en el color en que está.

📧

Tu correo, sin leerlo

Detecta las sesiones de correo vivas en este navegador por sus cookies. No ve mensajes, ni remitentes, ni tu dirección. Si alguna de esas sesiones tiene cookies sin Secure, el veredicto es crítico: el correo es donde llegan los enlaces de recuperación de contraseña de todo lo demás.

🧩

Qué podría hacer cada extensión

Puntaje de riesgo 0-100 por los permisos concedidos. Mide capacidad, no comportamiento: una extensión con acceso a todas tus páginas y sus cookies puede leer la sesión de tu banco aunque nunca lo haga. La pregunta útil no es si confías en ella hoy — es si confiarás en quien la compre mañana.

⬇️

Lo que entra a tu equipo

Los ejecutables descargados por el navegador, con su origen y su fecha. Y los que llegaron por HTTP sin cifrar, que cualquiera en la red pudo alterar en tránsito. No dice que sean malware: dice que están ahí y de dónde vinieron.

🍪

Cookies, con sus atributos

Secure, HttpOnly, SameSite y caducidad de cada una. Cuántas son de rastreo y cuántas te reconocen desde hace más de un año. El valor nunca se lee: el valor de una cookie es la credencial.

🎛️

Quién tiene tu cámara

Los sitios con cámara, micrófono o ubicación concedidos de forma permanente — pueden usarlos mientras están abiertos sin volver a preguntar. Y los autorizados a enviarte notificaciones, que parecen del sistema operativo aunque vengan de una página cualquiera.

🔎

Se audita a sí mismo

Si alguna superficie no se pudo leer, el veredicto se marca como PARCIAL y la pestaña Navegador dice cuál falta y por qué. Un diagnóstico incompleto presentado como completo es peor que no diagnosticar.

📤

Evidencia que aguanta

Export JSON forense con huella SHA-256 del contenido canónico: si alguien edita el archivo, deja de cuadrar. Ids de hallazgo neutrales al idioma, comparables entre equipos y con las ediciones Windows y Mobile.

🎚️

Los umbrales son tuyos

Cada número que decide una severidad está expuesto en el panel, editable. Porque un semáforo que siempre está en rojo no es un semáforo: es ruido. Al guardar, la captura se reevalúa y ves el efecto al momento.

🗃️

Historial local

Las últimas 500 capturas en tu propio disco, en JSON Lines legible con cualquier editor. Guarda el veredicto y los hallazgos, nunca las cookies crudas. Un botón lo borra todo.

🔒 «Solo local» es comprobable, no una promesa

El claim central de este producto es que tu evidencia no sale de tu equipo. Un README no garantiza eso. Esto sí:

1 · El navegador lo impide

  • La CSP del manifiesto limita connect-src a 127.0.0.1 y localhost
  • Aunque alguien colara un fetch remoto, el navegador lo bloquearía
  • No depende de que el código sea honesto

2 · CI tumba el build

  • Cero dependencias declaradas
  • Ninguna llamada de red fuera de loopback
  • Ningún recurso remoto en el HTML ni el CSS
  • La CSP de la extensión sigue cerrada
  • El servidor no escucha en 0.0.0.0

3 · Cero dependencias

  • Lo que no se instala no se puede comprometer
  • Sin node_modules, sin lockfile
  • Una herramienta que advierte sobre permisos amplios no puede arrastrar 300 paquetes npm

4 · El canal local, cerrado

  • Bind exclusivo a 127.0.0.1
  • Validación de Host — defensa contra DNS rebinding
  • Allowlist de Origin: ninguna web puede leer tu evidencia
  • Las cuatro guardas tienen test

Córrelo tú mismo

$ node scripts/check-local-only.mjs

  ✔ Solo local, comprobado:
    · cero dependencias declaradas
    · connect-src de la extensión limitado a: http://127.0.0.1:* http://localhost:*
    · sin llamadas de red fuera de loopback
    · sin recursos remotos en el HTML/CSS del panel ni de la extensión
    · el servidor solo escucha en 127.0.0.1

Corre en cada push y en cada PR. Si alguien abre esa puerta en el futuro, el build cae antes de fusionarse.

⚡ Empezar en 30 segundos

Sin npm install, porque no hay nada que instalar.

1 · El panel local

$ git clone https://github.com/vladimiracunadev-create/rootcause-web-inspector.git
$ cd rootcause-web-inspector
$ node server/cli.js --open

Se abre http://127.0.0.1:7317 con un snapshot de demostración marcado como tal — para que puedas evaluar el panel entero antes de instalar nada. Requiere Node ≥ 20.11.

2 · La extensión colectora

chrome://extensions  →  Modo de desarrollador  →  Cargar descomprimida
                     →  seleccionar la carpeta  extension/

Se carga sin empaquetar, que es además la forma de instalarla pudiendo leer todo el código antes. Chrome, Edge, Brave, Opera y Vivaldi.

3 · Primera captura

Icono de RootCause en la barra  →  ↻ Capturar ahora

El icono se pinta con el semáforo y el panel deja de mostrar el aviso de demostración. A partir de ahí, captura automática cada 30 minutos.

🤝 Lo que NO hace

Un producto de seguridad que no publica sus límites te está pidiendo fe.

🚫

No inspecciona tu tráfico

Una extensión con webRequest vería cada petición y detectaría exfiltración en vivo. No se hace, y no se hará. Una herramienta de seguridad que necesita leer todo tu tráfico para protegerte es un objetivo más valioso que la amenaza de la que te protege.

🔑

No lee el valor de tus cookies

Solo sus atributos de seguridad. El valor de una cookie de sesión es la credencial: recogerlo convertiría el informe forense en un botín esperando a que alguien lo copie.

🛡

No es antivirus ni EDR

No elimina nada, no bloquea nada, no desinstala extensiones ni borra cookies. Es el indicio temprano que te dice dónde mirar. Complementa a tu solución de seguridad; no la reemplaza.

📐

No promete lo que el navegador no permite

Los permisos de sitio no se pueden enumerar; el almacenamiento solo se mide donde hay pestaña abierta. Las pestañas afectadas lo declaran en vez de mostrar un cero que parezca «todo limpio».

🪞

No se borra de su propio informe

RootCause aparece en la lista de extensiones con su puntaje real —pide acceso a todas las páginas y a las cookies, que es literalmente su trabajo—. Queda fuera de la regla para no generar ruido permanente, y esa excepción está documentada, no escondida.

🔓

Publica sus propios agujeros

Hoy no hay token entre la extensión y el panel: otro programa local con tus permisos podría hablarle. Está en el roadmap y escrito en LIMITACIONES.md, porque un límite conocido vale más que una garantía implícita.

👥 Familia RootCause

La misma filosofía en cada superficie: la distorsión como indicio temprano.

🖥

Windows Inspector

El hermano mayor: software forense de ciberseguridad para Windows en Rust. CPU, disco, procesos, autoarranque, servicios, red local y ETW/WPR.
Página del producto →

📱

Mobile Inspector

Flutter con núcleo Dart compartido y colectores nativos Kotlin/Swift. Memoria, almacenamiento, batería, permisos de apps y detección de stalkerware.
Página del producto →

🌐

Web Inspector

Esta edición: Node + JavaScript sin dependencias. El navegador ve qué entró; el inspector de Windows ve qué pasó después. Ninguna finge cubrir a la otra.
Repositorio →