Récupérer id et localkey pour Tuya Smartlife

La procédure recommandée pour trouver les identifiants et clés des périphériques Tuya consiste à créer un compte Tuya développeur et à associer les périphériques inclus dans l’appli Tuya à un projet de développement. Il y a plusieurs tutos :

Ensuite, aller dans l’onglet “Overview” pour récupérer : Access ID et Access Secret. Dans la configuration du plugin, renseigner ces 2 paramètres dans la partie Tuya. Ensuite sélectionner : Tuya Passer en inclusion. Les périphériques sont créés automatiquement.

Les procédures ne passant pas par un compte Tuya sont obsolètes car nécessitent des téléphones anciens, une appli Tuya ancienne et des appli qui ne sont pas sur le market.

1 - Pour Android. Procédure avec Packetcapure

note : avec des téléphones récents, la création du certificat ne fonctionne pas.

→ commencer par ne pas autoriser les mises à jour automatiques dans le playstore android.

Applis nécessaires :
→ Tuya SmartLife la 3.11.0 est OK au dessus à tester (3.14 KO)
pour récupérer la 3.11.0 chercher tuya apk 3.11
note : soyez vigilant c’est un moyen facile de véroler un téléphone.

→ Packetcapture la 1.7.2 est OK à prendre sur le playstore
Lors de l’installation, ajouter le certificat

Lancer SmartLife (et Packet Capture arrêté):

  • Appairer le périphérique selon la procédure du constructeur.
  • Vérifier que ça fonctionne
  • relever le nom du périphérique
  • aller dans le périphérique, sélectionner le crayon puis information appareil :
    relever l’ID virtuel
  • Laisser smartlife tourner

Lancer PacketCapture :

  • appuyer sur la flèche verte sans le 1 (la capture démarre)

Dans Smartlife :

  • dans la page avec les périphériques, glisser vers le bas pour mise à jour de la liste

Dans packet capture :

  • arrêter la capture en sélectionnant le carré rouge
  • ouvrir la dernière capture
  • regarder les packets SmartLife, les plus lourds sont les plus intéressants.
    c’est au format Json (google pour en savoir plus)
    rechercher devid/name/localkey
    le name est celui donné dans smartlife et l’ID est celui déjà récupéré
    ils sont proches les uns des autres et on doit trouver les infos suivantes :
    « devId »: « xxxxxxxxxxxxxxxxxxx »
    « localkey »:« yyyyyyyyyyyyyyy »
    « name »:« zzzzzzzzzzzz »
    Ceci permet aussi de ne pas mélanger plusieurs équipements. Je conseille de faire un par un pour récupérer à chaque fois la localKey.

Il peut y avoir d’autres localkey, qui ne sont pas les bonnes, mais elles sont proches de « id » ou autres.

2 - Pour Android. Procédure avec HttpCanary

HttpCanary V3.2.1 est OK à prendre apkpure
Lors de l’installation, ajouter le certificat
dans HttpCanary, aller dans “target apps” et selectionner Smartlife (V3.11.0)

Lancer SmartLife (et HttpCanary arrêté):
Appairer le périphérique selon la procédure du constructeur.
Vérifier que ça fonctionne
relever le nom du périphérique
aller dans le périphérique, sélectionner le crayon puis information appareil :
relever l’ID virtuel
Laisser smartlife tourner

Lancer HttpCanary :
lancer la capture avec le bouton bleu en bas a droite

Dans Smartlife :
dans la page avec les périphériques, glisser vers le bas pour mise à jour de la liste

Dans httpCanary :
arrêter la capture en cliquant sur le bouton en bas a droite
regarder les packets SmartLife, les plus lourds sont les plus intéressants.
c’est au format Json (google pour en savoir plus)
rechercher devid/name/localkey dans les “response”
le name est celui donné dans smartlife et l’ID est celui déjà récupéré
ils sont proches les uns des autres et on doit trouver les infos suivantes :
“devId”: “xxxxxxxxxxxxxxxxxxx”
“localkey”:“yyyyyyyyyyyyyyy”
“name”:“zzzzzzzzzzzz”
Ceci permet aussi de ne pas mélanger plusieurs équipements. Je conseille de faire un par un pour récupérer à chaque fois la localKey.

3 - Procédure avec un émulateur Android sur PC

Récupérer id et localkey pour Tuya Smartlife - #201 par VINCE3459

4 - Sous Linux

5 - Cas particulier des périphériques Proscenic

