PWR Antena

Herramienta de gestion PQC (Post-Quantum Cryptography) para routers WiFi y puntos de acceso. Audita configuraciones existentes, genera configs seguras WPA3-SAE para hostapd, OpenWrt y MikroTik, evalua passwords y verifica compatibilidad post-cuantica.

Instalacion

Antena es un unico archivo PHP sin dependencias externas.

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

Requisitos minimos

  • PHP 7.4 o superior
  • Sin extensiones adicionales necesarias
  • Sin Composer, sin dependencias externas
  • Un unico archivo PHP de ~400 lineas

Uso rapido

Auditoria completa de un router WiFi en pocas lineas.

PHP
require_once 'core/antena.php';

// Configuracion del router a auditar
$config = [
    'wpa_version'  => 'wpa3',
    'cifrado'      => 'gcmp-256',
    'key_exchange' => 'sae',
    'password'     => 'Mi-P@ssword-Seguro!',
    'ssid'         => 'MiRedWiFi',
    'pmf'          => 'required',
    'wps_activo'   => false,
];

// Auditar
$resultado = pwr_antena_auditar($config);
$scoring = pwr_antena_scoring($resultado);
echo "Nota: {$scoring['nota']} ({$scoring['puntos']}/100)";

Auditar router

La funcion pwr_antena_auditar() recibe un array con la configuracion del router y devuelve un informe completo con hallazgos, puntuacion y detalles por categoria.

Parametros de configuracion

ParametroTipoDescripcion
wpa_versionstringopen, wep, wpa, wpa2, wpa2/wpa3, wpa3
cifradostringnone, wep, tkip, ccmp, gcmp-256, sae
key_exchangestringpsk, sae, eap, owe, sae-ext
passwordstringPassword de la red WiFi
ssidstringNombre de la red
managementarray['https' => bool, 'puerto' => int, 'password_admin' => string]
puertos_abiertosarrayLista de puertos abiertos (ej: [80, 443, 23])
wps_activoboolSi WPS esta activo
pmfstringdisabled, optional, required

Categorias de auditoria

La auditoria evalua 9 categorias:

  1. WPA version — Protocolo de seguridad wireless (25 puntos)
  2. Cifrado — Algoritmo de cifrado (20 puntos)
  3. Intercambio de claves — Metodo de autenticacion (15 puntos)
  4. Password WiFi — Fortaleza del password (15 puntos)
  5. SSID — Exposicion de informacion (5 puntos)
  6. Interfaz de gestion — Seguridad de la administracion (10 puntos)
  7. Puertos abiertos — Puertos de riesgo (5 puntos)
  8. WPS — Estado de Wi-Fi Protected Setup (5 puntos)
  9. PMF — Protected Management Frames / 802.11w (5 puntos)

Generar configuraciones

Antena genera configuraciones WPA3-SAE optimizadas para tres plataformas: hostapd, OpenWrt y MikroTik. Todas las configuraciones incluyen PMF obligatorio, GCMP-256 y protecciones adicionales.

hostapd

PHP
$hostapd = pwr_antena_generar_hostapd([
    'ssid'     => 'MiRedSegura',
    'password' => 'P@ssw0rd-Fuert3!',
    'interfaz' => 'wlan0',
    'canal'    => 36,
    'country'  => 'ES',
    'banda'    => '5ghz',
]);
file_put_contents('/etc/hostapd/hostapd.conf', $hostapd['config']);

OpenWrt

PHP
$openwrt = pwr_antena_generar_openwrt([
    'ssid'        => 'MiRedSegura',
    'password'    => 'P@ssw0rd-Fuert3!',
    'dispositivo' => 'radio0',
    'banda'       => '5ghz',
    'canal'       => 36,
]);
// Aplicar: uci commit wireless && wifi reload

MikroTik

PHP
$mikrotik = pwr_antena_generar_mikrotik([
    'ssid'      => 'MiRedSegura',
    'password'  => 'P@ssw0rd-Fuert3!',
    'interfaz'  => 'wlan1',
    'banda'     => '5ghz',
    'canal'     => 48,
    'country'   => 'spain',
]);
// Pegar en terminal de RouterOS
Nota: Todas las configuraciones generadas usan WPA3-SAE puro con PMF obligatorio. Los clientes WiFi deben soportar WPA3 (Wi-Fi 6 o superior recomendado).

Password evaluation

pwr_antena_evaluar_password() analiza la fortaleza de un password WiFi evaluando longitud, complejidad, entropia, patrones y diccionario de passwords comunes.

PHP
$eval = pwr_antena_evaluar_password('Mi-P@ssw0rd-2026!');
// $eval['puntuacion'] = 80 (0-100)
// $eval['entropia']   = 95.2 (bits)
// $eval['nivel']      = 'Excelente'
// $eval['problemas']  = [] (vacio = sin problemas)

Criterios de evaluacion

