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