Ingeniería inversa del protocolo inform de UniFi para el enrutamiento multiinquilino

Estructura del protocolo inform de UniFi
Cada dispositivo UniFi (puntos de acceso, switches, gateways) se comunica con su controlador mediante HTTP POST al puerto 8080 cada 10 segundos. Esto maneja estadísticas del dispositivo, sincronización de configuración, versiones de firmware y recuentos de clientes. Aunque la carga útil está cifrada con AES-128-CBC, la cabecera contiene identificación del dispositivo en texto plano.
Detalles de la cabecera del paquete
Los primeros 40 bytes de cada paquete inform están sin cifrar:
Desplazamiento Tamaño Campo ────── ───── ────────────────────────── 0 4B Magic: "TNBU" (0x544E4255) 4 4B Versión del paquete (actualmente 0) 8 6B Dirección MAC del dispositivo 14 2B Banderas (cifrado, comprimido, etc.) 16 2B Longitud del IV AES 18 16B IV AES 34 4B Versión de datos 38 4B Longitud de la carga útil 42+ var Carga útil cifrada (AES-128-CBC)
La dirección MAC en el desplazamiento de byte 8 está completamente sin cifrar. "TNBU" es "UBNT" al revés (símbolo bursátil de Ubiquiti y credenciales SSH por defecto).
Extracción de MAC y enrutamiento
Extraer la MAC requiere un código mínimo:
header := make([]byte, 40)
if _, err := io.ReadFull(conn, header); err != nil {
return err
}
if string(header[0:4]) != "TNBU" {
return fmt.Errorf("no es un paquete inform")
}
mac := fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
header[8], header[9], header[10],
header[11], header[12], header[13])Con la MAC en mano, el enrutamiento se vuelve simple: mantener una tabla que mapee direcciones MAC a inquilinos, luego reenviar todo el paquete (cabecera y carga útil cifrada sin modificar) al backend correcto. El proxy se puede implementar en unas 200 líneas de Go con una tabla de búsqueda MAC-a-inquilino en memoria.
Resumen de puertos del controlador
Otros puertos del controlador incluyen:
- 8443 TCP/HTTPS: Interfaz web y API
- 3478 UDP: STUN
- 6789 TCP: Prueba de velocidad (interno)
- 27117 TCP: MongoDB (interno)
- 10001 UDP: Descubrimiento L2 (solo local)
El enrutamiento basado en MAC sirve principalmente como respaldo para casos límite como dispositivos que aún no han sido reconfigurados o dispositivos restablecidos de fábrica que se readoptan. Una vez adoptados, los dispositivos pueden apuntarse a subdominios específicos del inquilino utilizando enrutamiento estándar de cabecera Host.
📖 Read the full source: HN AI Agents
👀 Ver también

Logira: Auditoría en Tiempo de Ejecución eBPF para Ejecuciones de Agentes de IA
Logira es una herramienta de línea de comandos (CLI) para Linux de solo observación que registra eventos de ejecución, archivos y red mediante eBPF durante la ejecución de agentes de IA, con almacenamiento local por ejecución en JSONL y SQLite y reglas de detección integradas para acceso a credenciales, cambios de persistencia y patrones sospechosos.

Diseño de Arnes Multiagente de Anthropic para Mejorar la Calidad del Código de Claude
La publicación del blog de Anthropic detalla un diseño de arnés que utiliza múltiples agentes para abordar la ansiedad de contexto y el sesgo de autoevaluación de Claude, con roles específicos de agentes y criterios de puntuación para el desarrollo frontend y full-stack.
TextGen (text-generation-webui) se convierte en aplicación de escritorio nativa con compilaciones portátiles
TextGen, la alternativa de código abierto a LM Studio, ha evolucionado de una interfaz web a una aplicación de escritorio sin instalación para Windows, Linux y macOS con versiones portátiles, privacidad total y soporte de cuantización avanzada.

AgentRoom: La aplicación de escritorio visualiza agentes de programación de IA como personajes de píxeles con búsqueda de sesiones.
AgentRoom es una aplicación de escritorio que convierte las sesiones de Claude Code, Codex y Gemini en personajes de píxeles animados en una oficina virtual, con búsqueda semántica de texto completo en todas las sesiones. El repositorio incluye una habilidad independiente de Claude Code para buscar sesiones anteriores desde cualquier conversación.