Reverse engineering - Analyse Trame

Bonjour,

On m’a offert un ventilateur DUUX : https://duux.com/fr/produit/whisper-flex-smart-noir/.

Il se pilote avec une télécommande, une application ou un bouton. J’ai essayé d’analyser les trames voir si je peux reproduire par exemple l’allumage et l’extinction. J’ai installé sur mon Android PCAPDroid et choper des trames.

Avec Wireshark, j’ai l’impression d’avoir trouvé les trames. J’ai du port 8883 (MQTT) avec des adresses vers tuyas.com. Il y a déjà des sujets sur la plateforme tuya dans cette communauté mais les ventilateurs ne sont pas pris en compte.

Les trames semblent encapsulés dans du TLS donc sécurisé et non visible clairement. Comment faites-vous développeurs pour créer des plugins ? Choper les requêtes, les tokens etc ?

J’ai envoyé un email au constructeurs pour savoir s’il existe une doc mais sans réponse pour l’instant.

Cordialement.

Tu peux te servir de Burp Suite en installant un certificat dans ton téléphone pour simuler une attaque de type MITM (Man in the middle). Pas toujours simple à mettre en oeuvre si l’appli n’accepte pas les certifs autosignés.
Tu peux aussi installer l’appli dans une VM Android x86 sur ton PC. Et écouter le traffic avec Wireshark et Burp de la même manière

Alors si tu veux analyser le traffic qui est encrypté, je te conseille MITMproxy que tu trouvera ici.

En fait c’est un serveur proxy qui va te permettre d’analyser les requetes. Tu règles ton téléphone pour utiliser MITM comme serveur proxy. Tu installe les certificats et hop tu regardes ce qui passe.

PS : Si l’appli est vraiment sécurisé ca ne marchera pas.

PS 1 : Généralement pour developper un plugin on se base sur une API constructeur.

je réponds quand même à la question initiale, car les solutions données sont des moyens détournés de trouver les infos encapsulées dans les trames. Normalement un développeur s’appuie sur l’API mise à disposition par le constructeur, seul moyen sûr de permettre un échange entre un objet connecté et son réseau.

Merci pour vos infos. L’API reste donc le meilleur et plus propre moyen. Je vais attendre une réponse du support… si l’API existe.

Par curiosité, je vais tester les solutions proposées. C’est mon coté bidouilleur!!!

Bonjour!

Est-ce que par hazar du as eu des nouvelles s’il y a une API dispo?
J’ai egalement recu un petit chauffage DUUX, il est a l’air cool, il est compatible Google Home et alexa, mais j’ai pas l’impression qu’il soit compatible avec les boxes domotiques.

Bon j’ai contacte Duux aussi, pour l’instant il n’y a rien, mais ils ont deja eu quelques requetes, donc ce n’est pas exclu qu’ils en rajoute dans le futur. Mais pour l’instant rien n’est prevu

Non pas de nouvelle pour l’instant. On croise les doigts pour une API.

Salut

Je reveille ce vieux post.
J’ai récupéré un chauffage ThreeSixty Duux, et après avoir pleuré ma grand mère avec leur cloud completement défaillant, un petit MITM de l’appareil ( pas de l’appli ) nous donne de chouettes infos. Il se connecte en TLS sur un serveur mqtt à l’adresse collector3.cloudgarden.nl sur le port 443, sans authentification. Il n’y a pas de vérification du certificat :wink:

En ajoutant une entrée dns dans mon pihole pour ce domaine et en le faisant pointer sur l’ip de mon docker mosquitto ( en ayant pris soin de paramètrer mosquitto pour qu’il écoute sur le port 443, avec un certificat auto signé pour le domaine collector3.cloudgarden.nl ) , j’ai pu voir arriver le ThreeSixty sur le topic sensor/{mac adress du device}/

Il crée 3 topics:
sensor/{mac adress du device}/in

{"sub":{"Tune":[{"uid":"xxxxxxxxx","id":1,"power":0,"sp":21,"temp":18,"mode":2,"err":0}]}}

sensor/{mac adress du device}/online

{"online":true,"connectionType":"mqtt"}

sensor/{mac adress du device}/update

{"pid":"exxxxxxxxxx","tune":"Threesixty 2"}

et récupère les commande dans le topic sensor/{mac adress du device}/command

Pour les commandes c’est simple il suffit de poster sur le topic sensor/{mac adress du device}/command

tune set power 0

pour eteindre ou 1 pour allumer
et
tune set mode 0 pour High, 1 pour Medium et 2 pour Low

pour régler le thermostat ( mais je le trouve inutile le capteur de T° étant complètement dans les choux )

tune set sp {valeur de T°}

Je sais pas si c’est le cas pour les autres device Duux, à vérifier, mais ca fonctionne déjà bien mieux en direct qu’avec leur cloud malade

Intéressant @KipK . Ton chauffage fonctionne donc en IP via Wifi ? Et l’adresse du DNS fournie au chauffage est celui de ton PiHole.

Oui, tout mon réseau passe par piHole comme dns. Du coup le chauffage pense être sur le serveur MQTT Duux mais en fait atterris en local. Seul contrainte, avoir mosquito qui écoute en 443 et un certificat auto signé pour ce domaine ( quoi que j’ai pas testé avec un certificat sans domaine )