CriterioPuntosDescripcion
Longitud >= 20 caracteres30Password largo recomendado
Longitud >= 12 caracteres20Longitud minima aceptable
4 tipos de caracteres25Mayusculas + minusculas + numeros + simbolos
Entropia >= 80 bits25Resistencia maxima a fuerza bruta
Sin patrones repetitivos-10Penalizacion por caracteres repetidos
Sin secuencias (abc, 123)-5Penalizacion por secuencias predecibles
No en diccionariomax 5Si esta en diccionario, puntuacion limitada a 5

PQC Readiness

pwr_antena_pqc_compatible() verifica si una configuracion WiFi esta preparada para la era post-cuantica. Evalua 5 requisitos clave para resistencia PQC.

PHP
$pqc = pwr_antena_pqc_compatible($config);
// $pqc['compatible']  = true/false
// $pqc['nivel']       = 'PQC Ready' | 'PQC Parcial' | 'Preparacion necesaria' | 'No compatible'
// $pqc['puntuacion']  = 0-100
// $pqc['detalles']    = array de checks individuales

Requisitos PQC

  1. WPA3 (30 puntos) — Base necesaria para PQC
  2. SAE / SAE extendido (25 puntos) — Intercambio de claves seguro
  3. Cifrado 256 bits (20 puntos) — GCMP-256 para resistencia PQC
  4. PMF obligatorio (15 puntos) — Proteccion de tramas de gestion
  5. Password fuerte (10 puntos) — Entropia suficiente
Importante: Actualmente no existe un estandar WiFi plenamente PQC. La evaluacion mide la preparacion maxima posible con la tecnologia actual (WPA3-SAE + GCMP-256 + PMF). Futuras revisiones de 802.11 incorporaran intercambio de claves post-cuantico.

Scoring

El scoring traduce la puntuacion numerica (0-100) a una nota letra A-F.

NotaPuntosSignificado
A90-100Excelente — Configuracion segura WPA3
B80-89Buena — Seguridad solida con mejoras menores
C65-79Aceptable — Mejoras necesarias
D50-64Deficiente — Problemas serios
E30-49Malo — Multiples vulnerabilidades
F0-29Critico — Configuracion insegura

Recomendaciones

pwr_antena_recomendaciones() genera una lista priorizada de acciones a partir del resultado de la auditoria. Las recomendaciones se ordenan por criticidad.

PHP
$resultado = pwr_antena_auditar($config);
$recs = pwr_antena_recomendaciones($resultado);

foreach ($recs as $r) {
    echo "[P{$r['prioridad']}] {$r['titulo']}\n";
    echo "  Accion: {$r['accion']}\n";
}

Cada recomendacion incluye:

  • prioridad — 1 (critico) o 2 (aviso)
  • categoria — Categoria del hallazgo
  • titulo — Titulo del problema
  • descripcion — Descripcion del hallazgo
  • accion — Accion correctiva recomendada

Plataformas soportadas

hostapd (Linux)

Genera un archivo hostapd.conf completo con WPA3-SAE, GCMP-256, PMF obligatorio, 802.11ax, aislamiento de clientes y logging. Compatible con cualquier distribucion Linux que soporte hostapd 2.10+.

OpenWrt (UCI)

Genera configuracion UCI para /etc/config/wireless. Incluye wifi-device y wifi-iface con encryption sae, ieee80211w=2 y sae_pwe=2. Compatible con OpenWrt 22.03+ y posteriores.

MikroTik RouterOS

Genera script RSC para RouterOS 7.x. Crea un perfil de seguridad WPA3 con management-protection=required, disable-pmkid=yes y wps-mode=disabled. Pegar directamente en la terminal de RouterOS.

API de funciones

pwr_antena_info()

Devuelve informacion del modulo: version, nombre y capacidades.

Firma
pwr_antena_info(): array

pwr_antena_auditar()

Audita una configuracion de router/AP y devuelve hallazgos con puntuacion.

Firma
pwr_antena_auditar(array $config): array

pwr_antena_evaluar_password()

Evalua la fortaleza de un password WiFi.

Firma
pwr_antena_evaluar_password(string $password): array

pwr_antena_pqc_compatible()

Verifica si una configuracion es PQC-compatible.

Firma
pwr_antena_pqc_compatible(array $config): array

pwr_antena_generar_hostapd()

Genera configuracion hostapd.conf WPA3-SAE.

Firma
pwr_antena_generar_hostapd(array $params): array

pwr_antena_generar_openwrt()

Genera configuracion UCI para OpenWrt.

Firma
pwr_antena_generar_openwrt(array $params): array

pwr_antena_generar_mikrotik()

Genera configuracion MikroTik RouterOS.

Firma
pwr_antena_generar_mikrotik(array $params): array

pwr_antena_recomendaciones()

Genera recomendaciones priorizadas a partir de una auditoria.

Firma
pwr_antena_recomendaciones(array $resultado_auditoria): array

pwr_antena_scoring()

Devuelve la nota A-F de una auditoria.

Firma
pwr_antena_scoring(array $resultado): array

pwr_antena_informe()

Genera informe completo en formato array, JSON o texto.

Firma
pwr_antena_informe(array $resultado, string $formato = 'array'): mixed
ParametroTipoDescripcion
$resultadoarrayResultado de pwr_antena_auditar()
$formatostring'array', 'json' o 'texto'