All tests pass
1127
tests automatizados superados

Cada producto PWR.es se somete a cientos de verificaciones automatizadas que cubren seguridad, funcionalidad, integridad de datos y edge cases antes de cada versión.

100%
Pass rate
14
Productos
0
Fallos
31.4s
Tiempo total
METODOLOGÍA

Qué verificamos

Cada test ejecuta código real contra el producto, sin mocks ni simulaciones.

Seguridad
Inyección SQL, XSS, path traversal, scanners, fuerza bruta y detección de amenazas sin falsos positivos.
Funcionalidad
CRUD completo, cifrado y descifrado, import/export, generación de claves, firmas digitales y 2FA.
Integridad
Verificación SHA-256, roundtrip cifrado/descifrado, comprobación de corrupción y consistencia.
Edge cases
Unicode, archivos vacíos, nombres con espacios, timeouts, datos corruptos, inputs vacíos y límites.
PRODUCTOS

Verificación por producto

14 suites independientes. Haz clic en cualquiera para ver los tests detallados.

CU
PWR CUANTICA PASS
Verifica cifrado y descifrado multicapa, integridad de datos, soporte Unicode, archivos binarios y encapsulación post-cuántica PQC.
39/39 tests 12.29s
ES
PWR ESCUDO PASS
Detecta inyección SQL, XSS, path traversal y scanners maliciosos. Confirma cero falsos positivos con entradas legítimas.
59/59 tests 0.24s
UM
PWR UMBRAL PASS
Valida registro, login, sesiones, bloqueo por intentos fallidos, 2FA con TOTP y recuperación segura de password.
62/62 tests 2.97s
AR
PWR ARCA PASS
Prueba subida y descarga cifrada, enlaces temporales con expiración, listado de archivos y borrado seguro.
36/36 tests 4.86s
CA
PWR CAPSULA PASS
Comprueba cifrado E2E en navegador, validaciones antispam, honeypot, consentimiento RGPD y exportación de datos.
58/58 tests 0.28s
RE
PWR REFUGIO PASS
Verifica backup y restauración cifrada, integridad SHA-256, rotación automática, logging y edge cases.
48/48 tests 7.95s
RU
PWR RUBRICA PASS
Prueba generación de claves Ed25519, firma y verificación digital, exportación JSON y validaciones de entrada.
58/58 tests 0.24s
VI
PWR VIGIA PASS
Analiza cabeceras HTTP de seguridad, certificados SSL, cookies, directorios expuestos y registros DNS.
81/81 tests 0.81s
NO
PWR NORMA PASS
Evalúa cumplimiento RGPD, LSSI y ENS, clasifica cookies, calcula puntuaciones y genera informes de auditoría.
83/83 tests 0.24s
VF
PWR VERIFACTU PASS
Verifica facturación electrónica, generación de XML, firma digital, validación de campos obligatorios y envío a la AEAT.
83/83 tests 0.25s
RA
PWR RADAR PASS
Analiza redes WiFi, VPN y TLS en busca de vulnerabilidades cuánticas. Evalúa preparación post-cuántica con scoring A-F.
118/118 tests 0.44s
TU
PWR TUNEL PASS
Verifica handshake PQC ML-KEM-768, cifrado doble capa ChaCha20+AES-256-GCM, empaquetado HTTP y rotación de claves.
136/136 tests 0.29s
AN
PWR ANTENA PASS
Audita configuraciones de routers WiFi, genera configs hostapd/OpenWrt/MikroTik seguros y evalúa compatibilidad PQC.
115/115 tests 0.27s
MA
PWR MALLA PASS
Prueba handshake híbrido X25519+ML-KEM-768, cifrado de paquetes ChaCha20, generación de configs WireGuard/IPsec y rekeying.
151/151 tests 0.29s
DETALLES

Resultados test a test

Selecciona un producto para ver cada verificación individual.

