Rétro-ingénierie du protocole inform UniFi pour le routage multi-locataire

✍️ OpenClawRadar📅 Publié: March 9, 2026🔗 Source
Rétro-ingénierie du protocole inform UniFi pour le routage multi-locataire
Ad

Structure du protocole UniFi inform

Chaque appareil UniFi (points d'accès, commutateurs, passerelles) contacte son contrôleur via HTTP POST sur le port 8080 toutes les 10 secondes. Cela gère les statistiques des appareils, la synchronisation des configurations, les versions du micrologiciel et le nombre de clients. Bien que la charge utile soit chiffrée en AES-128-CBC, l'en-tête contient l'identification de l'appareil en texte clair.

Détails de l'en-tête des paquets

Les 40 premiers octets de chaque paquet inform sont non chiffrés :

Décalage Taille Champ
────── ───── ──────────────────────────
0      4B    Magique : "TNBU" (0x544E4255)
4      4B    Version du paquet (actuellement 0)
8      6B    Adresse MAC de l'appareil
14     2B    Drapeaux (chiffré, compressé, etc.)
16     2B    Longueur du vecteur d'initialisation AES
18     16B   Vecteur d'initialisation AES
34     4B    Version des données
38     4B    Longueur de la charge utile
42+    var   Charge utile chiffrée (AES-128-CBC)

L'adresse MAC au décalage d'octet 8 est complètement non chiffrée. "TNBU" est "UBNT" à l'envers (symbole boursier d'Ubiquiti et identifiants SSH par défaut).

Ad

Extraction de l'adresse MAC et routage

L'extraction de l'adresse MAC nécessite un code minimal :

header := make([]byte, 40)
if _, err := io.ReadFull(conn, header); err != nil {
    return err
}
if string(header[0:4]) != "TNBU" {
    return fmt.Errorf("pas un paquet inform")
}
mac := fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", 
    header[8], header[9], header[10], 
    header[11], header[12], header[13])

Avec l'adresse MAC en main, le routage devient simple : maintenez une table faisant correspondre les adresses MAC aux locataires, puis transférez l'intégralité du paquet (en-tête et charge utile chiffrée inchangés) vers le backend correct. Le proxy peut être implémenté en environ 200 lignes de Go avec une table de recherche MAC-vers-locataire en mémoire.

Aperçu des ports du contrôleur

Les autres ports du contrôleur incluent :

  • 8443 TCP/HTTPS : Interface web et API
  • 3478 UDP : STUN
  • 6789 TCP : Test de vitesse (interne)
  • 27117 TCP : MongoDB (interne)
  • 10001 UDP : Découverte L2 (local uniquement)

Le routage basé sur l'adresse MAC sert principalement de solution de secours pour des cas particuliers, comme les appareils qui n'ont pas encore été reconfigurés ou les appareils réinitialisés d'usine en cours de réadoption. Une fois adoptés, les appareils peuvent être dirigés vers des sous-domaines spécifiques aux locataires en utilisant le routage standard de l'en-tête Host.

📖 Lire la source complète : HN AI Agents

Ad

👀 See Also

iai-mcp : Un démon local offre à Claude une mémoire persistante entre sessions avec 99% de rappel
Tools

iai-mcp : Un démon local offre à Claude une mémoire persistante entre sessions avec 99% de rappel

iai-mcp est un démon local open-source qui capture chaque conversation Claude, l'organise en trois niveaux de mémoire et réinjecte le contexte dans les nouvelles sessions. Il atteint un rappel textuel de >99 %, une récupération en moins de 100 ms et un coût de démarrage de session inférieur à 3 000 tokens.

OpenClawRadar
Construction d'un agent de codage pour un contexte de 8k : répartition planificateur/exécuteur, budgétisation des jetons et exécution parallèle
Tools

Construction d'un agent de codage pour un contexte de 8k : répartition planificateur/exécuteur, budgétisation des jetons et exécution parallèle

Un aperçu détaillé de la construction d'un agent de codage CLI conçu pour des limites de 8 000 tokens, utilisant une architecture planificateur/exécuteur, un budget strict de tokens et une exécution parallèle des tâches.

OpenClawRadar
Serveur MCP memv : Mémoire structurée persistante pour agents IA
Tools

Serveur MCP memv : Mémoire structurée persistante pour agents IA

memv, une couche mémoire open-source en Python pour agents, est désormais livrée avec un serveur MCP. Elle propose cinq outils pour une mémoire persistante et structurée avec isolation par utilisateur et extraction optionnelle sans LLM.

OpenClawRadar
Codebase Memory MCP : Exploration de code basée sur des graphes pour Claude Code
Tools

Codebase Memory MCP : Exploration de code basée sur des graphes pour Claude Code

Un développeur a créé un serveur MCP qui indexe des bases de code dans un graphe de connaissances persistant en utilisant Tree-sitter et SQLite, réduisant l'utilisation de tokens par 20x en moyenne pour les requêtes structurelles comme le traçage d'appels et la détection de code mort.

OpenClawRadar