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
Avis Hacker News
Analyse des paquets déchiffrés
Problème d’alimentation électrique
Tentative de rétro-ingénierie de lampes chiffrées
Avis sur les éclairages BLE
Tentative d’automatisation de guirlandes de Noël connectées en BLE
Questionnement sur le chiffrement des messages
Commentaire sur le chiffrement
Commentaire humoristique sur le piratage des lumières
Question de débutant sur la rétro-ingénierie des éclairages Govee