Je ne répondrai pas aux questions concernant les méthodes obsolètes.
Je ne répondrai pas aux questions concernant la création d’un compte développeur Tuya, vous adresser directement à leur support.
Ouvert aux suggestions pour améliorer la partie compte développeur Tuya.

9 « J'aime »

Un grand merci.

Effectivement cela fonctionne parfaitement avec cette version de Smartlife.

@bernardfr.caron

Je viens d’essayer le packet capture avec Smartlife 3.11.0. Tous les paquets sont cryptés SSL (donc pas de data) sauf 1 pour lequel une grand partie est illisible… Pas de données JSON en vu ?

Après plusieurs recherches, c’est ce que semble dire tuyaapi (Cryptage) https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md. J’ai essayer la méthode Linking a Tuya device with Smart Linksans succès!

Une idée ?

faire l’installation du certificat dans packet capture

Ne fonctionne pas avec Android 9. Pour ma part j’ai installé nox player sur windows (https://fr.bignox.com/) qui est un émulateur android. J’ai ensuite suivi la procédure (installer une ancienne version de Smartlife + ancienne version de packet captur) et tout fonctionne ! Les packets ne sont plus cryptés.

1 « J'aime »

J’ai essayé la manipulation sur plusieurs téléphone, tablettes et même mon pc avec émulateur.

Final effe il faut un vieux téléphone de 3/4 ans et la ça a marché. Merci

BOnjour,

Perso, je récupère tout via mon smartphone actuel (androd 10), avec httpCanary, ça fonctionne nickel.

Bonne journée

c’est très dépendant du tel/OS
moi ça marche même avec packetcapture et android 10 sur un … Nokia

Ca marchait très bien chez moi, et puis la d’un coup ça ne marche plus. Pourtant même tél, smartlife 3.11 et packet capture. A n’y rien comprendre…

Merci pour l’astuce.

sur mon téléphone, je ne pouvais pas mettre de certificats !!

1 « J'aime »

Bonjour à tous,

l’un de vous aurait-il réussi à effectuer cette manip avec du matériel d’Apple. (je n’ai pas d’android, ni de PC).
j’ai essayé plusieurs options trouvées sur le net mais sans succès jusqu’à présent…

merci d’avance.

Bonjour à tous
Je suis en train regarder le fonctionnement de l’api tuya … mais je suis pas certains de consommer les bons web services … savez-vous le endpoint consommé par l’app smartlife.
Moi je me suis basé sur ce endpoint : https://px1.tuyaeu.com
Pour la génération du token : https://px1.tuyaeu.com/homeassistant/auth.do ==> j’ai bien le token
Et pour lister mes équipements : https://px1.tuyaeu.com/homeassistant/skill
J’ai bien la liste de mes equipements, ex résultat pour un équipement :
‹ devices ›: [ { ‹ data ›: { ‹ max_temper ›: 90,
‹ min_temper ›: 55,
‹ online ›: True,
‹ state ›: ‹ false ›,
‹ temp_unit ›: ‹ FAHRENHEIT ›,
‹ temperature ›: 72},
‹ dev_type ›: ‹ climate ›,
‹ ha_type ›: ‹ climate ›,
‹ icon ›: ‹ https://images.tuyaeu.com/smart/icon/1493368574_0.png ›,
‹ id ›: ‹ 01106740cc50e350ad0c ›,
‹ name ›: ‹ Clim chambre Clement ›},
==> toutes les infos ne sont pas présentes et ne sont pas à jour par contre grâce à l’id je peux allumer/eteindre, modifier la température de l’équipement
Mais quand je fais votre procédure pour avoir les infos de l’app smartlife j’ai le résultat suivant pour l’équipement cité plus haut :
{
« devId »: « 01106740cc50e350ad0c »,
« dps »: {
« 1 »: false,
« 4 »: 0,
« 5 »: « 3 »,
« 6 »: 22,
« 8 »: « 0 »,
« 10 »: false,
« 13 »: 0,
« 14 »: 0,
« 15 »: 0,
« 16 »: true,
« 17 »: false,
« 18 »: 72,
« 19 »: false
}
}
Lui par contre à l’air de contenir toutes les infos…
D’ailleurs quel est la différence entre le devId et la localKey ?
Si y en a aucune y a un moyen plus simple de récupérer ces équipements et ID (sans téléphone) via un émulateur online de code python ==> added instruction how to check your device listed · PaulAnnekov/tuyaha@f2aac70 · GitHub
Emulateur : https://repl.it/ ==> creer un instance de code Python
Copier/coller le script de connexion tuya : https://github.com/PaulAnnekov/tuyaha/blob/master/tools/debug_discovery.py
Modifier les crédentials : username et password puis executer le code
Exemple de réponse :

Bonjour,
j’ai une petite question concernant le plugin.
J’ai vu dans le doc que les détecteurs de mouvements Tuya qui ne fonctionnent plus avec le Cloud ne sont pas compatibles, mais les autres alors c’est bon?
J’ai 2 détecteurs PIR immunisés contre les animaux qui fonctionnent dans SmartLife via le Cloud et l’application me donne un ID Virtuel. Est-ce que vous pensez que je pourrai les intégrer dans le plugin WifilightV2?

merci pour vos réponses

1 « J'aime »

Merci!

J’ai essayé et récupéré via ce script Python les id de mes devices, mais en fait je pouvais déjà les récupérer depuis l’application SmartLife en allant pour caque équipement dans Informations appareil…

Par contre ce script ne retourne pas les localkey dont a besoin le plugin j’en ai peur… :frowning: ??

Pour ma part Packetcapture et HTTP Canary ne me permettent plus de faire du Man in the middle pour récupérer les trames HTTP entre mon application SmartLife et le Cloud Tuya du probablment au passage en HTTPS de ces trames.

Une idée de comment procéder? Merci d’avance.
Je suis en version 3.20.1 de Smartlife…

1 « J'aime »

Perso avec la procédure ici, ça s’est fait super facilement : https://www.smarthomeblog.net/openhab-tuya/ :slight_smile:

1 « J'aime »

j’utilise cette méthode elle fonctionne parfaitement sans ce casser la tête avec un raspberry pi ou une machine linux sur le réseau ou une machine virtuelle . par contre il faut utiliser l’application smart life 3.11 trouvable sur apkmirror

2 « J'aime »

Merci beaucoup je vais regarder.
Mais as tu joué la procédure récemment ?
Après la sécurisation des flux par Smartlife notamment…?

Merci beaucoup.
Je vais aussi retenter via cette méthode.
In fine il vaut mieux récupérer une version 3.11 ou 3.12 de Smartlife sur apkmirror?
Merci

Edit: Hello, j’ai réussi la technique du Man In the Middle avec le proxy et le certificat en installant une version 3.11 de SmartLife sur un de mes anciens Smartphone!
J’ai pu récupéré d’une traite toutes les access key de mes devices Smartlife!

Merci encore pour votre aide!
Je vais pouvoir continuer la procédure avec Wifilightv2…

j’arrive un peut tard désolé mais puisque tu à réussi tant mieux :wink:

juste un précision quand à cette question :

A mon avis la sécurisation est simplement dans l’app android , c’est pour ça que ça marche avec là 3.11 je ne pense pas que ce soit une question firmware . Je ne sais même pas si c’est possible de protéger d’un man in the middle depuis le firmware , d’ailleurs j’en profite pour poser la question si des connaisseurs passe par là :wink: y à t-il un risque de ce coté ? si oui cela voudrait dire qu’ont ne pourrait plus être garantis de pouvoir utiliser les équipement tuya qu’ont achètera dans le futur … ? !..

ils peuvent d’une part changer les nouveaux firmware et coder le protocole différemment, c’est pour cela qu’il ne faut pas le changer et que de nouveaux appareils tuya peuvent devenir incompatibles avec le plugin. Et d’autre part changer l’appli (et c’est déjà fait car sur les dernières versions le localkey ne passe plus en clair).

Comme écrit dans la doc, il arrivera un jour où ce ne sera plus possible d’utiliser le plugin.

Par exemple la nouvelle box milight miboxer qui utilise le protocole tuya, il n’est pas possible de récupérer son protocole car il a changé et utilise un double cryptage (le protocole tuya et un protocole milight). L’appli miboxer ne permet pas de récupérer la clé et quand bien même je pense que la trame est encore cryptée. Pour milight il y a quelques années ils diffusaient leur protocole maintenant il est solidement protégé.

Il y a 2 raisons : le cloud pour savoir ce que vous faites, recouper avec d’autres de vos agissements et vous connaitre. L’autre est qu’il y a eu des articles sur les protocoles passoires permettant à un tiers de modifier l’état de vos appareils ou de récupérer des données des capteurs. Et les gens protestent donc les protocoles sont de plus en plus difficiles à cracker.