PWR Vigia

Escaner pasivo de vulnerabilidades web. Analiza headers de seguridad, certificados SSL, cookies, directorios expuestos, tecnologias detectables y registros DNS. 100% pasivo: no inyecta payloads ni realiza ataques activos.

Instalacion

Vigia es un unico archivo PHP sin dependencias externas.

PHP
require_once __DIR__ . '/core/vigia.php';

Requisitos minimos

  • PHP 7.4 o superior
  • Extension curl para peticiones HTTP
  • Extension openssl para analisis SSL
  • Acceso a red para analizar sitios externos

Inicio rapido

Analisis completo de seguridad de un sitio web en una linea.

PHP
require_once 'core/vigia.php';

$resultado = pwr_vigia_analizar('https://ejemplo.com');
$puntuacion = pwr_vigia_puntuacion($resultado);
echo 'Nota: ' . $puntuacion['nota'] . ' (' . $puntuacion['puntos'] . '/100)';

Funciones

pwr_vigia_analizar()

Ejecuta un analisis completo de seguridad: headers, SSL, cookies, directorios, tecnologias y DNS.

Firma
pwr_vigia_analizar(string $url): array
ParametroTipoDescripcion
$urlstringURL completa del sitio a analizar (incluyendo https://)

Retorna: array con resultados de cada modulo: headers, ssl, cookies, directorios, tecnologias, dns.

pwr_vigia_headers()

Analiza los headers de seguridad HTTP: CSP, HSTS, X-Frame-Options, etc.

Firma
pwr_vigia_headers(string $url): array

Retorna: array con cada header analizado, su presencia (bool) y recomendaciones.

pwr_vigia_ssl()

Analiza el certificado SSL/TLS: validez, cadena, protocolo, algoritmo y dias hasta expiracion.

Firma
pwr_vigia_ssl(string $dominio): array

Retorna: array con valido, emisor, expira, dias_restantes, protocolo, algoritmo.

pwr_vigia_cookies()

Analiza las cookies del sitio: flags Secure, HttpOnly, SameSite y duracion.

Firma
pwr_vigia_cookies(string $url): array

Retorna: array de cookies, cada una con nombre, secure, httponly, samesite.

pwr_vigia_directorios()

Busca directorios y archivos sensibles expuestos (.git, .env, /admin, etc.).

Firma
pwr_vigia_directorios(string $url): array

Retorna: array de rutas encontradas con ruta, codigo_http, riesgo.

pwr_vigia_tecnologias()

Detecta tecnologias del servidor: CMS, frameworks, lenguaje, servidor web, etc.

Firma
pwr_vigia_tecnologias(string $url): array

Retorna: array de tecnologias detectadas con nombre, version (si detectable), categoria.

pwr_vigia_dns()

Analiza registros DNS de seguridad: SPF, DKIM, DMARC, CAA.

Firma
pwr_vigia_dns(string $dominio): array

Retorna: array con spf, dkim, dmarc, caa y sus valores.

pwr_vigia_puntuacion()

Calcula la puntuacion global de seguridad (0-100) y una nota letra (A+ a F).

Firma
pwr_vigia_puntuacion(array $resultados): array

Retorna: array con puntos (0-100), nota (A+ a F), desglose por categoria.

pwr_vigia_informe()

Genera un informe completo en formato JSON o texto plano.

Firma
pwr_vigia_informe(array $resultados, string $formato = 'json'): string
ParametroTipoDescripcion
$resultadosarrayResultados de pwr_vigia_analizar()
$formatostring'json' o 'texto'

Retorna: string con el informe formateado.

pwr_vigia_info()

Devuelve informacion del modulo: version, modulos disponibles y configuracion.

Firma
pwr_vigia_info(): array

Retorna: array con version, modulos, curl_disponible.

Configuracion

Vigia usa constantes internas para su configuracion. No requiere archivo externo.

ConstanteValorDescripcion
PWR_VIGIA_UA'PWR Vigia/1.0 ...'User-Agent del escaner
PWR_VIGIA_TIMEOUT10Timeout por request en segundos
PWR_VIGIA_DELAY_MS500Retardo entre requests (ms) para rate limiting
Escaner pasivo: Vigia solo realiza peticiones GET y analiza respuestas. No inyecta payloads, no intenta explotar vulnerabilidades ni modifica nada en el servidor analizado.

Ejemplos

Analisis completo con informe

PHP
require_once 'core/vigia.php';

$url = 'https://ejemplo.com';
$resultados = pwr_vigia_analizar($url);
$puntuacion = pwr_vigia_puntuacion($resultados);

echo "Sitio: {$url}\n";
echo "Nota: {$puntuacion['nota']} ({$puntuacion['puntos']}/100)\n\n";

// Generar informe JSON
$informe = pwr_vigia_informe($resultados, 'json');
file_put_contents('informe_seguridad.json', $informe);

Analisis individual de headers

PHP
require_once 'core/vigia.php';

$headers = pwr_vigia_headers('https://ejemplo.com');
foreach ($headers as $header => $info) {
    $estado = $info['presente'] ? 'OK' : 'FALTA';
    echo "[{$estado}] {$header}\n";
}

Monitorizar SSL de multiples dominios

PHP
require_once 'core/vigia.php';

$dominios = ['miapp.com', 'api.miapp.com', 'admin.miapp.com'];

foreach ($dominios as $dominio) {
    $ssl = pwr_vigia_ssl($dominio);
    if ($ssl['dias_restantes'] < 30) {
        echo "ALERTA: {$dominio} expira en {$ssl['dias_restantes']} dias\n";
    }
}

Detectar tecnologias de un sitio

PHP
require_once 'core/vigia.php';

$techs = pwr_vigia_tecnologias('https://ejemplo.com');
foreach ($techs as $tech) {
    echo $tech['nombre'];
    if (!empty($tech['version'])) {
        echo ' v' . $tech['version'];
    }
    echo " ({$tech['categoria']})\n";
}