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

L'outil d'automatisation de flux de travail Symphony fonctionne avec Claude Code.
Tools

L'outil d'automatisation de flux de travail Symphony fonctionne avec Claude Code.

Un développeur a réussi à faire fonctionner la spécification Symphony avec Claude Code pour automatiser les flux de travail de tickets vers PR, utilisant initialement Node/TypeScript mais notant qu'Elixir pourrait être meilleur. L'outil nécessite une configuration séparée de clé API et une facturation au-delà des abonnements Claude.

OpenClawRadar
HN : WUPHF — Wiki LLM style Karpathy avec Markdown + Git comme source de vérité
Tools

HN : WUPHF — Wiki LLM style Karpathy avec Markdown + Git comme source de vérité

WUPHF fournit une couche wiki pour les agents IA utilisant Markdown + Git pour la persistance, bleve (BM25) + SQLite pour la recherche, avec des journaux de faits par entité, des wikiliens et un cron de lint quotidien. Fonctionne en local sans dépendance à une base vectorielle pour l'instant.

OpenClawRadar
Rudel : Analytique open-source pour les sessions Claude Code
Tools

Rudel : Analytique open-source pour les sessions Claude Code

Rudel est un outil d'analyse open-source qui examine les sessions Claude Code, fournissant des insights à partir de 1 573 sessions réelles avec plus de 15 millions de tokens et plus de 270 000 interactions. Il révèle des tendances comme une utilisation des compétences à 4 %, des taux d'abandon à 26 % et des modèles de cascade d'erreurs.

OpenClawRadar
Le Benchmark Montre que l'Outil CLI Réduit les Coûts de Tokens de Code de Claude de 32% Grâce à la Navigation Structurelle
Tools

Le Benchmark Montre que l'Outil CLI Réduit les Coûts de Tokens de Code de Claude de 32% Grâce à la Navigation Structurelle

Un développeur a créé un outil CLI en Rust qui donne aux agents Claude Code des commandes de navigation structurelle comme 'montre-moi un résumé de 180 tokens de cette classe de 6 000 tokens'. Le benchmarking sur Sonnet 4.6 sur 54 exécutions automatisées a montré une réduction de 32 % du coût par tâche et 67 % de modifications de code supplémentaires par session.

OpenClawRadar