Alors au départ, je voulais faire un article de tests sur les nouveaux produits Lidl dans la gamme domotique. Cependant, il en existe tellement et n’ayant pas la réactivité nécessaire, j’ai changé mon fusil d’épaule.
D’autant plus que tous les produits Lidl smart home silvercrest sont compatibles ZiGate ou avec les autres passerelles universelles.
Du coup, je suis plutôt parti sur un détournement de la passerelle.
Transformer la passerelle Lidl en ZiGate Ethernet !
L’objectif est bien entendu de faire POC (Proof Of Concept), de s’amuser mais en même temps de répondre à un besoin personnel.
Démontage et analyse
La première chose, quand on veut faire un détournement d’un objet, c’est de faire une analyse (ou reverse engineering) et pour cela, pas le choix, il faut démonter l’appareil pour observer ce qu’il contient.
Donc la première étape c’est de démonter la passerelle.
Le démontage n’est pas aisé, pas de vis mais des clips. Il faut alors « déclipper » le boitier mais très compliqué sans abimer (il y a un peu de colle je pense). Les non soigneux, s’abstenir 😉
Une fois le capot enlevé, on va pouvoir analyser rapidement ce qu’il y a.
Commençons par la partie face :
En bleu : C’est le module Zigbee de chez tuya. le TYZS4 à base de Cortex-M4 EFR32MG1B232. Il permet de communiquer avec les objets en Zigbee.
En rouge : C’est le cerveau de la passerelle. Le Realtek RTL8196E. C’est lui qui va piloter le module Zigbee (par des commandes sur l’UART) et permettre la gestion complète de la passerelle.
En rose : C’est la mémoire RAM utilisée par le CPU. 32Mo de SDRAM. EM6AA160
En orange : C’est la mémoire flash utilisé par le CPU. 16Mo. GD25Q127
En bleu clair : C’est l’interface permettant de gérer l’Ethernet. H16107DF
En vert : C’est le connecteur permettant d’accéder à la console de la passerelle et de mettre à jour le module ZigBee.
Pour l’autre côté de la carte, c’est beaucoup moins intéressant… quoi que les inscriptions sont d’une aide précieuse :
En rouge : Ce sont les LEDs permettant d’avoir le statut de l’Ethernet et du ZigBee. A gauche le statut de l’Ethernet et à droite le statut du Zigbee.
On peut aussi observer sur cette partie, qu’il existe des inscriptions et on pourra remarquer les RX TX 3V3 et GND qui sont les points importants pour débuter le détournement.
Bon, du coup, en observant ce qui compose cette passerelle, on peut rapidement comprendre que nous avons à faire à un système embarqué probablement sous linux qui pilote un « modem » ZigBee.
Afin de prendre la main sur cette passerelle, il convient donc de trouver une porte d’entrée. Bien entendu, vous l’aurez compris, la console caractérisée par le RX/TX sera ce point d’entrée.
Avant de sortir l’artillerie lourde, il faut avoir le reflexe de chercher s’il n’existe pas déjà quelqu’un qui a fait le travail. Du coup, je me suis mis à chercher les travaux déjà existant sur la passerelle et je suis tombé sur l’article permettant de prendre la main sur cette passerelle.
Root de la passerelle
Un gros merci pour « PaulBanks » qui m’a fait économiser énormément de temps. En suivant scrupuleusement ces travaux, il a été très facile de prendre le contrôle de ma passerelle Lidl.
Du coup, je vous laisse aller lire l’ensemble de son œuvre et je vais résumer ce que j’ai fait afin de me permettre de casser le mot de passe root.
Tout d’abord, il faut s’occuper du connecteur pour aller chercher la console avec un convertisseur USB-TTL.
Orange = RX
Rouge = TX
Marron = GND
De l’autre côté un convertisseur USB-TTL. (n’oubliez pas de croiser RX / TX)
Ensuite, une fois connecté, il suffit d’ouvrir un hyperterminal (dans mon cas putty) sur le bon port (38400baud 8N1) et de démarrer la carte.
Pour pouvoir « rooter », il faut rentrer sur la busy-box (le bootloader) et pour cela il faut rapidement appuyer sur la touche « echap ». Donc on met hors tension puis sous tension et « echap ».
La prochaine étape consiste à lire des emplacements mémoires pour récupérer le mot de passe et la clef de chiffrement correspondante.
Vous aurez plus d’informations en suivant ce tutoriel.
Voici les premières commandes
FLR 80000000 401802 16 DW 80000000 4
Vous devriez récupérer les informations suivantes :
Clé de chiffrement (bien entendu avec des blocs différents):
80000000: XXXXXXXX YYYYYYYY ZZZZZZZZ AAAAAAAA
Puis :
FLR 80000000 402002 32 DW 80000000 8
Le mot de passe (sur 2 lignes)
80000000: BBBBBBBB CCCCCCCC DDDDDDDD EEEEEEEE
80000010: FFFFFFFF GGGGGGGG HHHHHHHH LLLLLLLL
Sauvegardez les 3 lignes puis récupérer le script python et suivez les instructions.
Vous devriez récupérer le mot de passe root en clair : Root password: b’XXXXXXXX‘
Une fois le mot de passe root décoder, vous avez accès à l’ensemble de la passerelle sur laquelle vous pourrez faire à peu près tout ce que vous voulez.
Une ZiGate Lidl ?
Bon, c’est une bonne chose de faite, nous pouvons désormais utiliser la passerelle Lidl.
La prochaine étape consiste à analyser et repérer comment fonctionne le module Tuya ZigBee pour le remplacer par une ZiGate
Analyse du module Tuya TYZS4
L’objectif ici est de repérer à quoi correspondent les différents PINs mais surtout l’interface UART. (En effet, pour piloter une ZiGate, on utilise une interface UART)
Pour cela, je suis allé sur le site Tuya pour récupérer la datasheet du module.
Une fois repéré, il faut maintenant dessouder le module.
2 solutions s’offrent à nous. En effet, ce module à deux lignes de PINs de part et d’autres donc c’est assez simple :
- soit on utilise un pistolet à air chaud.
- soit on charge en étain une ligne en faisant légèrement levier et ensuite on charge la 2ème ligne et le module se décolle.
Personnellement, j’ai pris la deuxième méthode mais elle est plus risquée pour les non avertis.
Ensuite on nettoie tout avec une tresse et un peu de flux et on obtient cela :
Premiers tests avec un module ZiGate
Une fois l’analyse faite, il suffit de brancher une ZiGate sur les bons PINs et de procéder à quelques tests pour s’assurer que tout fonctionne comme il le faut.
Avant de faire l’installation finale, il convient de souder quelques straps :
Ensuite on se connecte sur 2 consoles de la passerelle (à l’aide de SSH).
Sur l’une on tape les commandes suivantes (réception de port série) :
$stty -F /dev/ttyS1 speed 115200 cs8 $ cat /dev/ttyS1
Sur l’autre console :
$ echo -ne '\x01\x02\x10\x10\x02\x10\x02\x10\x10\x03' > /dev/ttyS1
Une fois la commande lancée, vous devriez avoir sur la première console une réponse. Alors malheureusement, vous verrez des caractères spéciaux car c’est de l’hexadécimal et qu’il n’y a pas d’outil du type hexdump sur la passerelle.
Mais ça suffit pour valider que cela communique bien.
La passerelle Ethernet / Série
Pour que la passerelle Lidl se transforme en passerelle ZiGate, il faut procéder de la même façon que la ZiGate-WiFi. En effet, il faut que les requêtes TCP/IP soit transmises au port série et inversément. Pour cela, il faut utiliser les outils Ser2Net ou Socat mais dans notre cas, il faut développer soi-même le programme.
En soi, ce n’est pas très complexe et en plus, ça a déjà été développé.
Grâce a paulbanks et Ordspilleren, tout a déjà été fait, il n’y a plus qu’à suivre le tutoriel suivant et télécharger les sources.
Contrairement au tutoriel, j’ai utilisé la fonction tftp pour transférer le fichier serialgateway.
On choisit, le répertoire où se trouve le fichier à transférer puis on sélectionne la bonne interface réseau.
Enfin sur la console de la passerelle on tape la commande suivante :
$ cd /tuya $ tftp -gr serialgateway <ip de votre machine> $ chmod +x serialgateway
Ensuite, il suffit de reprendre le tutoriel pour changer les scripts de démarrage pour l’adapter à la nouvelle passerelle. Attention, dans notre cas et pour coller à la ZiGate-WiFi, il faut changer le port par défaut : 9999
if [ ! -f /tuya/tuya_start.original.sh ]; then cp /tuya/tuya_start.sh /tuya/tuya_start.original.sh; fi cat >/tuya/tuya_start.sh <<EOF #!/bin/sh /tuya/serialgateway -d/dev/ttyS1 -p9999 -f & echo 1 > /proc/led1 EOF chmod 755 /tuya/serialgateway
if [ ! -f /tuya/ssh_monitor.original.sh ]; then cp /tuya/ssh_monitor.sh /tuya/ssh_monitor.original.sh; fi echo "#!/bin/sh" >/tuya/ssh_monitor.sh
Une fois effectué, vous pouvez redémarrer la passerelle et faire le même test que le tutoriel pour la ZiGate-WiFi …sauf qu’il faudra mettre la bonne adresse IP (celle de la passerelle Lidl)
Modification hardware
Pour que le hack soit complet, j’avais dans l’idée de rajouter une antenne externe pour augmenter les performances et de brancher la LED de statut ZigBee à la ZiGate.
Concernant l’antenne externe, pas de problème, il suffit de prendre une module ZiGate avec connecteur uFL.
Pour la LED de statut, j’ai un peu triché, j’ai dessoudé la résistance de pull-up de la LED de statut et j’ai connecté le GPIO17 de la ZiGate sur cette dernière. J’ai du rajouter dans le script de démarrage la ligne :
echo 1 > /proc/led1
Repérage des LEDs statut Zigbee
Montage de la ZiGate sur la passerelle Lidl
Ajout de l’antenne externe et fermeture du boitier
Mise sous tension et réseau de la nouvelle ZiGate Ethernet
Une fois démarré, il suffit de paramétrer votre box domotique compatible comme une ZiGate-WiFi. il faut rentrer l’adresse IP et le port 9999.
Vous avez désormais une ZiGate Ethernet compatible Jeedom / Domoticz ou Home-assistant.
\o/
Conclusion
La catégorie détournement et hack font partis de mes articles préférés et je prend beaucoup de plaisir à vous partager mes découvertes.
Cependant, ce détournement me permet aussi d’utiliser une ZiGate sur Ethernet. (utile pour mes plateformes de tests)
Alors, je vous avez déjà proposé un tutoriel pour construire la même chose avec un RaspberryPi, mais dans ce cas précis, on a une passerelle plus aboutie et qui ne risque pas de planter à cause d’une carte SD. C’est du solide !
Enfin l’objectif de cet article n’est pas de reproduire en série mais bien de s’amuser « utile » et d’apprendre comment fonctionne ce genre de matériel.
J’espère que ces travaux vous auront plu et que vous avez avez pu apprendre 2-3 trucs.
A bientôt !
Un petit commentaire pour saluer la beauté du hack 😉
Merci pour le soutien !
Salut super Tuto, comme d’hab 😉
pour les Windowsien(ne)s, il faut installer le module pycryptodome, et renommer le répertoire crypto en Crypto dans \Lib\site-packages\ pour jouer le script de décryptage du mdp 😉
Merci pour le retour d’expérience 😉
Pourriez-vous me détailler les manipulation pour utiliser le script Python sous Windows ?
Pourrais-tu, STP, donner quelques détails.
J’ai la Gateway et le TTL mais je ne sais pas quoi faire…
Joli hack. Bravo l’artiste.
Au delà de la beauté du détournement, un montage à base de zigate + WT32-ETH01 serait-il plus efficient ?
Merci.
En effet, Si j’ai le temps j’essaierai vraiment de faire une ZiGate-Ethernet bien packagé dans les règles de l’art.
Bravo, c’est canon !
Dommage que ce soit si compliqué pour un non-initié ^^,
J’allais l’écrire 😉
Je suis pantois, bravo
Bonjour,
Bravo pour le hack.
Bon tuto.
ça fonctionne sur un equivalent chinois MoesHouse( carte identique ) à 17€
Quel est l’intérêt d’ajouter un module Zigate Wifi.
C’est vraiment magnifique ! Del’art électronique 😀
Super !
Par contre, je n’ai pas bien compris pourquoi vous remplaciez le module Zigbee d’origine par un autre.
J’avoue que je ne saisis pas la manœuvre sachant qu’on peut upload sur la passerelle zigbee2mqtt sans rien touché au hardware… La, à part la solution de l’antenne externe, je vous pas bien l’intérêt ?
Bonjour, comment faire pour upload zigbee2mqtt sur la passerelle? merci
Bonjour, j’essaie en vain de me connecter au terminal de cette gateway ..Je me suis procuré une clé ttl que je cable comme ceci
passerelle tx clef rx
passerelle rx clef tx
passerelle gnd clef 3.3v
j’ai configuré mon port com dans windows en 38400 8-1-n et j’essaie de me connecter sur putty mais sans succes (ecran noir)
y’a t’il un detail que je n’ai pas saisi ?
j’allume la passerelle lorsque tout est connecté ainsi que putty lancé et j’appuie plusieurs fois sur echap .
Merci !
passerelle tx clef rx
passerelle rx clef tx
passerelle gnd clef gnd
passerelle 3.3v clef 3.3v
Bonjour, superbe réalisation
N’y a t il pas une possibilité de transformer cette passerelle en Z-wave ethernet ?
Je débute en domotique et j’ai pas mal de difficultés à comprendre les finesses de tous ces protocoles existants
Jean-Paul
Salut et merci pour ce tuto.
Je me suis procuré une passerelle Lidl et vais me lancé dans le hack, mais comme certains, je me demande pourquoi remplacer le module Tuya par le Zigate ?
Quelles différences ?
Cordialement,
Christophe.
Bonjour,
je viens de faire les manips jusqu’a l’utilisation du serialgateway.
J’ai installé un espion sur Rx et Tx du Zigbee TYSZ4 et mes requettes TCP arrivent bien jusqu’au bornes dudit ZIgbee TUYA.
Mais je ne connais pas comment dialoguer avec le Zigoto.
Bonjour et merci pour votre tuto,
J’aurais juste une petite question. Je n’arrive pas à décrypte la clé root de la passerelle. J’ai suivie la marche à suive de Paul Bank à la lettre et j’ai une erreur lors de l’exécution de script. Je lui ai écrire, mais je n’ai pas de réponse de sa part. Auriez-vous rencontré également des problèmes de décryptage?
Cordialement,
Stéphane
Bonjour
Bravo pour le tuto et les compléments d’infos en français clair …. Si si faut le dire…
J’ai fait le hack de mon coté aussi et j’ai pu ajouter des appareils Zigbee 3.0 sans souci….
Par contre pourquoi changer le module zigbee ? Débutant en domotique je ne sais pas tout et encore ne comprends pas tout….
Peut être est ce pour avoir le connecteur antenne ??
Merci de vos retours
Bonjour merci pour ce « tuto » !!!
En tant que boulet revendiqué j’ai pas choisi le bon adaptateur usb –>ttl
il me manque le 3,3v 😐
A priori il semblait réalisable d’alimenter la passerelle via son port micro usb au moment du boot pour entrer dans le bootloader. la machine réagi aux solicitations mais je n’accède finalement pas au bootloader (malgré le matraquage de la touche ESC !)
J’ai ceci sous putty:
~:&2.~v.j2Z▒▒hrRR▒Ғ^j~^z2^~.zvNj~jF.6Zj2~6>.~^B6nj6~:N~:6~v.j2Z▒▒(▒R▒▒~6″ »>>RB26″&R~z&zZNzvNj~^6. »R~Rj6FjN~rBnjN~*>&R~6j2j6&jnN~*6*R~nz.zN~:6R~ZFZ.N~>R~^Zb^JjJZ▒▒VU/1K▒rZbF
26N~X#R▒
>J2N~YK$X’%MN$
>N~^UFag▒3 rR▒
:▒+P[+WV1g3L▒=NH$FHR▒R▒▒H
Dois je modifier la config keyboard sous putty ?
Bonjour
Mauvais branchement désolé
Merci
Un régal à lire même si on ne cuisine pas soi-même 😉
Bonjour,
je viens d’acquérir la passerelle et j’aimerais savoir comment vous avez procédé pour la démonter ?
Merci