Engenharia reversa do protocolo inform da UniFi para roteamento multi-inquilino

Estrutura do protocolo inform UniFi
Cada dispositivo UniFi (pontos de acesso, switches, gateways) se comunica com seu controlador via HTTP POST na porta 8080 a cada 10 segundos. Isso lida com estatísticas do dispositivo, sincronização de configuração, versões de firmware e contagens de clientes. Embora a carga útil seja criptografada com AES-128-CBC, o cabeçalho contém a identificação do dispositivo em texto simples.
Detalhes do cabeçalho do pacote
Os primeiros 40 bytes de cada pacote inform não são criptografados:
Deslocamento Tamanho Campo ────── ───── ────────────────────────── 0 4B Mágico: "TNBU" (0x544E4255) 4 4B Versão do pacote (atualmente 0) 8 6B Endereço MAC do dispositivo 14 2B Flags (criptografado, compactado, etc.) 16 2B Comprimento do IV AES 18 16B IV AES 34 4B Versão dos dados 38 4B Comprimento da carga útil 42+ var Carga útil criptografada (AES-128-CBC)
O endereço MAC no deslocamento de byte 8 está completamente não criptografado. "TNBU" é "UBNT" ao contrário (símbolo de ticker da Ubiquiti e credenciais SSH padrão).
Extração de MAC e roteamento
A extração do MAC requer 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("não é um pacote inform")
}
mac := fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
header[8], header[9], header[10],
header[11], header[12], header[13])Com o MAC em mãos, o roteamento se torna simples: mantenha uma tabela mapeando endereços MAC para inquilinos e, em seguida, encaminhe todo o pacote (cabeçalho e carga útil criptografada inalterados) para o backend correto. O proxy pode ser implementado em cerca de 200 linhas de Go com uma tabela de pesquisa MAC-para-inquilino na memória.
Visão geral das portas do controlador
Outras portas do controlador incluem:
- 8443 TCP/HTTPS: Interface web e API
- 3478 UDP: STUN
- 6789 TCP: Teste de velocidade (interno)
- 27117 TCP: MongoDB (interno)
- 10001 UDP: Descoberta L2 (apenas local)
O roteamento baseado em MAC serve principalmente como um fallback para casos extremos, como dispositivos que ainda não foram reconfigurados ou dispositivos com reset de fábrica sendo readotados. Uma vez adotados, os dispositivos podem ser direcionados para subdomínios específicos do inquilino usando roteamento de cabeçalho Host padrão.
📖 Leia a fonte completa: HN AI Agents
👀 See Also

Arnês Móvel: Levando Habilidades de Uso de Navegador para Aplicativos Móveis para Agentes Claude
Mobile Harness dá ao Claude/agentes habilidades reutilizáveis para apps móveis (Reddit, Instagram, TikTok) usando MobAI como camada de execução. Funciona com dispositivos reais, emuladores, simuladores, cota diária gratuita.

Kit de Ferramentas de Viagem Hacking: Habilidades em IA e Servidores MCP para Busca de Pontos e Milhas
Um repositório do GitHub fornece 7 habilidades em markdown e 6 servidores MCP que ensinam o Claude Code e o OpenCode a pesquisar voos com milhas em mais de 25 programas de fidelidade, comparar preços em dinheiro, consultar saldos de programas de fidelidade e encontrar hotéis e balsas. A configuração requer clonar o repositório e executar o setup.sh.

Ferramenta de código aberto para feeds do Reddit curados por IA usando Cloudflare, Supabase e Vercel
Um desenvolvedor disponibilizou como código aberto uma ferramenta auto-hospedada que filtra o Reddit em busca de postagens de qualidade sobre desenvolvimento assistido por IA, usando Cloudflare Workers para tarefas agendadas e proxies, Supabase para armazenamento e Vercel para o frontend. A ferramenta inclui pontuação de engajamento, resumos opcionais de LLM e custa US$ 1-2/mês para processamento de IA.

Sonicker: Aplicativo Web de Clonagem de Voz Criado com Claude Code em 4 Dias
Sonicker é um aplicativo web de clonagem de voz que requer apenas 3 segundos de entrada de áudio e suporta 10 idiomas. O desenvolvedor o construiu sozinho em 4 dias usando Claude Code para todo o frontend, integração de API e implantação.