Producto
CUANTICA 39/39
ESCUDO 59/59
UMBRAL 62/62
ARCA 36/36
CAPSULA 58/58
REFUGIO 48/48
RUBRICA 58/58
VIGIA 81/81
NORMA 83/83
VERIFACTU 83/83
RADAR 118/118
TUNEL 136/136
ANTENA 115/115
MALLA 151/151
CU
PWR CUANTICA
Verifica cifrado y descifrado multicapa, integridad de datos, soporte Unicode, archivos binarios y encapsulación post-cuántica PQC.
39/39
ALL PASS 12.29s
Info 4/4 ▼
✓
Info devuelve version El modulo criptografico debe reportar su estado para diagnosticar problemas.
✓
Info devuelve capas El modulo criptografico debe reportar su estado para diagnosticar problemas.
✓
Info devuelve sodium El modulo criptografico debe reportar su estado para diagnosticar problemas.
✓
Info devuelve listo El modulo criptografico debe reportar su estado para diagnosticar problemas.
Cifrar/Descifrar texto 5/5 ▼
✓
Cifrar devuelve ok=true Si el cifrado falla, los datos quedan expuestos en texto plano.
✓
Cifrar devuelve datos no vacios Un resultado vacio indica fallo silencioso: los datos NO se cifraron.
✓
Datos cifrados != texto original El output debe ser completamente distinto al input; si no, no hay proteccion.
✓
Descifrar devuelve ok=true Si el cifrado falla, los datos quedan expuestos en texto plano.
✓
Texto descifrado == original El roundtrip debe preservar cada byte; cualquier alteracion corrompe datos.
Texto largo 3/3 ▼
✓
Cifrar 10KB devuelve ok=true Los datos reales suelen ser grandes; el cifrado debe escalar sin errores.
✓
Descifrar 10KB devuelve ok=true Los datos reales suelen ser grandes; el cifrado debe escalar sin errores.
✓
Texto largo descifrado == original El roundtrip debe preservar cada byte; cualquier alteracion corrompe datos.
Unicode 3/3 ▼
✓
Cifrar texto con datos sensibles ok Datos como DNI o tarjetas exigen cifrado funcional para cumplir RGPD.
✓
Descifrar texto sensible ok Datos como DNI o tarjetas exigen cifrado funcional para cumplir RGPD.
✓
Texto sensible descifrado == original El roundtrip debe preservar cada byte; cualquier alteracion corrompe datos.
String vacio 2/2 ▼
✓
Cifrar string vacio devuelve ok=false (rechaza vacios) Rechazar vacios previene cifrados sin contenido que darian falsa seguridad.
✓
Error menciona datos vacios Rechazar vacios previene cifrados sin contenido que darian falsa seguridad.
Campos BD 5/5 ▼
✓
Cifrar campo devuelve string El cifrado de campos individuales protege datos columna a columna en la BD.
✓
Campo cifrado != original El campo cifrado debe ser indistinguible de datos aleatorios.
✓
Descifrar campo == original El cifrado de campos individuales protege datos columna a columna en la BD.
✓
Campo DNI round-trip ok El DNI es dato personal protegido por RGPD que requiere cifrado correcto.
✓
Campo vacio devuelve vacio o false Los campos vacios en BD son habituales y deben manejarse sin errores.
Integridad 4/4 ▼
✓
Password incorrecto devuelve ok=false Descifrar con password erroneo debe fallar; si no, el cifrado es inutil.
✓
Datos manipulados devuelve ok=false Detectar alteraciones previene que un atacante modifique datos cifrados.
✓
Datos vacios devuelve ok=false Rechazar vacios previene cifrados sin contenido que darian falsa seguridad.
✓
Datos basura devuelve ok=false Datos corruptos no deben producir un descifrado aparentemente valido.
Archivos 8/8 ▼
✓
Cifrar archivo devuelve ok=true Los archivos son el activo mas comun a proteger; su cifrado debe ser fiable.
✓
Archivo .enc existe El archivo cifrado debe persistir en disco para poder recuperarlo despues.
✓
Archivo .enc tiene contenido Un archivo cifrado vacio indica fallo de escritura y perdida de datos.
✓
Descifrar archivo devuelve ok=true Los archivos son el activo mas comun a proteger; su cifrado debe ser fiable.
✓
Archivo descifrado existe El archivo descifrado debe existir fisicamente en el disco.
✓
Contenido archivo descifrado == original El roundtrip debe preservar cada byte; cualquier alteracion corrompe datos.
✓
Descifrar archivo con password malo ok=false Los archivos son el activo mas comun a proteger; su cifrado debe ser fiable.
✓
Cifrar archivo inexistente ok=false Los archivos son el activo mas comun a proteger; su cifrado debe ser fiable.
PQC 3/3 ▼
✓
PQC disponible devuelve bool La capa post-cuantica protege los datos contra futuros ordenadores cuanticos.
✓
PQC info devuelve array El modulo criptografico debe reportar su estado para diagnosticar problemas.
✓
PQC info tiene backend La capa post-cuantica protege los datos contra futuros ordenadores cuanticos.
Determinismo 2/2 ▼
✓
Dos cifrados del mismo texto son diferentes (salt unico) Un salt unico por cifrado impide que textos iguales generen salidas iguales.
✓
Ambos descifran al mismo texto Cifrados con salt distinto deben descifrar al mismo texto original.
ES
PWR ESCUDO
Detecta inyección SQL, XSS, path traversal y scanners maliciosos. Confirma cero falsos positivos con entradas legítimas.
59/59
ALL PASS 0.24s
SQLi 16/16 ▼
✓
Detecta UNION SELECT UNION SELECT permite al atacante leer datos de cualquier tabla de la base de datos.
✓
Detecta UNION ALL SELECT Variante de UNION que incluye filas duplicadas para extraer mas informacion.
✓
Detecta OR 1=1 OR 1=1 anula la clausula WHERE y expone todos los registros de la tabla.
✓
Detecta comentario SQL -- Los comentarios (--) permiten al atacante ignorar el resto de la consulta.
✓
Detecta SLEEP() SLEEP() permite ataques ciegos midiendo tiempos de respuesta del servidor.
✓
Detecta BENCHMARK() BENCHMARK() genera carga en el servidor y permite inferir datos por tiempo.
✓
Detecta DROP TABLE DROP TABLE puede borrar tablas enteras causando perdida irreversible de datos.
✓
Detecta information_schema Expone la estructura interna de la BD para planificar ataques mas precisos.
✓
Detecta stacked queries Las consultas apiladas permiten ejecutar comandos adicionales arbitrarios.
✓
Detecta CONCAT() CONCAT() ensambla datos robados de multiples columnas en una sola salida.
✓
Detecta WAITFOR DELAY WAITFOR DELAY permite ataques temporales en SQL Server para exfiltrar datos.
✓
No falso positivo: texto normal El texto cotidiano de usuarios no debe activar reglas de inyeccion SQL.
✓
No falso positivo: email Las direcciones email contienen @ y puntos que no deben confundirse con SQL.
✓
No falso positivo: URL Las URLs tienen caracteres especiales que no deben disparar alertas SQL.
✓
No falso positivo: input corto Inputs breves como nombres no deben disparar reglas de deteccion.
✓
No falso positivo: vacío Los campos vacios son habituales en formularios y no son ataques.
XSS 14/14 ▼
✓
Detecta <script> La etiqueta <script> ejecuta JavaScript malicioso en el navegador de la victima.
✓
Detecta <script con espacios Los espacios en <script son una tecnica de evasion de filtros basicos.
✓
Detecta onerror= onerror= ejecuta JS sin necesidad de etiquetas script, mas dificil de detectar.
✓
Detecta onload= onload= ejecuta codigo automaticamente al cargar el elemento en la pagina.
✓
Detecta javascript: El pseudo-protocolo javascript: ejecuta codigo al clicar un enlace normal.
✓
Detecta iframe Un iframe malicioso puede cargar paginas de phishing dentro del sitio legitimo.
✓
Detecta document.cookie Acceder a cookies permite robar la sesion y suplantar la identidad del usuario.
✓
Detecta eval() eval() convierte cualquier string en codigo ejecutable, maximo impacto.
✓
Detecta innerHTML= innerHTML inyecta HTML arbitrario que el navegador ejecuta como confiable.
✓
Detecta URL encoded La codificacion URL oculta payloads XSS que evaden filtros de texto plano.
✓
Detecta data:text/html Las URIs data: embeben HTML/JS completo que se ejecuta en contexto del sitio.
✓
No falso positivo: HTML normal Etiquetas como <p> o <b> son inofensivas y bloquearlas rompe contenido.
✓
No falso positivo: texto plano El texto sin etiquetas no puede contener XSS y nunca debe bloquearse.
✓
No falso positivo: número Los valores numericos no ejecutan codigo y bloquearlos rompe formularios.
Path Traversal 13/13 ▼
✓
Detecta ../ Navegar hacia arriba (../) permite acceder a archivos fuera del directorio web.
✓
Detecta ..\ La variante con backslash funciona en Windows para escapar del directorio.
✓
Detecta /etc/passwd /etc/passwd revela usuarios del sistema, primer objetivo de reconocimiento.
✓
Detecta /etc/shadow /etc/shadow contiene hashes de passwords del sistema operativo.
✓
Detecta null byte %00 El null byte trunca extensiones y permite leer cualquier tipo de archivo.
✓
Detecta php://filter php://filter lee codigo fuente PHP, exponiendo logica y credenciales.
✓
Detecta php://input php://input permite inyectar y ejecutar codigo PHP arbitrario.
✓
Detecta .env .env contiene credenciales, claves API y secretos de la aplicacion.
✓
Detecta .htaccess .htaccess contiene reglas de seguridad y configuracion sensible del servidor.
✓
Detecta .git/ .git expone todo el historial del codigo, incluyendo credenciales antiguas.
✓
Detecta URL encoded traversal La codificacion URL oculta secuencias ../ que evaden filtros basicos.
✓
No falso positivo: ruta normal Las rutas normales de la aplicacion no deben bloquearse por error.
✓
No falso positivo: archivo normal Los nombres de archivo legitimos deben pasar el filtro sin problemas.
Scanner/Bot 10/10 ▼
✓
Detecta sqlmap sqlmap automatiza ataques SQLi y puede extraer bases de datos completas.
✓
Detecta nikto Nikto busca miles de vulnerabilidades conocidas de forma automatizada.
✓
Detecta nmap Nmap escanea puertos y servicios, primera fase de un ataque dirigido.
✓
Detecta wpscan WPScan enumera plugins y usuarios para buscar vectores de ataque.
✓
Detecta nuclei Nuclei ejecuta miles de templates de ataque automaticamente.
✓
Detecta dirbuster DirBuster descubre archivos ocultos mediante fuerza bruta de rutas.
✓
No falso positivo: Chrome Chrome es el navegador mas usado; bloquearlo dejaria fuera a la mayoria.
✓
No falso positivo: Firefox Firefox es un navegador legitimo que no debe confundirse con scanners.
✓
No falso positivo: Googlebot Bloquear Googlebot impide la indexacion y destruye el posicionamiento SEO.
✓
No falso positivo: vacío Algunos clientes HTTP validos no envian User-Agent y son legitimos.
Utilidades 6/6 ▼
✓
Aplanar array simple Normalizar arrays anidados es necesario para inspeccionar payloads ocultos.
✓
Aplanar array anidado Normalizar arrays anidados es necesario para inspeccionar payloads ocultos.
✓
Aplanar array vacío Normalizar arrays anidados es necesario para inspeccionar payloads ocultos.
✓
Cargar config devuelve array La configuracion determina que reglas de seguridad estan activas.
✓
Config tiene modo La configuracion determina que reglas de seguridad estan activas.
✓
Info devuelve versión Confirma que el WAF esta activo y reporta su estado correctamente.
UM
PWR UMBRAL
Valida registro, login, sesiones, bloqueo por intentos fallidos, 2FA con TOTP y recuperación segura de password.
62/62
ALL PASS 2.97s
Registro 9/9 ▼
✓
Registro exitoso Sin registro funcional, ningun usuario nuevo puede acceder al sistema.
✓
Registro devuelve ID El ID unico identifica al usuario en todo el sistema de forma inequivoca.
✓
Registro sin error Las operaciones validas no deben generar errores que confundan al usuario.
✓
No permite registro duplicado Permitir cuentas duplicadas causa suplantacion de identidad.
✓
Error de duplicado correcto Permitir cuentas duplicadas causa suplantacion de identidad.
✓
Rechaza email invalido Aceptar emails malformados impide la comunicacion y recuperacion de cuenta.
✓
Rechaza password corta Passwords cortas se rompen por fuerza bruta en segundos.
✓
Segundo registro exitoso Sin registro funcional, ningun usuario nuevo puede acceder al sistema.
✓
IDs diferentes para usuarios distintos Cada usuario debe tener un ID unico para evitar colisiones de datos.
Login 9/9 ▼
✓
Login exitoso Los usuarios legitimos deben poder autenticarse sin fricciones.
✓
Login devuelve datos de usuario El login debe devolver la informacion del perfil para personalizar la sesion.
✓
Login sin error Las operaciones validas no deben generar errores que confundan al usuario.
✓
Login no requiere 2FA Si el 2FA no esta activado, el login no debe exigirlo.
✓
Datos de usuario contienen email El login debe devolver la informacion del perfil para personalizar la sesion.
✓
Datos seguros no contienen password_hash Exponer hashes de password permite ataques offline de fuerza bruta.
✓
Login con password incorrecto falla Aceptar passwords erroneos da acceso total a cuentas ajenas.
✓
Error de credenciales Los mensajes de error no deben revelar si el email existe o no.
✓
Login con email inexistente falla Usuarios inexistentes deben rechazarse sin revelar informacion util.
Verificar sesion 3/3 ▼
✓
Verificar sesion activa devuelve datos Las sesiones validas deben devolver los datos del usuario autenticado.
✓
Sesion contiene email correcto La sesion debe contener los datos correctos del usuario, no de otro.
✓
Sesion contiene ID La sesion debe contener los datos correctos del usuario, no de otro.
Logout 2/2 ▼
✓
Logout devuelve true Un logout fallido dejaria la sesion abierta y vulnerable.
✓
Sesion destruida tras logout Tras logout, la sesion debe ser invalida para prevenir reutilizacion.
Bloqueo por intentos 6/6 ▼
✓
Cuenta bloqueada tras 5 intentos El bloqueo tras intentos fallidos frena ataques de fuerza bruta.
✓
Muestra intentos realizados Informar de los intentos ayuda al usuario legitimo a entender el bloqueo.
✓
Muestra minutos restantes El tiempo de bloqueo disuade ataques sin bloquear al usuario para siempre.
✓
Login rechazado con cuenta bloqueada Una cuenta bloqueada no debe permitir login aunque el password sea correcto.
✓
Error indica bloqueo temporal El mensaje debe indicar que el bloqueo es temporal, no un error generico.
✓
Cuenta sin intentos no esta bloqueada Las cuentas sin intentos fallidos deben funcionar con normalidad.
TOTP Generacion 4/4 ▼
✓
Generar secreto TOTP exitoso El secreto TOTP es la semilla criptografica para generar codigos 2FA.
✓
Secreto TOTP no vacio El secreto TOTP es la semilla criptografica para generar codigos 2FA.
✓
Secreto TOTP en base32 valido El secreto TOTP es la semilla criptografica para generar codigos 2FA.
✓
Generar TOTP para usuario inexistente falla Usuarios inexistentes deben rechazarse sin revelar informacion util.
TOTP Verificacion 6/6 ▼
✓
Verificacion TOTP con codigo correcto Los codigos TOTP validos deben aceptarse para no bloquear el acceso 2FA.
✓
Verificacion TOTP con codigo incorrecto falla Aceptar codigos erroneos anula por completo la proteccion 2FA.
✓
Verificacion TOTP con usuario inexistente falla Usuarios inexistentes deben rechazarse sin revelar informacion util.
✓
Codigo TOTP tiene 6 digitos El estandar TOTP (RFC 6238) exige codigos de 6 digitos exactos.
✓
Codigo TOTP es numerico Los codigos TOTP solo contienen digitos, otros caracteres indican un fallo.
✓
Verificacion TOTP con periodo anterior (ventana -1) La ventana de tolerancia acepta el codigo anterior para compensar desincronizacion.
Base32 (encode/decode) 4/4 ▼
✓
Base32 encode/decode roundtrip El encoding base32 correcto es esencial para interoperabilidad con apps 2FA.
✓
Base32 solo contiene caracteres validos Caracteres invalidos en base32 rompen la generacion de codigos TOTP.
✓
Base32 encode valor conocido El encoding base32 correcto es esencial para interoperabilidad con apps 2FA.
✓
Base32 decode valor conocido Verificar contra valores de referencia garantiza compatibilidad con el estandar.
Recuperar password 4/4 ▼
✓
Generar token de recuperacion exitoso Sin tokens funcionales, los usuarios que olvidan su password quedan bloqueados.
✓
Token de recuperacion no vacio Sin tokens funcionales, los usuarios que olvidan su password quedan bloqueados.
✓
Token de recuperacion tiene longitud adecuada Sin tokens funcionales, los usuarios que olvidan su password quedan bloqueados.
✓
Recuperar con email inexistente no revela info Revelar si un email existe permite enumerar usuarios del sistema.
Cambiar password con token 6/6 ▼
✓
Cambiar password con token valido Los tokens correctos deben permitir el cambio de password de forma segura.
✓
Login exitoso con nueva password Los usuarios legitimos deben poder autenticarse sin fricciones.
✓
Login con password vieja falla La password anterior debe quedar invalidada inmediatamente tras el cambio.
✓
Token usado no funciona segunda vez Reusar tokens permitiria multiples cambios de password no autorizados.
✓
Token invalido rechazado Tokens arbitrarios no deben permitir cambiar passwords ajenas.
✓
Rechaza password corta al cambiar Passwords cortas se rompen por fuerza bruta en segundos.
No falso positivo en duplicados 5/5 ▼
✓
Registro alpha exitoso Registros con emails diferentes deben aceptarse sin interferencia.
✓
Duplicado case-insensitive detectado Permitir cuentas duplicadas causa suplantacion de identidad.
✓
Registro beta exitoso (no falso positivo) Registros con emails similares pero distintos no deben bloquearse.
✓
Registro gamma exitoso (no falso positivo) Multiples usuarios unicos deben coexistir sin conflictos.
✓
Total de usuarios correcto despues de registros El contador de usuarios debe reflejar exactamente los registros realizados.
Info 4/4 ▼
✓
Info devuelve version Confirma que el modulo esta operativo y reporta su estado.
✓
Info devuelve total de usuarios El contador de usuarios debe reflejar exactamente los registros realizados.
✓
Info devuelve sesiones activas Las estadisticas del sistema deben ser precisas para monitorizacion.
✓
Info config cargada Confirma que el modulo esta operativo y reporta su estado.
AR
PWR ARCA
Prueba subida y descarga cifrada, enlaces temporales con expiración, listado de archivos y borrado seguro.
36/36
ALL PASS 4.86s
Subir archivo 5/5 ▼
✓
Subir archivo devuelve ok La subida cifrada es la operacion base; si falla, no hay almacenamiento.
✓
Subir archivo devuelve ID (16 hex) El ID unico identifica cada archivo de forma segura sin revelar su nombre.
✓
Subir archivo devuelve token La subida cifrada es la operacion base; si falla, no hay almacenamiento.
✓
Archivo cifrado existe en disco El archivo cifrado debe persistir en disco para futuras descargas.
✓
Subir archivo inexistente devuelve error Subir archivos que no existen debe fallar limpiamente con error claro.
Descargar archivo 5/5 ▼
✓
Descargar archivo devuelve ok Sin descarga funcional, los archivos almacenados son irrecuperables.
✓
Contenido descifrado igual al original El archivo descargado debe ser identico al original, bit a bit.
✓
Nombre original recuperado El nombre del archivo debe recuperarse para que el usuario lo identifique.
✓
MIME type detectado El tipo MIME correcto permite abrir el archivo con la aplicacion adecuada.
✓
Descargar con password incorrecto falla Un password erroneo debe denegar acceso, protegiendo la confidencialidad.
Crear enlace temporal 3/3 ▼
✓
Crear enlace devuelve ok Los enlaces temporales permiten compartir archivos de forma controlada.
✓
Enlace tiene token (32 hex) El token autoriza el acceso al archivo; sin el, seria inaccesible.
✓
Enlace tiene URL correcta La URL del enlace debe ser valida para que el receptor pueda acceder.
Verificar enlace 4/4 ▼
✓
Enlace es válido La verificacion de enlaces controla quien accede a los archivos compartidos.
✓
Enlace contiene archivo_id correcto El enlace debe apuntar al archivo correcto, no a otro diferente.
✓
Enlace contiene password cifrada La password del enlace se almacena cifrada para evitar robo si se accede al indice.
✓
Token inexistente devuelve inválido El token autoriza el acceso al archivo; sin el, seria inaccesible.
Enlace expirado 2/2 ▼
✓
Crear enlace con 0 horas devuelve ok Los enlaces temporales permiten compartir archivos de forma controlada.
✓
Enlace expirado es inválido Los enlaces expirados deben denegarse para limitar la ventana de exposicion.
Listar archivos 4/4 ▼
✓
Listar devuelve array El listado permite al propietario gestionar y auditar sus archivos.
✓
Lista contiene al menos 1 archivo Los datos devueltos deben incluir todos los campos esperados.
✓
Archivo de test aparece en la lista El listado permite gestionar y auditar los recursos del sistema.
✓
Entrada tiene campos esperados (id, hash_nombre, tamano_cifrado, fecha_subida) Cada archivo debe tener metadatos completos para gestion y auditoria.
Info y estadísticas 8/8 ▼
✓
Info devuelve ok La informacion del archivo permite verificar su estado y metadatos.
✓
Info contiene hash del archivo El hash verifica la integridad y detecta cualquier alteracion del archivo.
✓
Info contiene tamaño cifrado > 0 Un tamano de 0 indicaria que el archivo se corrompio durante el cifrado.
✓
Info de archivo inexistente devuelve error Subir archivos que no existen debe fallar limpiamente con error claro.
✓
Estadísticas devuelve ok Las estadisticas globales permiten monitorizar el uso del almacenamiento.
✓
Estadísticas: total_archivos >= 1 Las estadisticas globales permiten monitorizar el uso del almacenamiento.
✓
Estadísticas: espacio_usado > 0 Las estadisticas globales permiten monitorizar el uso del almacenamiento.
✓
Estadísticas: enlaces_activos presente Las estadisticas globales permiten monitorizar el uso del almacenamiento.
Borrar archivo 5/5 ▼
✓
Borrar archivo devuelve ok El borrado seguro garantiza que los datos se eliminan cuando se solicita.
✓
Archivo cifrado eliminado del disco Los bytes cifrados deben desaparecer del disco, no solo del indice.
✓
Archivo eliminado no aparece en la lista Un archivo borrado no debe figurar en el listado para evitar confusiones.
✓
Descargar archivo borrado devuelve error Descargar un archivo borrado debe dar error, no datos residuales.
✓
Borrar archivo inexistente devuelve error Subir archivos que no existen debe fallar limpiamente con error claro.
CA
PWR CAPSULA
Comprueba cifrado E2E en navegador, validaciones antispam, honeypot, consentimiento RGPD y exportación de datos.
58/58
ALL PASS 0.28s
Crear formulario 4/4 ▼
✓
Crear formulario devuelve ok=true Sin formularios funcionales, no se pueden recoger datos cifrados.
✓
Crear formulario devuelve id El ID identifica cada formulario de forma unica en el sistema.
✓
Crear formulario devuelve clave_publica La clave publica cifra en el navegador; sin ella no hay cifrado E2E.
✓
El id empieza por cap_ El prefijo identifica formularios Capsula y previene colisiones de ID.
Verificar almacenamiento 7/7 ▼
✓
Archivo formulario existe El archivo de definicion almacena la estructura y claves del formulario.
✓
Archivo envíos existe El archivo de envios almacena las respuestas cifradas recibidas.
✓
Formulario tiene nombre correcto El nombre identifica el formulario en la interfaz de administracion.
✓
Formulario tiene 3 campos La estructura del formulario debe conservar todos los campos definidos.
✓
Formulario tiene clave_privada_cifrada La clave privada cifrada protege el descifrado con una clave maestra.
✓
Formulario tiene clave_publica La clave publica cifra en el navegador; sin ella no hay cifrado E2E.
✓
Formulario tiene fecha_creacion La fecha de creacion permite auditar y gestionar formularios por antiguedad.
Listar formularios 3/3 ▼
✓
Listar formularios devuelve ok=true El listado permite al administrador gestionar todos sus formularios.
✓
Listar formularios contiene al menos 1 Los datos devueltos deben incluir todos los campos esperados.
✓
Nuestro formulario aparece en la lista El formulario recien creado debe ser localizable inmediatamente.
Renderizar formulario 7/7 ▼
✓
Renderizar devuelve HTML El renderizado genera el HTML que el usuario ve e interactua.
✓
HTML contiene el formulario Los datos devueltos deben incluir todos los campos esperados.
✓
HTML contiene campo honeypot El campo honeypot atrapa bots automaticos que rellenan todos los campos.
✓
HTML contiene checkbox RGPD El checkbox RGPD garantiza el consentimiento explicito del usuario.
✓
HTML contiene script capsula.js El script JS realiza el cifrado en el navegador antes de enviar los datos.
✓
HTML contiene pwrCapsulaInit La inicializacion JS activa el cifrado E2E en el formulario renderizado.
✓
HTML contiene campo enc_ hidden Los campos enc_ son los contenedores donde se depositan los datos cifrados.
Simular envío cifrado 5/5 ▼
✓
Cifrar campo 'nombre' con clave pública Cada campo debe cifrarse individualmente con la clave publica del formulario.
✓
Cifrar campo 'email' con clave pública Cada campo debe cifrarse individualmente con la clave publica del formulario.
✓
Cifrar campo 'mensaje' con clave pública Cada campo debe cifrarse individualmente con la clave publica del formulario.
✓
Recibir envío devuelve ok=true El servidor debe aceptar y almacenar los envios cifrados correctamente.
✓
Recibir envío devuelve envio_id El ID de envio permite localizar y gestionar cada respuesta individual.
Validaciones anti-spam 3/3 ▼
✓
Honeypot relleno rechaza envío El campo honeypot atrapa bots automaticos que rellenan todos los campos.
✓
Envío demasiado rápido rechazado Los envios instantaneos son bots; los humanos tardan al menos unos segundos.
✓
RGPD no aceptado rechaza envío El checkbox RGPD garantiza el consentimiento explicito del usuario.
Listar envíos 5/5 ▼
✓
Listar envíos devuelve ok=true El listado permite al administrador gestionar todos sus formularios.
✓
Hay al menos 1 envío Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Envío tiene fecha La fecha de envio es necesaria para auditorias y gestion temporal.
✓
Envío tiene ip_hash El hash de IP permite detectar abuso sin almacenar la IP real (privacidad).
✓
Nuestro envío aparece en la lista El envio recien recibido debe ser localizable en la lista inmediatamente.
Descifrar envío 5/5 ▼
✓
Descifrar devuelve ok=true El administrador debe poder leer los envios usando su clave maestra.
✓
Nombre descifrado correctamente Los datos descifrados deben coincidir exactamente con lo que el usuario envio.
✓
Email descifrado correctamente Los datos descifrados deben coincidir exactamente con lo que el usuario envio.
✓
Mensaje descifrado correctamente Los datos descifrados deben coincidir exactamente con lo que el usuario envio.
✓
Clave maestra incorrecta falla Una clave maestra erronea no debe revelar datos; protege contra acceso fisico.
Exportar envíos 7/7 ▼
✓
Exportar JSON devuelve string La exportacion permite migrar o analizar datos fuera del sistema.
✓
Exportar JSON es válido La exportacion permite migrar o analizar datos fuera del sistema.
✓
Exportar JSON contiene envíos La exportacion permite migrar o analizar datos fuera del sistema.
✓
Exportar JSON tiene datos descifrados La exportacion permite migrar o analizar datos fuera del sistema.
✓
Exportar CSV devuelve string La exportacion permite migrar o analizar datos fuera del sistema.
✓
Exportar CSV contiene cabeceras La exportacion permite migrar o analizar datos fuera del sistema.
✓
Exportar CSV contiene datos La exportacion permite migrar o analizar datos fuera del sistema.
Info del sistema 3/3 ▼
✓
Info devuelve versión Confirma que el modulo esta operativo y reporta su estado.
✓
Info devuelve total_formularios >= 1 Confirma que el modulo esta operativo y reporta su estado.
✓
Info devuelve total_envios >= 1 Confirma que el modulo esta operativo y reporta su estado.
Borrar envío 3/3 ▼
✓
Borrar envío devuelve ok=true El derecho al olvido (RGPD Art. 17) exige poder borrar envios individuales.
✓
Envío borrado ya no aparece en lista Los envios eliminados no deben ser accesibles de ninguna forma.
✓
Borrar envío inexistente falla El derecho al olvido (RGPD Art. 17) exige poder borrar envios individuales.
Validaciones de entrada 5/5 ▼
✓
Crear sin nombre falla Un formulario sin nombre seria imposible de identificar y gestionar.
✓
Crear sin campos falla Un formulario sin campos no puede recoger ningun dato del usuario.
✓
Crear sin clave maestra falla Sin clave maestra, los datos cifrados serian permanentemente ilegibles.
✓
Renderizar formulario inexistente muestra error El renderizado genera el HTML que el usuario ve e interactua.
✓
Listar envíos de formulario inexistente falla Acceder a formularios que no existen debe fallar con un mensaje claro.
Limpieza 1/1 ▼
✓
Archivos de test limpiados La limpieza evita acumular datos de test que ocupan espacio innecesario.
RE
PWR REFUGIO
Verifica backup y restauración cifrada, integridad SHA-256, rotación automática, logging y edge cases.
48/48
ALL PASS 7.95s
Info del sistema 6/6 ▼
✓
Info devuelve versión Confirma que el modulo de backups esta operativo e identifica su version.
✓
Info devuelve diagnóstico de mysqldump mysqldump es necesario para exportar bases de datos en los backups.
✓
Info devuelve diagnóstico de tar tar empaqueta multiples archivos en un solo backup antes de cifrar.
✓
Info devuelve estado de cuántica El estado del cifrado determina si los backups tendran proteccion.
✓
Info devuelve versión de cuántica Confirma que el modulo de backups esta operativo e identifica su version.
✓
Info devuelve info de disco La info de disco previene backups fallidos por espacio insuficiente.
Preparar archivos de test 2/2 ▼
✓
Archivo temporal 1 creado Los archivos de test simulan datos reales para verificar el backup.
✓
Archivo temporal 2 creado Los archivos de test simulan datos reales para verificar el backup.
Backup de archivo único 5/5 ▼
✓
Backup de archivo devuelve ok=true Si el backup falla, no habra forma de recuperar datos tras un desastre.
✓
Backup devuelve ruta de archivo La ruta permite localizar el backup para verificacion o restauracion.
✓
Archivo .enc existe en disco La info de disco previene backups fallidos por espacio insuficiente.
✓
Archivo .enc tiene tamaño > 0 Un backup cifrado con tamano 0 indica perdida total del respaldo.
✓
Archivo .enc tiene extensión .enc Un backup cifrado con tamano 0 indica perdida total del respaldo.
Verificar integridad 3/3 ▼
✓
Verificar backup con password correcto devuelve true Verificar integridad antes de restaurar previene restauraciones corruptas.
✓
Verificar con password incorrecto devuelve false Verificar integridad antes de restaurar previene restauraciones corruptas.
✓
Verificar archivo inexistente devuelve false Verificar archivos inexistentes debe fallar, no devolver falsos OK.
Restaurar backup 4/4 ▼
✓
Restaurar backup devuelve ok=true Si el backup falla, no habra forma de recuperar datos tras un desastre.
✓
Directorio de restauración existe Los archivos restaurados deben existir fisicamente en el directorio destino.
✓
Se restauró al menos 1 archivo El backup debe contener al menos un archivo util tras la restauracion.
✓
Contenido restaurado coincide con original Los datos restaurados deben ser identicos al original, byte a byte.
Comparar hash 1/1 ▼
✓
Hash SHA-256 original == restaurado La comparacion SHA-256 detecta cualquier corrupcion por minima que sea.
Restaurar con password incorrecto 1/1 ▼
✓
Restaurar con password incorrecto devuelve ok=false Un password erroneo nunca debe descifrar un backup ajeno.
Backup múltiples archivos 3/3 ▼
✓
Backup de múltiples archivos devuelve ok=true Si el backup falla, no habra forma de recuperar datos tras un desastre.
✓
Archivo .enc de backup múltiple existe Los recursos creados deben persistir y ser verificables.
✓
Backup múltiple incluye ambas rutas Todos los archivos incluidos deben aparecer en los metadatos del backup.
Rotación de backups 5/5 ▼
✓
Hay 5 archivos .enc antes de rotar tar empaqueta multiples archivos en un solo backup antes de cifrar.
✓
Rotación devuelve ok=true La rotacion elimina backups antiguos y evita llenar el disco.
✓
Rotación eliminó 2 archivos La rotacion elimina backups antiguos y evita llenar el disco.
✓
Rotación dejó 3 archivos La rotacion elimina backups antiguos y evita llenar el disco.
✓
Quedan exactamente 3 archivos .enc en disco La info de disco previene backups fallidos por espacio insuficiente.
Log 4/4 ▼
✓
Archivo de log existe El log de operaciones es imprescindible para auditorias de seguridad.
✓
Log tiene contenido Un log vacio no registra las operaciones realizadas ni los errores.
✓
Log es JSON válido El log debe ser JSON valido para poder ser parseado automaticamente.
✓
Log contiene campos timestamp, tipo y mensaje El timestamp de cada operacion es esencial para reconstruir la cronologia.
Copia local 3/3 ▼
✓
Copia local devuelve ok=true La copia local permite distribuir backups a multiples ubicaciones.
✓
Archivo copiado existe en destino La copia en destino debe existir fisicamente para ser util como respaldo.
✓
Tamaño archivo copiado == original Un tamano diferente indica corrupcion durante la copia.
Edge cases 5/5 ▼
✓
Backup con rutas vacías devuelve ok=false Un backup sin rutas no tiene nada que respaldar y debe informar error.
✓
Backup con password vacío devuelve ok=false Un backup sin password quedaria sin cifrar, expuesto en texto plano.
✓
Backup con ruta inexistente devuelve ok=false Archivos que no existen no pueden respaldarse y deben reportar error.
✓
Restaurar archivo inexistente devuelve ok=false Restaurar un backup que no existe debe fallar con mensaje claro.
✓
Rotación en directorio inexistente devuelve ok=false La rotacion elimina backups antiguos y evita llenar el disco.
Archivo vacío 1/1 ▼
✓
Backup de archivo vacío devuelve ok=true Si el backup falla, no habra forma de recuperar datos tras un desastre.
Nombres con espacios 1/1 ▼
✓
Backup de archivo con espacios en nombre devuelve ok=true Si el backup falla, no habra forma de recuperar datos tras un desastre.
Copia local edge cases 3/3 ▼
✓
Copia local de archivo inexistente devuelve ok=false La copia local permite distribuir backups a multiples ubicaciones.
✓
Info formato version X.Y.Z Confirma que el modulo de backups esta operativo e identifica su version.
✓
Rotación con mantener=1 deja exactamente 1 archivo La rotacion elimina backups antiguos y evita llenar el disco.
Limpieza 1/1 ▼
✓
Directorio temporal eliminado La limpieza evita que datos de test ocupen espacio en el servidor.
RU
PWR RUBRICA
Prueba generación de claves Ed25519, firma y verificación digital, exportación JSON y validaciones de entrada.
58/58
ALL PASS 0.24s
Información del módulo 4/4 ▼
✓
pwr_rubrica_info() devuelve array El modulo debe reportar su estado para diagnostico y compatibilidad.
✓
Versión definida La version identifica las capacidades y algoritmos disponibles.
✓
Backend detectado El backend (Ed25519 o ML-DSA) determina que algoritmos estan disponibles.
✓
Algoritmos listados El listado confirma que algoritmos criptograficos hay accesibles.
Disponibilidad de backends 4/4 ▼
✓
pwr_rubrica_disponible() devuelve array Verificar backends disponibles previene errores al firmar.
✓
Campo ml_dsa existe ML-DSA es el algoritmo post-cuantico FIPS 204 para firmas futuras.
✓
Campo ed25519 existe Ed25519 (via libsodium) es el backend criptografico principal.
✓
Backend preferido definido El backend preferido se usa por defecto en todas las operaciones de firma.
Generar claves (auto) 6/6 ▼
✓
Generación exitosa Sin claves validas, no se puede firmar ni verificar ningun documento.
✓
Algoritmo definido El algoritmo debe quedar registrado para poder verificar con la misma curva.
✓
Clave pública en base64 La clave publica se distribuye para que terceros verifiquen las firmas.
✓
Clave privada en base64 La clave privada firma documentos y debe protegerse absolutamente.
✓
Tamaño clave pública correcto La clave publica se distribuye para que terceros verifiquen las firmas.
✓
Tamaño clave privada correcto La clave privada firma documentos y debe protegerse absolutamente.
Firmar string 5/5 ▼
✓
Firma exitosa Firmar es la operacion base del modulo; sin ella no hay autenticidad.
✓
Firma en base64 Base64 permite transmitir y almacenar la firma como texto seguro.
✓
Algoritmo en resultado El algoritmo en la firma permite verificarla con el mismo metodo.
✓
Hash incluido El hash permite verificar integridad de datos sin exponer su contenido.
✓
Timestamp incluido El timestamp acredita cuando se firmo, esencial para validez legal.
Verificar firma valida 3/3 ▼
✓
Verificación ejecutada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Firma VALIDA Documentos firmados correctamente deben verificarse como autenticos.
✓
Algoritmo correcto La verificacion debe confirmar que se uso el algoritmo esperado.
Verificar firma invalida (datos alterados) 3/3 ▼
✓
Verificación ejecutada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Firma INVALIDA detectada Datos alterados despues de firmar deben detectarse como invalidos.
✓
Firma INVALIDA con clave diferente Datos alterados despues de firmar deben detectarse como invalidos.
Firmar archivo temporal 5/5 ▼
✓
Firma de archivo exitosa Firmar archivos garantiza su autenticidad e integridad en disco.
✓
Firma en base64 Base64 permite transmitir y almacenar la firma como texto seguro.
✓
Nombre de archivo incluido El nombre del archivo firmado permite identificar que se firmo.
✓
Hash incluido El hash permite verificar integridad de datos sin exponer su contenido.
✓
Timestamp incluido El timestamp acredita cuando se firmo, esencial para validez legal.
Verificar archivo firmado 4/4 ▼
✓
Verificación de archivo exitosa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Archivo VALIDO Un archivo sin modificar debe pasar la verificacion de firma.
✓
Archivo ALTERADO detectado Cualquier modificacion post-firma debe detectarse como alteracion.
✓
Archivo inexistente da error Verificar archivos que no existen debe fallar, no dar falsos OK.
Exportar e importar firma JSON 7/7 ▼
✓
Exportación exitosa Exportar firmas permite compartirlas y archivarlas de forma estandar.
✓
JSON generado El formato JSON es el estandar para intercambio de firmas digitales.
✓
JSON válido Un JSON malformado impediria importar o verificar la firma.
✓
Version = 1 La version identifica las capacidades y algoritmos disponibles.
✓
Algoritmo presente Cada campo de la firma es necesario para una verificacion completa.
✓
Firma presente en JSON Cada campo de la firma es necesario para una verificacion completa.
✓
Firmante presente Cada campo de la firma es necesario para una verificacion completa.
JSON exportado 8/8 ▼
✓
Importación exitosa Importar firmas permite verificar documentos recibidos de terceros.
✓
Algoritmo coincide Todos los campos importados deben coincidir con los originales exportados.
✓
Firma coincide Todos los campos importados deben coincidir con los originales exportados.
✓
Hash coincide Todos los campos importados deben coincidir con los originales exportados.
✓
Firmante coincide El firmante identifica quien creo la firma para establecer responsabilidad.
✓
JSON inválido rechazado JSON corrupto o malicioso debe rechazarse para evitar errores.
✓
JSON sin firma rechazado Un JSON sin el campo firma es incompleto y no permite verificacion.
✓
Exportar resultado fallido rechazado Exportar un resultado de error debe fallar, no generar JSON basura.
Validaciones de entrada 5/5 ▼
✓
Firmar datos vacíos rechazado Firmar datos vacios no tiene sentido y debe rechazarse.
✓
Firmar sin clave rechazado Firmar sin clave privada es imposible y debe indicar error claro.
✓
Verificar datos vacíos rechazado Firmar datos vacios no tiene sentido y debe rechazarse.
✓
Verificar sin firma rechazado Un JSON sin el campo firma es incompleto y no permite verificacion.
✓
Algoritmo desconocido rechazado Algoritmos no soportados deben rechazarse antes de intentar operar.
Ed25519 especifico 4/4 ▼
✓
Generar claves Ed25519 Ed25519 es el algoritmo principal y debe generar claves correctamente.
✓
Algoritmo es ed25519 Confirma que las claves generadas usan el algoritmo esperado.
✓
Firmar con Ed25519 La firma Ed25519 es rapida, segura y ampliamente verificable.
✓
Verificar Ed25519 La verificacion debe funcionar con las claves Ed25519 generadas.
VI
PWR VIGIA
Analiza cabeceras HTTP de seguridad, certificados SSL, cookies, directorios expuestos y registros DNS.
81/81
ALL PASS 0.81s
pwr_vigia_info() 7/7 ▼
✓
info() devuelve array El escaner debe reportar sus capacidades y estado correctamente.
✓
info() contiene versión Los datos devueltos deben incluir todos los campos esperados.
✓
info() contiene nombre El nombre del modulo lo identifica en informes y dashboards.
✓
info() contiene capacidades Las capacidades listan que categorias de analisis puede ejecutar.
✓
info() tipo es pasivo El escaner pasivo analiza sin enviar trafico agresivo al objetivo.
✓
info() capacidades incluye headers, ssl, cookies, directorios, dns Las capacidades listan que categorias de analisis puede ejecutar.
✓
info() informa disponibilidad de curl cURL es necesario para realizar las peticiones HTTP de analisis.
pwr_vigia_puntuacion() — Datos mock 14/14 ▼
✓
Puntuación perfecta: headers = A (100) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación perfecta: ssl = A (100) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación perfecta: cookies = A (100) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación perfecta: directorios = A (100) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación perfecta: dns = A (100) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación perfecta: global = A (100) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación mala: headers = F (0) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación mala: ssl = F (0) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación mala: directorios bajo (25 o menos) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación mala: dns = F (0) La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación mala: global nota F La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación parcial: headers entre 40-80 La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación parcial: ssl = B (80) por próximo a expirar La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Puntuación parcial: global entre 30-85 La puntuacion traduce hallazgos tecnicos a una nota comprensible.
pwr_vigia_nota_letra() 13/13 ▼
✓
= A Una nota A indica configuracion optima en esa categoria.
✓
= A Una nota A indica configuracion optima en esa categoria.
✓
= A Una nota A indica configuracion optima en esa categoria.
✓
= B Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= B Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= C Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= C Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= D Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= D Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= E Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= E Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= F Cada nota refleja el nivel real de seguridad en esa categoria.
✓
= F Cada nota refleja el nivel real de seguridad en esa categoria.
pwr_vigia_parsear_cookie() 11/11 ▼
✓
Cookie segura: nombre correcto El nombre del modulo lo identifica en informes y dashboards.
✓
Cookie segura: flag Secure detectado Las cookies con Secure+HttpOnly+SameSite protegen contra robo de sesion.
✓
Cookie segura: flag HttpOnly detectado Las cookies con Secure+HttpOnly+SameSite protegen contra robo de sesion.
✓
Cookie segura: SameSite=Strict detectado Las cookies con Secure+HttpOnly+SameSite protegen contra robo de sesion.
✓
Cookie segura: sin problemas Las cookies con Secure+HttpOnly+SameSite protegen contra robo de sesion.
✓
Cookie insegura: falta Secure Las cookies sin flags de seguridad exponen las sesiones a intercepcion.
✓
Cookie insegura: falta HttpOnly Las cookies sin flags de seguridad exponen las sesiones a intercepcion.
✓
Cookie insegura: falta SameSite Las cookies sin flags de seguridad exponen las sesiones a intercepcion.
✓
Cookie insegura: tiene 3 problemas Las cookies sin flags de seguridad exponen las sesiones a intercepcion.
✓
Cookie insegura: no es segura Las cookies sin flags de seguridad exponen las sesiones a intercepcion.
✓
Cookie Lax: SameSite=Lax detectado SameSite protege contra ataques CSRF limitando el envio de cookies.
pwr_vigia_informe() — Formatos 12/12 ▼
✓
Informe JSON: es JSON válido El informe JSON permite integracion con herramientas de monitorizacion.
✓
Informe JSON: contiene URL El informe JSON permite integracion con herramientas de monitorizacion.
✓
Informe JSON: contiene puntuación La puntuacion traduce hallazgos tecnicos a una nota comprensible.
✓
Informe texto: es string no vacío El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: contiene título El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: contiene URL El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: contiene nota global La nota global resume la postura de seguridad del sitio completo.
✓
Informe texto: contiene sección headers El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: contiene sección SSL El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: muestra header presente como OK El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: muestra header ausente como !! El informe texto es legible directamente por humanos y en emails.
✓
Informe texto: muestra riesgo de directorio El informe texto es legible directamente por humanos y en emails.
pwr_vigia_parsear_headers_raw() 3/3 ▼
✓
Parseo headers: Content-Type correcto Parsear headers HTTP correctamente es la base de todo el analisis.
✓
Parseo headers: X-Frame-Options correcto Parsear headers HTTP correctamente es la base de todo el analisis.
✓
Parseo headers: Set-Cookie múltiple es array Parsear headers HTTP correctamente es la base de todo el analisis.
pwr_vigia_headers() — URL de test 11/11 ▼
✓
headers() devuelve array El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() tiene clave "headers" El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() contiene content-security-policy como clave El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() contiene strict-transport-security como clave El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() contiene x-frame-options como clave El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() contiene x-content-type-options como clave El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() contiene referrer-policy como clave El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() contiene permissions-policy como clave El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() cada header tiene campo "presente" (bool) El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
✓
headers() cada header tiene campo "nombre" El nombre del modulo lo identifica en informes y dashboards.
✓
headers() cada header tiene campo "critico" El analisis de headers HTTP detecta configuraciones de seguridad ausentes.
pwr_vigia_dns() — google.com 7/7 ▼
✓
dns() devuelve array El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
✓
dns() contiene dominio El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
✓
dns() contiene clave spf El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
✓
dns() contiene clave dmarc El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
✓
dns() contiene clave dkim El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
✓
dns() google.com tiene SPF El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
✓
dns() google.com tiene DMARC El analisis DNS verifica SPF, DMARC y DKIM para prevenir suplantacion.
Constante y guard 3/3 ▼
✓
PWR_VIGIA_VERSION definida La constante de version y la doble carga segura previenen conflictos.
✓
PWR_VIGIA_VERSION = 1.0.0 La constante de version y la doble carga segura previenen conflictos.
✓
Re-include con require_once no causa error La constante de version y la doble carga segura previenen conflictos.
NO
PWR NORMA
Evalúa cumplimiento RGPD, LSSI y ENS, clasifica cookies, calcula puntuaciones y genera informes de auditoría.
83/83
ALL PASS 0.24s
Informacion del modulo 8/8 ▼
✓
Devuelve array El modulo de cumplimiento debe estar operativo para evaluar normativas.
✓
Tiene campo version La version del modulo determina que checks normativos estan incluidos.
✓
Version es 1.0.0 La version esperada confirma que el modulo esta actualizado.
✓
Tiene campo modulo El nombre del modulo lo identifica en informes de auditoria.
✓
Tiene campo normativas El listado de normativas indica que legislaciones puede evaluar.
✓
Soporta rgpd El RGPD es obligatorio para toda web que procese datos de ciudadanos UE.
✓
Soporta lssi La LSSI regula servicios de internet y comercio electronico en Espana.
✓
Soporta ens El ENS es obligatorio para administraciones publicas y sus proveedores.
Busqueda de enlaces en HTML 11/11 ▼
✓
Encuentra enlace de privacidad La politica de privacidad es obligatoria (RGPD Art. 13) en toda web.
✓
URL de privacidad correcta La URL del enlace legal debe ser correcta para que los usuarios accedan.
✓
Encuentra enlace de aviso legal El aviso legal es obligatorio en Espana (LSSI Art. 10).
✓
URL de aviso legal correcta El aviso legal es obligatorio en Espana (LSSI Art. 10).
✓
Encuentra enlace de cookies La politica de cookies es exigida por la Directiva ePrivacy.
✓
URL de cookies correcta La politica de cookies es exigida por la Directiva ePrivacy.
✓
No encuentra enlace inexistente La ausencia de un enlace obligatorio se debe detectar como incumplimiento.
✓
Encuentra enlace por href Los enlaces legales pueden tener formatos variados que deben reconocerse.
✓
HTML sin enlaces devuelve null Una pagina sin ningun enlace legal debe reportar 0 detecciones.
✓
Encuentra por patron en href Los patrones flexibles detectan enlaces aunque tengan textos variables.
✓
Busqueda case-insensitive Los textos de enlace pueden variar en mayusculas y deben detectarse igual.
Clasificacion de cookies 14/14 ▼
✓
PHPSESSID es esencial PHPSESSID es la cookie de sesion de PHP; es esencial y no necesita consentimiento.
✓
_ga es analitica La cookie _ga de Google Analytics requiere consentimiento explicito.
✓
_gid es analitica _gid es de Google Analytics y debe clasificarse como analitica.
✓
_fbp es marketing _fbp de Facebook Pixel es marketing y requiere consentimiento explicito.
✓
__utm_a es analitica Las cookies UTM de Google Analytics son analiticas y requieren consentimiento.
✓
csrf_token es esencial Los tokens CSRF son de seguridad, esenciales y no necesitan consentimiento.
✓
Cookie desconocida es desconocida La politica de cookies es exigida por la Directiva ePrivacy.
✓
_hjSession es analitica Hotjar es analitica de comportamiento y requiere consentimiento.
✓
IDE es marketing La cookie IDE de DoubleClick/Google es publicidad que requiere consentimiento.
✓
NID es marketing NID de Google personaliza anuncios y es marketing.
✓
_pk_ses es analitica (Matomo) Las cookies Matomo/Piwik son analiticas, alternativa a Google Analytics.
✓
_tt_enable es marketing (TikTok) Las cookies de TikTok Pixel son marketing y requieren consentimiento RGPD.
✓
session_id es esencial session_id es esencial para mantener la sesion del usuario.
✓
XSRF-TOKEN es esencial Los tokens CSRF son de seguridad, esenciales y no necesitan consentimiento.
Puntuacion de cumplimiento 13/13 ▼
✓
Todo cumple = 100% Un sitio 100% cumplidor debe obtener puntuacion perfecta.
✓
Global = 100% Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Nada cumple = 0% Un sitio sin ningun check cumplido debe obtener puntuacion cero.
✓
Nada cumple global = 0% Un sitio sin ningun check cumplido debe obtener puntuacion cero.
✓
RGPD parcial = 60% Los cumplimientos parciales deben reflejarse proporcionalmente.
✓
LSSI parcial = 17% Los cumplimientos parciales deben reflejarse proporcionalmente.
✓
Global parcial = 46% Los cumplimientos parciales deben reflejarse proporcionalmente.
✓
Multi: RGPD 100% La evaluacion multi-normativa (RGPD+LSSI+ENS) debe ser independiente.
✓
Multi: LSSI 100% La evaluacion multi-normativa (RGPD+LSSI+ENS) debe ser independiente.
✓
Multi: ENS 0% La evaluacion multi-normativa (RGPD+LSSI+ENS) debe ser independiente.
✓
Multi: Global 67% La evaluacion multi-normativa (RGPD+LSSI+ENS) debe ser independiente.
✓
Sin datos: global 0% Sin datos de entrada, la puntuacion debe ser 0, no indefinida.
✓
Solo bajas: 50% Los incumplimientos de severidad baja deben computar proporcionalmente.
Informe JSON 10/10 ▼
✓
Informe JSON no vacio El informe JSON permite integracion con plataformas de compliance.
✓
JSON valido (se decodifica) Un JSON malformado impide el procesamiento automatico del informe.
✓
JSON contiene URL La URL auditada identifica que sitio web fue evaluado.
✓
JSON contiene normativas Las normativas evaluadas deben listarse para saber el alcance del informe.
✓
JSON contiene puntuacion La puntuacion global es el KPI principal del informe de cumplimiento.
✓
JSON contiene RGPD El RGPD es la normativa base que toda web europea debe cumplir.
✓
JSON RGPD tiene 2 checks Verifica el correcto funcionamiento de esta operacion del sistema.
✓
JSON contiene LSSI La LSSI es obligatoria para todas las webs espanolas.
✓
JSON preserva valores booleanos El campo de cumplimiento debe ser booleano estricto (true/false).
✓
JSON puntuacion global correcta Verifica el correcto funcionamiento de esta operacion del sistema.
Informe texto 15/15 ▼
✓
Informe texto no vacio El informe texto es para revision humana directa y envio por email.
✓
Contiene cabecera Los datos devueltos deben incluir todos los campos esperados.
✓
Contiene URL auditada La URL auditada identifica que sitio web fue evaluado.
✓
Contiene RGPD El RGPD es la normativa base que toda web europea debe cumplir.
✓
Contiene LSSI La LSSI es obligatoria para todas las webs espanolas.
✓
Contiene checks OK Los checks superados deben listarse para documentar el cumplimiento.
✓
Contiene checks fallidos Los checks fallidos son los que requieren accion correctiva inmediata.
✓
Contiene seccion recomendaciones Las recomendaciones guian al responsable sobre que corregir primero.
✓
Contiene version del modulo Los datos devueltos deben incluir todos los campos esperados.
✓
Contiene puntuacion global La puntuacion global es el KPI principal del informe de cumplimiento.
✓
Recomendaciones incluyen severidad Las recomendaciones guian al responsable sobre que corregir primero.
✓
Formato no soportado devuelve error Los formatos invalidos deben rechazarse con error informativo.
✓
Todo OK: sin seccion recomendaciones Las recomendaciones guian al responsable sobre que corregir primero.
✓
Recomendaciones priorizadas: alta antes que media Las recomendaciones guian al responsable sobre que corregir primero.
✓
Recomendaciones priorizadas: media antes que baja Las recomendaciones guian al responsable sobre que corregir primero.
Resolver URLs 5/5 ▼
✓
URL absoluta se mantiene Las URLs absolutas deben mantenerse tal cual, sin modificacion.
✓
URL relativa al root Las URLs relativas deben resolverse correctamente contra la URL base.
✓
URL relativa al path Las URLs relativas deben resolverse correctamente contra la URL base.
✓
URL protocol-relative https Las URLs sin protocolo (//) deben heredar el protocolo de la pagina.
✓
URL protocol-relative http Las URLs sin protocolo (//) deben heredar el protocolo de la pagina.
Constante y doble carga 3/3 ▼
✓
Constante PWR_NORMA_VERSION definida Las constantes de version evitan conflictos si el modulo se carga dos veces.
✓
PWR_NORMA_VERSION es 1.0.0 La version esperada confirma que el modulo esta actualizado.
✓
Constante PWR_VIGIA_VERSION definida Las constantes de version evitan conflictos si el modulo se carga dos veces.
Estructura de checks (mock) 4/4 ▼
✓
Checks RGPD tienen estructura correcta (4 campos) La estructura de datos de los checks debe ser consistente para procesarlos.
✓
Severidades son validas (alta/media/baja) La severidad prioriza las correcciones: alta antes que media o baja.
✓
Campo cumple es booleano El campo de cumplimiento debe ser booleano estricto (true/false).
✓
Puntuacion RGPD mock = 70% Los datos mock verifican el calculo sin depender de sitios externos.
VF
PWR VERIFACTU
Verifica facturación electrónica, generación de XML, firma digital, validación de campos obligatorios y envío a la AEAT.
83/83
ALL PASS 0.25s
Información del módulo 5/5 ▼
✓
pwr_verifactu_info() devuelve array Confirma que el modulo esta operativo y reporta su estado.
✓
Versión definida Confirma que el modulo esta operativo y reporta su estado.
✓
Módulo es PWR Verifactu Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Rúbrica disponible Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Hash algoritmo definido Verifica el correcto funcionamiento de esta operacion del sistema.
Crear factura firmada 12/12 ▼
✓
Creación exitosa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Factura firmada incluida Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Hash generado Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Firma generada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Número correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Hash anterior vacío (primera) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Importes calculados Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Subtotal correcto (689.00) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
IVA correcto (144.69) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Total correcto (833.69) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Timestamp presente Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Versión Verifactu Confirma que el modulo esta operativo y reporta su estado.
Verificar factura firmada 4/4 ▼
✓
Verificación ejecutada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Factura válida Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Integridad OK Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Firma válida Verifica el correcto funcionamiento de esta operacion del sistema.
Cadena de 3 facturas 9/9 ▼
✓
Factura 1 creada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Factura 2 creada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Factura 3 creada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Hash encadenado 1->2 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Hash encadenado 2->3 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Verificación cadena ejecutada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Total facturas = 3 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Todas válidas (3/3) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Cadena íntegra Verifica el correcto funcionamiento de esta operacion del sistema.
Exportar XML 7/7 ▼
✓
XML generado Verifica el correcto funcionamiento de esta operacion del sistema.
✓
XML contiene declaración Los datos devueltos deben incluir todos los campos esperados.
✓
XML contiene NIF emisor Los datos devueltos deben incluir todos los campos esperados.
✓
XML contiene NIF receptor Los datos devueltos deben incluir todos los campos esperados.
✓
XML contiene número factura Los datos devueltos deben incluir todos los campos esperados.
✓
XML contiene hash Los datos devueltos deben incluir todos los campos esperados.
✓
XML contiene namespace Verifactu Los datos devueltos deben incluir todos los campos esperados.
Exportar JSON 6/6 ▼
✓
JSON generado Verifica el correcto funcionamiento de esta operacion del sistema.
✓
JSON válido Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Formato correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Versión incluida Confirma que el modulo esta operativo y reporta su estado.
✓
Factura incluida Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Timestamp exportación Verifica el correcto funcionamiento de esta operacion del sistema.
Registrar y listar 9/9 ▼
✓
Registro exitoso Verifica el correcto funcionamiento de esta operacion del sistema.
✓
ID generado Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Segunda factura registrada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Listar devuelve array El listado permite gestionar y auditar los recursos del sistema.
✓
Facturas en registro Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Filtro por NIF funciona Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Filtro NIF inexistente = vacío Acceder a recursos inexistentes debe fallar limpiamente sin efectos secundarios.
✓
Filtro por fecha funciona Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Filtro fecha fuera de rango = vacío Verifica el correcto funcionamiento de esta operacion del sistema.
Validaciones - campos faltantes 8/8 ▼
✓
Factura sin número rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Factura sin emisor rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Factura sin receptor rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Factura sin líneas rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Emisor sin NIF rechazado Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Fecha formato incorrecto rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Línea sin concepto rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Clave privada vacía rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
Firma incorrecta / datos alterados 7/7 ▼
✓
Factura con total alterado: integridad KO Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Factura con total alterado: no válida Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Hash alterado detectado Sin esta deteccion, la amenaza pasaria desapercibida y podria explotarse.
✓
Clave pública incorrecta: firma KO Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Clave pública incorrecta: no válida Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Clave pública vacía rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Factura no-array rechazada Verifica el correcto funcionamiento de esta operacion del sistema.
Cadena rota 4/4 ▼
✓
Cadena rota detectada Sin esta deteccion, la amenaza pasaria desapercibida y podria explotarse.
✓
Cadena vacía rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Cadena de 1 factura válida Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Cadena con PK vacía rechazada Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
Exportar edge cases 6/6 ▼
✓
XML de no-array devuelve vacío Verifica el correcto funcionamiento de esta operacion del sistema.
✓
XML de array vacío devuelve vacío Verifica el correcto funcionamiento de esta operacion del sistema.
✓
JSON de no-array devuelve vacío Verifica el correcto funcionamiento de esta operacion del sistema.
✓
JSON de array vacío devuelve vacío Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Registrar factura vacía rechazado Rechazar entradas invalidas previene errores, corrupcion o accesos indebidos.
✓
Registrar no-array rechazado Verifica el correcto funcionamiento de esta operacion del sistema.
Factura con IVA mixto 6/6 ▼
✓
Factura mixta creada Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Subtotal mixto correcto (260.00) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
IVA mixto correcto (33.40) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Total mixto correcto (293.40) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Desglose con 3 tipos IVA Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Factura mixta válida Verifica el correcto funcionamiento de esta operacion del sistema.
RA
PWR RADAR
Analiza redes WiFi, VPN y TLS en busca de vulnerabilidades cuánticas. Evalúa preparación post-cuántica con scoring A-F.
118/118
ALL PASS 0.44s
pwr_radar_info() 8/8 ▼
✓
info() devuelve array Confirma que el modulo esta operativo y reporta su estado.
✓
info() contiene versión Los datos devueltos deben incluir todos los campos esperados.
✓
info() contiene nombre Los datos devueltos deben incluir todos los campos esperados.
✓
info() contiene descripción Los datos devueltos deben incluir todos los campos esperados.
✓
info() contiene capacidades Los datos devueltos deben incluir todos los campos esperados.
✓
info() capacidades incluye tls, wifi, vpn, dns, pqc El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
info() informa disponibilidad de openssl Confirma que el modulo esta operativo y reporta su estado.
✓
info() contiene version_php Los datos devueltos deben incluir todos los campos esperados.
pwr_radar_analizar_wifi() — WPA3-SAE 5/5 ▼
✓
WiFi WPA3: wpa_version = WPA3 Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA3: nivel_seguridad = alto Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA3: puntuación >= 80 Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA3: tiene recomendaciones (array) Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA3: PMF activo reconocido Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
pwr_radar_analizar_wifi() — WPA2-PSK 5/5 ▼
✓
WiFi WPA2: wpa_version = WPA2 Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA2: nivel_seguridad = medio Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA2: puntuación entre 40-75 Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA2: PMF desactivado genera vulnerabilidad Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WPA2: recomienda migrar a WPA3 Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
pwr_radar_analizar_wifi() — WEP 4/4 ▼
✓
WiFi WEP: nivel_seguridad = critico Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WEP: puntuación baja (< 30) Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WEP: tiene vulnerabilidades Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi WEP: pqc_vulnerable = true Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
pwr_radar_analizar_wifi() — Red abierta 2/2 ▼
✓
WiFi OPEN: nivel_seguridad = critico Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi OPEN: puntuación = 0 Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
pwr_radar_analizar_wifi() — TKIP 2/2 ▼
✓
WiFi TKIP: detecta TKIP como débil Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
WiFi TKIP: puntuación menor que CCMP Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
pwr_radar_analizar_vpn() — IKEv2 óptima 5/5 ▼
✓
VPN óptima: ike_version = 2 Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN óptima: nivel_seguridad = alto Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN óptima: puntuación >= 80 Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN óptima: PFS activo Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN óptima: tiene recomendaciones Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
pwr_radar_analizar_vpn() — VPN débil 8/8 ▼
✓
VPN débil: nivel_seguridad = bajo Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: puntuación < 30 Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: detecta IKEv1 como vulnerable Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: detecta DH grupo 2 como inseguro Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: detecta 3DES como inseguro Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: detecta MD5 como inseguro Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: detecta falta de PFS Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN débil: pqc_vulnerable = true Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
pwr_radar_analizar_vpn() — VPN media 2/2 ▼
✓
VPN media: nivel_seguridad = medio o alto Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
VPN media: puntuación entre 50-85 Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
pwr_radar_analizar_vpn() — SHA-1 1/1 ▼
✓
VPN SHA-1: detecta SHA-1 como deprecado Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
pwr_radar_analizar_dns() — validaciones 2/2 ▼
✓
DNS vacío: devuelve error DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS vacío: puntuación = 0 DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
pwr_radar_analizar_dns() — estructura de respuesta 11/11 ▼
✓
DNS google.com: devuelve array DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: tiene clave dominio DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: tiene clave dnssec DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: tiene clave caa DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: tiene clave dane DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: tiene clave tlsa El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
DNS google.com: tiene clave spf DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: tiene clave dmarc DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: SPF presente DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: DMARC presente DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
DNS google.com: puntuación > 0 DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
pwr_radar_analizar_dns() — limpieza de dominio 1/1 ▼
✓
DNS limpia protocolo: dominio = google.com/path limpio DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
pwr_radar_pqc_readiness() — máximo PQC 4/4 ▼
✓
PQC max: puntuación >= 80 El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
✓
PQC max: nivel = preparado El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
✓
PQC max: tiene desglose El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
✓
PQC max: desglose tiene tls, wifi, vpn, dns El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
pwr_radar_pqc_readiness() — mínimo PQC 2/2 ▼
✓
PQC min: puntuación < 30 El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
✓
PQC min: nivel = vulnerable El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
pwr_radar_pqc_readiness() — parcial 2/2 ▼
✓
PQC parcial: puntuación entre 20-65 El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
✓
PQC parcial: nivel = parcial o en_riesgo El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
pwr_radar_scoring() — scoring combinado 8/8 ▼
✓
Scoring: devuelve array con categorias y global El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Scoring: global tiene puntos y nota El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Scoring: categorías incluyen tls El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
Scoring: categorías incluyen wifi Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
Scoring: categorías incluyen vpn Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
Scoring: categorías incluyen dns DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
Scoring: nota global es una letra A-F El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Scoring: puntos global entre 0-100 El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
pwr_radar_scoring() — todo perfecto 2/2 ▼
✓
Scoring perfecto: nota global = A El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Scoring perfecto: puntos global >= 90 El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
pwr_radar_scoring() — todo mal 2/2 ▼
✓
Scoring malo: nota global = F El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Scoring malo: puntos global < 30 El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
pwr_radar_scoring() — solo TLS 2/2 ▼
✓
Scoring solo TLS: tiene nota global El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
Scoring solo TLS: solo categoría TLS presente El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
pwr_radar_informe() — formato array 7/7 ▼
✓
Informe array: es array El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe array: contiene generado (timestamp) El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe array: contiene versión El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe array: contiene producto El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe array: contiene scoring El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Informe array: contiene pqc El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
✓
Informe array: contiene resumen El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
pwr_radar_informe() — formato JSON 5/5 ▼
✓
Informe JSON: es string El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe JSON: es JSON válido El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe JSON: contiene scoring El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Informe JSON: contiene resumen El informe documenta vulnerabilidades y recomendaciones para el equipo tecnico.
✓
Informe JSON: contiene pqc El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
pwr_radar_analizar_tls() — host real 11/11 ▼
✓
TLS real: devuelve array El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: tiene clave host El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: tiene clave port El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: certificado tiene tipo_clave El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: certificado tiene tamano_clave El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: certificado tiene protocolo El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: certificado es válido El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: certificado no expirado El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: días restantes > 0 El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: tiene vulnerabilidades (array) El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
TLS real: tiene recomendaciones (array) El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
Constante y guard de doble carga 3/3 ▼
✓
PWR_RADAR_VERSION definida Confirma que el modulo esta operativo y reporta su estado.
✓
PWR_RADAR_VERSION = 1.0.0 Confirma que el modulo esta operativo y reporta su estado.
✓
Re-include con require_once no causa error Verifica el correcto funcionamiento de esta operacion del sistema.
pwr_radar_analizar_completo() — con skip 8/8 ▼
✓
Completo skip: tiene host Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Completo skip: tiene timestamp Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Completo skip: NO tiene tls (skip_tls) El analisis TLS detecta certificados, cifrados y protocolos vulnerables a computacion cuantica.
✓
Completo skip: NO tiene dns (skip_dns) DNSSEC y DANE protegen la integridad DNS, critica para evitar redirecciones maliciosas.
✓
Completo skip: tiene wifi Las redes WiFi con WPA2 o PSK son vulnerables a ataques cuanticos via Shor contra el key exchange.
✓
Completo skip: tiene vpn Las VPN con IKEv1 o DH debil seran las primeras en caer ante un ordenador cuantico.
✓
Completo skip: tiene scoring El scoring A-F traduce hallazgos tecnicos a una nota comprensible para responsables IT.
✓
Completo skip: tiene pqc El scoring PQC readiness mide cuanto falta para estar protegido contra amenazas cuanticas.
_pwr_radar_nota_letra() — rangos 6/6 ▼
✓
puntos = A Verifica el correcto funcionamiento de esta operacion del sistema.
✓
puntos = B Verifica el correcto funcionamiento de esta operacion del sistema.
✓
puntos = C Verifica el correcto funcionamiento de esta operacion del sistema.
✓
puntos = D Verifica el correcto funcionamiento de esta operacion del sistema.
✓
puntos = E Verifica el correcto funcionamiento de esta operacion del sistema.
✓
puntos = F Verifica el correcto funcionamiento de esta operacion del sistema.
TU
PWR TUNEL
Verifica handshake PQC ML-KEM-768, cifrado doble capa ChaCha20+AES-256-GCM, empaquetado HTTP y rotación de claves.
136/136
ALL PASS 0.29s
Info del módulo 13/13 ▼
✓
info() devuelve array Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene version Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene nombre Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene descripcion Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene capacidades Confirma que el modulo esta operativo y reporta su estado.
✓
info() capacidad cifrado_doble_capa Confirma que el modulo esta operativo y reporta su estado.
✓
info() capacidad chacha20_poly1305 Confirma que el modulo esta operativo y reporta su estado.
✓
info() capacidad aes_256_gcm Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene algoritmos Confirma que el modulo esta operativo y reporta su estado.
✓
info() algoritmo KEM definido Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene sesion_ttl La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
info() detecta sodium Sin esta deteccion, la amenaza pasaria desapercibida y podria explotarse.
✓
info() detecta openssl Sin esta deteccion, la amenaza pasaria desapercibida y podria explotarse.
Generación de claves 10/10 ▼
✓
generar_claves() devuelve ok=true Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() devuelve pk Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() devuelve sk Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() pk es base64 válido Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() sk es base64 válido Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() tiene modo Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() pk no está vacía en raw Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
generar_claves() sk no está vacía en raw Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
Dos pares de claves son diferentes Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
Claves secretas son diferentes Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
Handshake PQC 13/13 ▼
✓
handshake() devuelve ok=true El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
handshake() devuelve shared_secret El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
handshake() devuelve ciphertext El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
handshake() shared_secret es base64 El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
handshake() ciphertext es base64 El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
handshake() shared_secret tiene 32+ bytes El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
decapsular() devuelve ok=true Las operaciones validas deben completarse sin errores.
✓
decapsular() devuelve shared_secret Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Shared secrets coinciden (A == B) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
handshake() con pk vacía devuelve error El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
handshake() con pk inválida devuelve error El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
decapsular() con sk vacía devuelve error Los errores deben comunicarse claramente para facilitar la correccion.
✓
decapsular() con ciphertext vacío devuelve error Los errores deben comunicarse claramente para facilitar la correccion.
Creación de sesión 17/17 ▼
✓
crear_sesion() devuelve ok=true La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() tiene id La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() tiene clave_chacha La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() tiene clave_aes La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() tiene sal La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() clave_chacha es base64 La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() clave_aes longitud 32 bytes La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() tiene timestamp creada La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() tiene expira La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() TTL correcto La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() bytes_enviados = 0 La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() paquetes = 0 La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() activa = true La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() con TTL personalizado La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() con ID personalizado La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() con secret vacío devuelve error La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
crear_sesion() con secret muy corto devuelve error La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
Cifrado y descifrado 23/23 ▼
✓
cifrar() devuelve ok=true El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() devuelve datos cifrados El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() devuelve nonce_chacha El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() devuelve iv_aes El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() devuelve tag_aes El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() tam_original correcto El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() datos cifrados != originales El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() actualiza bytes_enviados El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() incrementa paquetes El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() devuelve ok=true El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() devuelve datos originales El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() actualiza bytes_recibidos El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() funciona con datos binarios El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() recupera datos binarios El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() funciona con texto largo (32KB) El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() recupera texto largo El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() funciona con JSON El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() recupera JSON intacto El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() funciona con unicode/emojis El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() recupera unicode intacto El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
cifrar() con datos vacíos devuelve error El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() con paquete vacío devuelve error El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() con clave incorrecta devuelve error El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
Empaquetado de requests HTTP 15/15 ▼
✓
empaquetar_request() devuelve ok=true El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_request() devuelve paquete El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_request() paquete es base64 El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() devuelve ok=true El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() method correcto El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() url correcta El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() headers correctos El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() body correcto El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() tiene timestamp El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_request() GET sin body funciona El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() GET recupera datos El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_request() sin método devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_request() sin URL devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() con paquete vacío devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_request() con paquete inválido devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
Empaquetado de responses HTTP 12/12 ▼
✓
empaquetar_response() devuelve ok=true El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_response() devuelve paquete El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_response() devuelve ok=true El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_response() status correcto El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_response() headers correctos El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_response() body correcto El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_response() 404 funciona El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_response() 404 recupera status El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_response() 500 funciona El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_response() status <100 devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
empaquetar_response() status >599 devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
desempaquetar_response() vacío devuelve error El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
Estado de sesión 11/11 ▼
✓
estado() devuelve activa=true El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() razon es ok El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() id correcto El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() ttl_restante > 0 El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() bytes_total = 0 El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() paquetes = 0 El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() detecta sesión expirada La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
estado() razón expiración correcta El estado de sesion permite monitorizar la salud del tunel en tiempo real.
✓
estado() detecta sesión desactivada La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
estado() con sesión vacía devuelve inactiva La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
✓
estado() con sesión ok=false devuelve inactiva La sesion almacena las claves derivadas para cifrar/descifrar trafico del tunel.
Rotación de claves 10/10 ▼
✓
rotar_claves() devuelve ok=true Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
rotar_claves() rotación = 1 Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
rotar_claves() cambia clave_chacha Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
rotar_claves() cambia clave_aes Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
rotar_claves() cambia sal Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
rotar_claves() incrementa contador Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
cifrar() funciona después de rotar El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
descifrar() funciona después de rotar El doble cifrado ChaCha20+AES-256-GCM protege el trafico con dos capas independientes.
✓
Segunda rotación ok Verifica el correcto funcionamiento de esta operacion del sistema.
✓
rotar_claves() con sesión inválida devuelve error Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
Flujo E2E completo 12/12 ▼
✓
E2E: Sede A genera claves Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
E2E: Sede B genera claves Las claves ML-KEM-768 son la base del handshake post-cuantico del tunel.
✓
E2E: Handshake A->B El handshake PQC establece un secreto compartido resistente a ordenadores cuanticos.
✓
E2E: B decapsula ciphertext Verifica el correcto funcionamiento de esta operacion del sistema.
✓
E2E: Shared secrets coinciden Verifica el correcto funcionamiento de esta operacion del sistema.
✓
E2E: A empaqueta request El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
E2E: B desempaqueta request El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
E2E: Datos de request intactos El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
E2E: B empaqueta response El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
E2E: A desempaqueta response El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
✓
E2E: Status 201 correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
E2E: Body de response intacto El empaquetado HTTP cifra peticiones y respuestas completas para transmision segura.
AN
PWR ANTENA
Audita configuraciones de routers WiFi, genera configs hostapd/OpenWrt/MikroTik seguros y evalúa compatibilidad PQC.
115/115
ALL PASS 0.27s
pwr_antena_info() 8/8 ▼
✓
info() devuelve array Confirma que el modulo esta operativo y reporta su estado.
✓
info() contiene version Los datos devueltos deben incluir todos los campos esperados.
✓
info() contiene nombre Los datos devueltos deben incluir todos los campos esperados.
✓
info() contiene capacidades Los datos devueltos deben incluir todos los campos esperados.
✓
info() tipo es auditoria_wifi La auditoria detecta configuraciones inseguras en routers WiFi antes de que un atacante las explote.
✓
info() capacidades incluye auditar, generar_hostapd, pqc_compatible La auditoria detecta configuraciones inseguras en routers WiFi antes de que un atacante las explote.
✓
info() plataformas incluye hostapd, openwrt, mikrotik hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
info() descripcion no vacia Confirma que el modulo esta operativo y reporta su estado.
pwr_antena_auditar() — Config WPA3 segura 8/8 ▼
✓
Audit segura: devuelve array Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit segura: contiene puntuacion Los datos devueltos deben incluir todos los campos esperados.
✓
Audit segura: puntuacion >= 85 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit segura: contiene hallazgos Los datos devueltos deben incluir todos los campos esperados.
✓
Audit segura: tiene 9+ hallazgos (1 por categoria) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit segura: contiene timestamp Los datos devueltos deben incluir todos los campos esperados.
✓
Audit segura: contiene version Los datos devueltos deben incluir todos los campos esperados.
✓
Audit segura: WPA3 detectado como OK WPA3-SAE es el minimo recomendado para seguridad WiFi moderna.
pwr_antena_auditar() — Config WPA2 insegura 6/6 ▼
✓
Audit insegura: puntuacion < 40 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit insegura: TKIP detectado como critico Sin esta deteccion, la amenaza pasaria desapercibida y podria explotarse.
✓
Audit insegura: WPS activo es critico Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit insegura: PMF desactivado es critico Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit insegura: puertos de riesgo detectados Sin esta deteccion, la amenaza pasaria desapercibida y podria explotarse.
✓
Audit insegura: SSID revela fabricante Verifica el correcto funcionamiento de esta operacion del sistema.
pwr_antena_auditar() — Config WEP y open 3/3 ▼
✓
Audit WEP: puntuacion < 25 WEP es un protocolo roto desde 2001; detectarlo es critico para la seguridad.
✓
Audit open: puntuacion < 20 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Audit mixta WPA2/WPA3: puntuacion entre 50 y 85 WPA3-SAE es el minimo recomendado para seguridad WiFi moderna.
pwr_antena_evaluar_password() 14/14 ▼
✓
Password fuerte: puntuacion >= 70 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password fuerte: nivel Bueno o Excelente Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password fuerte: entropia > 50 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password debil: puntuacion < 30 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password debil: tiene problemas Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password debil: nivel Debil o Critico Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password diccionario: puntuacion <= 10 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password diccionario: detectado en diccionario Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password numerico: detecta solo numeros Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password con secuencias: detecta patron Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password con repeticiones: detecta patron Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password vacio: puntuacion 0 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password largo: puntuacion >= 70 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Password largo: tipos >= 4 Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
pwr_antena_pqc_compatible() 8/8 ▼
✓
PQC ready: compatible es true La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC ready: nivel PQC Ready o PQC Parcial La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC ready: puntuacion >= 70 La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC ready: contiene detalles La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC no compatible: compatible es false La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC no compatible: nivel No compatible o Preparacion necesaria La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC no compatible: puntuacion < 40 La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
PQC parcial: puntuacion entre 40 y 85 La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
pwr_antena_generar_hostapd() 12/12 ▼
✓
Hostapd: devuelve array con config hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene ssid hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene WPA3-SAE hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene GCMP-256 hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene ieee80211w=2 hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene password SAE hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene canal 44 hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: config contiene country ES hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: archivo es hostapd.conf hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd: contiene notas hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd 2.4GHz: hw_mode=g hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
✓
Hostapd 2.4GHz: canal 6 hostapd es el demonio WiFi de Linux; generar configs seguras previene errores manuales.
pwr_antena_generar_openwrt() 9/9 ▼
✓
OpenWrt: devuelve array con config OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: config contiene ssid OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: config contiene encryption sae OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: config contiene ieee80211w 2 OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: config contiene wifi-device OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: config contiene wifi-iface OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: config contiene key del password OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt: archivo correcto OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
✓
OpenWrt 2.4GHz: hwmode 11g OpenWrt es el firmware de router open source mas usado; configurarlo bien es critico.
pwr_antena_generar_mikrotik() 9/9 ▼
✓
MikroTik: devuelve array con config MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: config contiene ssid MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: config contiene security-profiles MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: config contiene management-protection=required MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: config contiene wps-mode=disabled MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: config contiene disable-pmkid=yes MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: config contiene password MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: archivo correcto MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
✓
MikroTik: contiene notas MikroTik RouterOS es comun en AAPP y PYMEs; sus configs deben ser seguras.
pwr_antena_recomendaciones() 6/6 ▼
✓
Recomendaciones: devuelve array Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
✓
Recomendaciones: tiene al menos 3 recomendaciones para config insegura Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
✓
Recomendaciones: primera es prioridad 1 (critica) Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
✓
Recomendaciones: cada una tiene accion Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
✓
Recomendaciones: cada una tiene categoria Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
✓
Recomendaciones segura: pocas recomendaciones (<=2) Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
pwr_antena_scoring() 12/12 ▼
✓
Scoring segura: nota A o B El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring segura: contiene label El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring segura: contiene puntos El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring insegura: nota D, E o F El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 95: nota A El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 90: nota A El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 85: nota B El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 70: nota C El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 55: nota D El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 35: nota E El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 10: nota F El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Scoring 0: nota F El scoring A-F resume la postura de seguridad del router en un vistazo.
pwr_antena_informe() 15/15 ▼
✓
Informe array: devuelve array Confirma que el modulo esta operativo y reporta su estado.
✓
Informe array: contiene scoring El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Informe array: contiene hallazgos Los datos devueltos deben incluir todos los campos esperados.
✓
Informe array: contiene recomendaciones Las recomendaciones priorizadas guian al administrador sobre que corregir primero.
✓
Informe array: contiene pqc La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
✓
Informe array: contiene resumen Los datos devueltos deben incluir todos los campos esperados.
✓
Informe array: resumen tiene criticos + avisos + ok Confirma que el modulo esta operativo y reporta su estado.
✓
Informe JSON: devuelve string Confirma que el modulo esta operativo y reporta su estado.
✓
Informe JSON: es JSON valido Confirma que el modulo esta operativo y reporta su estado.
✓
Informe JSON: contiene PWR Antena Los datos devueltos deben incluir todos los campos esperados.
✓
Informe texto: devuelve string Confirma que el modulo esta operativo y reporta su estado.
✓
Informe texto: contiene INFORME PWR ANTENA Los datos devueltos deben incluir todos los campos esperados.
✓
Informe texto: contiene nota El scoring A-F resume la postura de seguridad del router en un vistazo.
✓
Informe texto: contiene HALLAZGOS Los datos devueltos deben incluir todos los campos esperados.
✓
Informe texto: contiene PQC La compatibilidad PQC determina si el router esta listo para cifrado post-cuantico.
Constantes y doble carga 5/5 ▼
✓
PWR_ANTENA_VERSION definida Confirma que el modulo esta operativo y reporta su estado.
✓
PWR_ANTENA_VERSION = 1.0.0 Confirma que el modulo esta operativo y reporta su estado.
✓
PWR_ANTENA_PASSWORD_MIN definida Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
PWR_ANTENA_PASSWORD_RECOMENDADO definida Evaluar la fortaleza del password WiFi previene ataques de fuerza bruta y diccionario.
✓
Re-include con require_once no causa error Verifica el correcto funcionamiento de esta operacion del sistema.
MA
PWR MALLA
Prueba handshake híbrido X25519+ML-KEM-768, cifrado de paquetes ChaCha20, generación de configs WireGuard/IPsec y rekeying.
151/151
ALL PASS 0.29s
INFORMACIÓN DEL MÓDULO 12/12 ▼
✓
info() devuelve array Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene nombre Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene versión Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene descripción Confirma que el modulo esta operativo y reporta su estado.
✓
info() tiene capacidades Confirma que el modulo esta operativo y reporta su estado.
✓
Capacidad x25519 activa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Capacidad ml_kem_768 activa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Capacidad chacha20_poly1305 activa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Capacidad hkdf_sha256 activa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Capacidad wireguard_config activa Generar configs WireGuard compatibles facilita la adopcion sin cambiar la infraestructura.
✓
Capacidad ipsec_config activa Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
info() indica estado sodium El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
GENERACIÓN DE CLAVES 17/17 ▼
✓
generar_claves() devuelve array El keypair hibrido X25519+ML-KEM-768 combina seguridad clasica y post-cuantica.
✓
Tiene componente x25519 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene componente mlkem Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Es híbrido Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene huella Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene timestamp Verifica el correcto funcionamiento de esta operacion del sistema.
✓
X25519: clave pública 32 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
X25519: clave secreta 32 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
X25519: tiene keypair Verifica el correcto funcionamiento de esta operacion del sistema.
✓
ML-KEM: clave pública existe Los recursos creados deben persistir y ser verificables.
✓
ML-KEM: clave secreta existe Los recursos creados deben persistir y ser verificables.
✓
ML-KEM: campo nativo presente Verifica el correcto funcionamiento de esta operacion del sistema.
✓
ML-KEM: tamaño PK correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
ML-KEM: tamaño SK correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Claves únicas: X25519 PK diferente El keypair hibrido X25519+ML-KEM-768 combina seguridad clasica y post-cuantica.
✓
Claves únicas: ML-KEM PK diferente El keypair hibrido X25519+ML-KEM-768 combina seguridad clasica y post-cuantica.
✓
Claves únicas: huella diferente El keypair hibrido X25519+ML-KEM-768 combina seguridad clasica y post-cuantica.
CREACIÓN DE PEERS 16/16 ▼
✓
crear_peer() devuelve array Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene ID Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene nombre Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene endpoint Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene PK remota Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene ML-KEM PK remota Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene keepalive personalizado Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene DNS personalizado Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene MTU Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer está activo Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer tiene timestamp creación Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer bytes_tx inicializado Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer bytes_rx inicializado Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer default: keepalive 25 Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer default: allowed_ips incluye 0.0.0.0/0 Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Peer vacío devuelve error Los peers son los nodos de la red VPN que se comunican de forma segura.
HANDSHAKE HÍBRIDO 16/16 ▼
✓
handshake() devuelve sesión El handshake hibrido mezcla X25519 y ML-KEM-768 para resistir ataques clasicos y cuanticos.
✓
Sesión tiene shared_secret Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Shared secret es 32 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión tiene clave_tx Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión tiene clave_rx Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión tiene clave_auth Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión tiene iv_base Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión estado establecido El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
✓
Sesión tiene expiración Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión contador en 0 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
TX y RX son diferentes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Handshake tiene metadatos El handshake hibrido mezcla X25519 y ML-KEM-768 para resistir ataques clasicos y cuanticos.
✓
Handshake tiene PK efímera X25519 El handshake hibrido mezcla X25519 y ML-KEM-768 para resistir ataques clasicos y cuanticos.
✓
Handshake tiene ML-KEM ciphertext El handshake hibrido mezcla X25519 y ML-KEM-768 para resistir ataques clasicos y cuanticos.
✓
Handshake tiene timestamp El handshake hibrido mezcla X25519 y ML-KEM-768 para resistir ataques clasicos y cuanticos.
✓
Handshake sin PK devuelve error El handshake hibrido mezcla X25519 y ML-KEM-768 para resistir ataques clasicos y cuanticos.
DERIVACIÓN DE CLAVES DE SESIÓN 10/10 ▼
✓
derivar_claves() devuelve array El keypair hibrido X25519+ML-KEM-768 combina seguridad clasica y post-cuantica.
✓
Tiene clave_tx de 32 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene clave_rx de 32 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene clave_auth de 32 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene iv_base de 12 bytes Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Algoritmo es HKDF-SHA256 Verifica el correcto funcionamiento de esta operacion del sistema.
✓
HKDF determinista: misma clave_tx Verifica el correcto funcionamiento de esta operacion del sistema.
✓
HKDF determinista: misma clave_rx Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Secret diferente: clave_tx diferente Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Secret corto devuelve error Los errores deben comunicarse claramente para facilitar la correccion.
CIFRADO Y DESCIFRADO DE PAQUETES 17/17 ▼
✓
cifrar_paquete() devuelve array El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Paquete tiene versión El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Paquete tiene tipo 0x04 El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Paquete tiene contador El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Paquete tiene nonce de 12 bytes El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Paquete tiene ciphertext El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Ciphertext más largo que plaintext (tag) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Paquete tiene timestamp El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Contador incrementado en sesión Verifica el correcto funcionamiento de esta operacion del sistema.
✓
descifrar_paquete() recupera datos El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Datos descifrados = originales La integridad del roundtrip garantiza que no se pierden datos.
✓
Segundo paquete: contador = 1 El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Segundo paquete: roundtrip OK El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Nonces diferentes entre paquetes El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Roundtrip datos binarios (1KB) Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Cifrar datos vacíos devuelve error Los errores deben comunicarse claramente para facilitar la correccion.
✓
Descifrar paquete incompleto devuelve error El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
CONFIGURACIÓN WIREGUARD 12/12 ▼
✓
Config WG no vacía Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Config WG contiene [Interface] Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene [Peer] Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Config WG contiene PrivateKey Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene Address Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene DNS Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene ListenPort Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene MTU Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene PublicKey Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene PresharedKey Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene anotación PQC Los datos devueltos deben incluir todos los campos esperados.
✓
Config WG contiene PWR Malla Los datos devueltos deben incluir todos los campos esperados.
CONFIGURACIÓN IPSEC 9/9 ▼
✓
Config IPsec no vacía Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec tiene nombre conexión Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec contiene ikev2 Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec contiene chacha20poly1305 Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec contiene mlkem768 Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec contiene left/right Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec contiene subnets Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec formato swanctl Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
✓
Config IPsec tiene DPD Las configs IPsec con propuestas ML-KEM preparan la VPN para el futuro post-cuantico.
ESTADO DE SESIÓN 10/10 ▼
✓
estado() devuelve array El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
✓
Estado es establecido El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
✓
Sesión activa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene TTL positivo Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Tiene conteo paquetes El cifrado de paquetes ChaCha20-Poly1305 con nonce contador protege cada transmision.
✓
Algoritmo KEX correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Algoritmo ENC correcto Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión vacía: estado nuevo El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
✓
Sesión vacía: no activa Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Sesión null: devuelve estado El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
REKEYING 12/12 ▼
✓
rotar_claves() devuelve sesión El keypair hibrido X25519+ML-KEM-768 combina seguridad clasica y post-cuantica.
✓
Rekeying: clave_tx diferente El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: clave_rx diferente El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: iv_base diferente El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: shared_secret diferente El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: contador reseteado a 0 El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: estado establecido El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: rekeying_count = 1 El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying: tiene ultimo_rekeying El rekeying periodico limita el impacto de una clave comprometida.
✓
Roundtrip post-rekeying OK El rekeying periodico limita el impacto de una clave comprometida.
✓
Segundo rekeying: count = 2 El rekeying periodico limita el impacto de una clave comprometida.
✓
Rekeying sin secret devuelve error El rekeying periodico limita el impacto de una clave comprometida.
LISTADO DE PEERS 7/7 ▼
✓
peers() devuelve array Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
peers() cuenta correcta (3) Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Primer peer tiene nombre Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Segundo peer tiene endpoint Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
Tercer peer tiene ID Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
peers() config vacía devuelve [] Los peers son los nodos de la red VPN que se comunican de forma segura.
✓
peers() config inválida devuelve [] Los peers son los nodos de la red VPN que se comunican de forma segura.
SCORING DE SEGURIDAD 13/13 ▼
✓
Scoring mínimo devuelve array El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring mínimo tiene nota El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring mínimo tiene puntos El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring mínimo tiene detalles El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring mínimo puntos bajos El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring buena: puntos altos El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring buena: nota A o B El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring buena: tiene resumen El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring buena: max_puntos = 100 El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Scoring buena: porcentaje > 0 El scoring evalua la postura de seguridad de la configuracion VPN completa.
✓
Detalle tiene campo check Verifica el correcto funcionamiento de esta operacion del sistema.
✓
Detalle tiene campo estado El estado de sesion monitoriza el ciclo de vida de la conexion VPN.
✓
Detalle tiene campo puntos Verifica el correcto funcionamiento de esta operacion del sistema.
Resultados cacheados — verificados sobre PHP 8.1.13 / WINNT
Última ejecución:22/03/2026 23:51