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

rawq : Outil CLI Local pour la Recherche Sémantique de Code par Agent IA
Tools

rawq : Outil CLI Local pour la Recherche Sémantique de Code par Agent IA

rawq est un outil CLI open-source qui aide les agents d'IA à trouver du code pertinent en utilisant la recherche sémantique avec un modèle local de 33MB via ONNX runtime et la recherche lexicale BM25 via tantivy. Lors des tests, les agents d'IA utilisant rawq ont consommé 4 fois moins de tokens et ont terminé les tâches 2 fois plus vite comparé aux outils de lecture/recherche aveugles.

OpenClawRadar
gui.new : Outil permettant à Claude de générer des sorties visuelles sous forme de liens partageables
Tools

gui.new : Outil permettant à Claude de générer des sorties visuelles sous forme de liens partageables

gui.new est un outil qui permet à Claude de générer des sorties visuelles sous forme de liens partageables en direct au lieu de renvoyer des blocs de code. Il est construit avec Claude, utilise Next.js sur Vercel avec Supabase, et ne nécessite aucune inscription.

OpenClawRadar
Eqho : Application locale de reconnaissance vocale pour les sessions de code Claude
Tools

Eqho : Application locale de reconnaissance vocale pour les sessions de code Claude

Eqho est une application gratuite et open-source de reconnaissance vocale qui utilise localement le modèle Whisper d'OpenAI pour saisir la parole dans n'importe quelle application active. Actuellement réservée à Windows, elle nécessite une configuration en ligne de commande.

OpenClawRadar
Claude-Code v2.1.63 ajoute des crochets HTTP, des commandes slash et corrige les fuites de mémoire.
Tools

Claude-Code v2.1.63 ajoute des crochets HTTP, des commandes slash et corrige les fuites de mémoire.

Claude-Code v2.1.63 introduit des hooks HTTP pour des appels externes basés sur JSON, ajoute les commandes slash /simplify et /batch, et corrige plusieurs fuites de mémoire dans les sessions de longue durée. Cette version améliore également la gestion des serveurs MCP et l'intégration avec VSCode.

OpenClawRadar