2 points par GN⁺ 2023-12-16 | 1 commentaires | Partager sur WhatsApp

Rétro-ingénierie d’un contrôleur d’éclairage LED Bluetooth LE, ou comment j’ai saboté mes illuminations de Noël

  • Un appareil qui communique en Bluetooth LE et dispose d’une application mérite d’être intégré à un système domotique.
  • Beaucoup de temps a été consacré à rétroconcevoir et automatiser des bandes lumineuses LED économiques.
  • Récemment, il a même réussi à connecter à Home Assistant en quelques heures la bande non adressable de 5 m contrôlée en Bluetooth LE la moins chère, à 2,38 £.

Étape 1. Des octets sur les fils

  • Pour contrôler l’appareil avec son propre logiciel, la première étape consiste à inspecter les octets Bluetooth envoyés par l’application vers l’appareil.
  • Android facilite ce processus. Il suffit d’activer le mode développeur, d’installer l’application des lumières, puis d’activer Bluetooth HCI snoop dans les paramètres développeur pour enregistrer les logs.
  • En ouvrant les logs dans Wireshark, on peut voir les octets exacts, repérer des motifs dans les valeurs et identifier les séries d’octets correspondant à chaque action.

Étape 2. Attaque par rejeu

  • Si l’objectif est simplement d’allumer et d’éteindre les lumières, les séries d’octets répétitives observées peuvent suffire pour le contrôle de l’alimentation.
  • Avec gatttool, il est possible de se connecter à l’appareil BLE et d’envoyer des octets pour faire des tests.

Étape 3. Décompiler l’application Android

  • Il télécharge l’APK de l’application et l’ouvre dans jadx pour découvrir ses secrets internes.
  • Dans le code source, il trouve des références à AES, ce qui suggère la possibilité d’un protocole chiffré.
  • Les données chiffrées ne changent pas à chaque fois, un déchiffrement rapide est nécessaire sur un MCU basse consommation, et il est probable qu’une clé fixe, non unique à chaque appareil, soit utilisée.

Étape 4. Toutes les fonctions

  • Il passe en revue chaque fonction de l’application en enregistrant les octets envoyés.
  • Cela aide à consigner chaque action, à répéter, à repérer des motifs et à corréler les octets capturés avec les notes prises.

Étape 5. Générateur automatisé de déchets électroniques

  • En explorant les changements de couleur, il observe que l’application n’envoie pas de valeur supérieure à 0x1F pour le rouge, le vert et le bleu.
  • Il essaie des valeurs sur 8 bits et découvre que des couleurs plus lumineuses fonctionnent très bien.
  • Se demandant s’il existe des effets supplémentaires, il fait des essais avec une boucle simple.
  • Jusqu’au 10e effet, tout fonctionne bien, mais au 11e il découvre un mode secret, et au 12e l’obscurité tombe.
  • Il tente de redémarrer, mais les lumières ne se rallument pas, et comme elles n’émettent plus de publicité Bluetooth, il n’est plus possible de s’y reconnecter.
  • Il suppose qu’un dépassement de tampon a corrompu le firmware.
  • Cependant, les LED elles-mêmes sont des LED adressables standard, il est donc possible de les réutiliser en les connectant à un autre microcontrôleur.

Comment puis-je casser mes lumières

  • Malgré le problème, il a documenté l’essentiel du protocole et créé un projet GitHub incluant un composant personnalisé Home Assistant.
  • Ça fonctionne, mais il faut avancer à ses risques et périls.

L’avis de GN⁺

  • Le point le plus important de cet article est l’esprit DIY et la passion pour la rétro-ingénierie d’une personne qui cherche à intégrer chez elle des éclairages intelligents à un système d’automatisation.
  • Le processus de rétro-ingénierie exige non seulement des connaissances techniques, mais aussi des capacités de résolution de problèmes et de la créativité, ce qui en fait un sujet très intéressant même pour un ingénieur logiciel débutant.
  • Partager une expérience d’échec aide les autres à ne pas répéter la même erreur, et ce partage public des connaissances fait partie des valeurs fondamentales de la communauté open source.

1 commentaires

 
GN⁺ 2023-12-16
Avis Hacker News
  • Analyse des paquets déchiffrés

    • Après avoir tenté de déchiffrer les paquets, il a été constaté qu’ils contenaient un en-tête fixe, et que le 5e octet basculait entre 1 et 0 pour indiquer l’allumage et l’extinction, tandis que le reste était rempli de 0. Cela semble représenter la longueur de la commande, la commande ("TURN"), et l’argument (0 ou 1), avec un remplissage jusqu’à 16 octets.
  • Problème d’alimentation électrique

    • Les bandes LED WS281x brillent très fortement et consomment beaucoup de courant. Une alimentation 12V, 3A est à peine suffisante pour faire fonctionner les 100 bandes à luminosité maximale. Le fait que le firmware semble n’utiliser que 31 sur une luminosité maximale de 255 laisse penser qu’un fusible a pu sauter.
  • Tentative de rétro-ingénierie de lampes chiffrées

    • Quelqu’un a essayé de rétroconcevoir les lampes LED sur batterie Amaran 60d et SmallRig RM75, avant de découvrir qu’elles étaient chiffrées. Les deux lampes utilisent le même processus de négociation, mais avec des bibliothèques différentes. Il a essayé d’imiter l’échange de clés Diffie-Hellman, mais a abandonné en ne parvenant pas à comprendre l’utilité de nombres apparemment aléatoires dans une étape supplémentaire (une autre clé ?). La lecture de ce billet lui a donné envie d’essayer une clé codée en dur.
  • Avis sur les éclairages BLE

    • Quelqu’un dit avoir déjà suffisamment lu de choses sur les ensembles d’éclairage utilisant le BLE et remercie l’auteur de l’avoir mentionné. Cela lui a rappelé une vidéo d’Analog Technology Connections.
  • Tentative d’automatisation de guirlandes de Noël connectées en BLE

    • Quelqu’un a essayé d’automatiser des guirlandes de Noël connectées en BLE, mais n’a réussi qu’à produire des déchets électroniques. Maintenant, vous aussi, vous pouvez en faire autant.
  • Questionnement sur le chiffrement des messages

    • Des doutes sont exprimés sur la raison pour laquelle les messages sont chiffrés, et sur le fait de savoir si c’est une pratique standard.
  • Commentaire sur le chiffrement

    • « On ne peut pas envoyer du texte en clair dans les airs, ce n’est pas sûr », suivi de « T’inquiète, j’ai ajouté du chiffrement AES ».
  • Commentaire humoristique sur le piratage des lumières

    • À la remarque « Dis-moi comment pirater mes lumières », la réponse est : « Haha ! J’adore. »
  • Question de débutant sur la rétro-ingénierie des éclairages Govee

    • Un débutant demande pourquoi il serait impossible de rétroconcevoir des éclairages WiFi comme ceux de Govee, et si une attaque MITM (homme du milieu) y est plus difficile.