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.
require_once __DIR__ . '/core/vigia.php';
Requisitos minimos
- PHP 7.4 o superior
- Extension
curlpara peticiones HTTP - Extension
opensslpara analisis SSL - Acceso a red para analizar sitios externos
Inicio rapido
Analisis completo de seguridad de un sitio web en una linea.
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.
pwr_vigia_analizar(string $url): array
| Parametro | Tipo | Descripcion |
|---|---|---|
$url | string | URL 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.
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.
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.
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.).
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.
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.
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).
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.
pwr_vigia_informe(array $resultados, string $formato = 'json'): string
| Parametro | Tipo | Descripcion |
|---|---|---|
$resultados | array | Resultados de pwr_vigia_analizar() |
$formato | string | 'json' o 'texto' |
Retorna: string con el informe formateado.
pwr_vigia_info()
Devuelve informacion del modulo: version, modulos disponibles y configuracion.
pwr_vigia_info(): array
Retorna: array con version, modulos, curl_disponible.
Configuracion
Vigia usa constantes internas para su configuracion. No requiere archivo externo.
| Constante | Valor | Descripcion |
|---|---|---|
PWR_VIGIA_UA | 'PWR Vigia/1.0 ...' | User-Agent del escaner |
PWR_VIGIA_TIMEOUT | 10 | Timeout por request en segundos |
PWR_VIGIA_DELAY_MS | 500 | Retardo entre requests (ms) para rate limiting |
Ejemplos
Analisis completo con informe
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
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
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
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";
}