Hello,
Possesseur de volets Bubendorff et d'une tydom 1 depuis env 2 semaines. J'ai commencé a regardé pour ouvrir ce protocole
Etant dev .Net et je ne connais pas l'env Java/Android
J'ai décompiler les app K-line et Tydom et j'ai vu pas mal de choses ...
L'authentification se passe effectivement par l'url mediation.tydom.com en websocket. J'ai passé une semaine a recreer les headers qui vont bien mais en fait c'est du standart websocket, deg'. Ne perdez pas votre temps sur la generation de attribut 'nonce' etc... de la class C4112b.
Je ne maitrise pas WebSocket, mais en gros la 1ere requete avec le login/password retourne un 401, il faut recuperer l'header authenticate et refaire une requete qui retourne un 101 et la on est authentifié (a priori) si une personne avec un XP websocket peut confirmer... mais avec la plupart des lib, tout ce fait automatiquement.
voici un exemple de demande d'authent :
Code : Tout sélectionner
GET /mediation/client?mac=[b]censuré[/b]&appli=1 HTTP/1.1
Host: mediation.tydom.com:443
User-Agent: Dalvik/2.1.0 (Linux; U; [b]censuré[/b])
Accept-Encoding: gzip, deflate
Connection: Upgrade
Accept: */*
Upgrade: websocket
Sec-WebSocket-Key: [b]censuré[/b]
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Pragma: no-cache
Cache-Control: no-cache
voici un exemple de d'authentification :
Code : Tout sélectionner
GET /mediation/client?mac=[b]censuré[/b]&appli=1 HTTP/1.1
Host: mediation.tydom.com:443
User-Agent: Dalvik/2.1.0 (Linux; U; [b]censuré[/b])
Accept - Encoding: gzip, deflate
Connection: Upgrade
Accept: */*
Upgrade: websocket
Sec-WebSocket-Key: [b]censuré[/b]
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Pragma: no-cache
Cache-Control: no-cache
Authorization: Digest realm="ServiceMedia", qop="auth", nonce="[b]censuré[/b], username="[b]censuré[/b]", cnonce="[b]censuré[/b]", nc="00000001", response="[b]censuré[/b]", uri="/mediation/client?mac=[b]censuré[/b]&appli=1"
Lors qu'on est en wifi, j'ai l'impression que les echanges passent en netbios, mais vraiment pas certain...!
A propos de chiffrement, j'ai trouvé comment est chiffré le mot de passe stocké dans la base, mais rien d'interessant, si n'est que j'ai pu validé la methode de chiffrement et la clé. Il faut chercher "alias_user_data_key"
Sinon ce qui sort de l'app est crypté en AES, mais la clé est bien caché
je n'ai rien compris en l'envoi de command encore... juste que les cles "alias_internal_resources_key" et "alias_user_data_key" utilise la lib
https://github.com/timtiemens/secretshare
D'autres infos en vrac :
- le package com.squareup.p195a correspond à com.squareup.sqldelight
- le package com.deltadore.tydom.core.service.synchro.b.* = synchronise les fichiers json app. -> Tydom
- le package com.deltadore.tydom.core.service.synchro.c.* = synchronise les fichiers json Tydom -> app.
- le package p000a = RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. https://github.com/ReactiveX/RxJava
Pour le package RxJava, j' ai l' impression que les requetes SQL sont lance puis les commands via la methode subscribe.
Ils ont fait une abstraction de la lib websocket avec la class C4112b, on voit bien les codes 401 et 101 dans ce code
mais je ne comprends pas a quel moment il balance ces fichus commandes...
D'ailleurs dans la version que j' ai up, il y a un fichier tres interessant concernant les commandes... com.deltadore.tydom.core.a bonne lecture
J'ai upé une autre version decompilé qu'a upé jjlf, cette version a du code plus lisible, il y a les log, ca aide a la lecture mais toutes les variables/methodes/classe sont nommées a b c ect... super relou pour s'y retrouver, bref, il faut switcher sur les 2 versions...
https://ufile.io/px1p27dk
Voili le resultat de mes recherches... si ya un dev Java qui sait lancer cette app' en debug... ou si un dev DeltaDore peut ajouter des precisions
C'est une app ou il y a pas mal d' abstractions ce qui rends les choses difficiles a lire quand c'est decompile.
Sinon K-line et Tydom utilise la meme lib
Eli.