Forum: Haus & Smart Home wlan-LED von Luminea (Pearl)


von Matthias G. (matthias1102)


Lesenswert?

Hallo zusammen. Es geht um das folgende Leuchtmittel:
https://www.pearl.de/a-ZX2893-3103.shtml?query=gu10+wlan+led+alexa
Ich vermute mal, dass da der übliche ESP das Kommando inne hat.
Die LED funktioniert mit einer China-APP (die auch fleißig nach Hause 
telefoniert) namens IO.e auf dem Android. Ich also erstmal mit "Fing" 
festgestellt, welche IP die LED hat. Dann habe ich mit "Packet Capture" 
mal mitgeschnitten, was IO.e an die ermittelte Adresse schickt. Wird 
IO.e gestartet, wird im Klartext die LED nach ihrem Status gefragt. Die 
Anfrage besteht im Wesentlichen aus Start-Muster (55AA), der LED-eigenen 
ID und End-Muster (AA55). Damit ist das Packet komplett. Die LED 
antwortet (auch im Klartext, mit Start (auch 55AA), ihrer ID und "false" 
wenn LED aus, "true" wenn LED an und End-Muster (AA55). True und False 
stehen da wirklich als String, tatsächlich als "true" mit 
Anführungszeichen. Alles Klartext.
Das Mitschneiden eines Einschaltbefehls den IO.e an die LED schickt, war 
nun nicht wirklich ein Hexenwerk. Start-Muster 55AA, aber dann: Lauter 
verschlüsseltes Zeug. Antwort der LED ebenso verschlüsselt. Ebenso die 
Befehle zum Dimmen. Mit einem bischen hin und her habe ich die Sequenzen 
aus dem Datenstrom einzeln isoliert, auf den PC geladen und mit "Packet 
Sender" vom PC aus auf die LED geschickt. Wunderbar, funktioniert ganz 
prächtig. Die Vorgehensweise, das oben Beschriebene in einen ESP zu 
packen und den senden zu lassen, wäre ebenfalls kein Hexenwerk. Aber:
Ich habe nicht eine LED sondern neun. Und alle LED's einzeln aufzeichnen 
und die Befehle zu extrahieren, nee, oder? Ausserdem: Gibt eine LED auf, 
folgt die ganze Prozedur mit der neuen LED.
So, und nun: Hat ijmd damit mal rum gemacht, kennt sich viell. mit 
Verschlüsselung aus und wie man die knackt? Ich habe davon keine Ahnung.
Danke an Alle, freue mich auf euere Beiträge.
LG

von Brummbär (Gast)


Lesenswert?

Matthias G. schrieb:
> Lauter verschlüsseltes Zeug

Vielleicht chinesische Schriftzeichen?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Matthias G. schrieb:
> aber dann: Lauter verschlüsseltes Zeug.

Das muss nicht unbedingt verschlüsselt sein, kann auch ein 
Binärprotokoll sein.

> Ich habe nicht eine LED sondern neun. Und alle LED's einzeln aufzeichnen
> und die Befehle zu extrahieren, nee, oder?

Zwei LEDs aufzeichnen und anschließend das Protokoll byteweise 
vergleichen. Wenn Du Glück hast, unterscheidet es sich nur um ein paar 
Bytes, nämlich die LED-Adresse. Mit dieser Information kannst Du es dann 
auf alle LEDs anwenden.

von Matthias G. (matthias1102)


Lesenswert?

Brummbär schrieb:
> Matthias G. schrieb:
>> Lauter verschlüsseltes Zeug
>
> Vielleicht chinesische Schriftzeichen?

Nee, Alles Hex/ASCII

von Matthias G. (matthias1102)


Lesenswert?

Frank M. schrieb:

> Zwei LEDs aufzeichnen und anschließend das Protokoll byteweise
> vergleichen. Wenn Du Glück hast, unterscheidet es sich nur um ein paar
> Bytes, nämlich die LED-Adresse. Mit dieser Information kannst Du es dann
> auf alle LEDs anwenden.

Das ist ja mal ne gute Idee, danke!

von Matthias1102 (Gast)


Lesenswert?

Matthias G. schrieb:
> Frank M. schrieb:
>
>> Zwei LEDs aufzeichnen und anschließend das Protokoll byteweise
>> vergleichen. Wenn Du Glück hast, unterscheidet es sich nur um ein paar
>> Bytes, nämlich die LED-Adresse. Mit dieser Information kannst Du es dann
>> auf alle LEDs anwenden.
>
> Das ist ja mal ne gute Idee, danke!

So, hab ich gemacht. Das Progrämmchen "Hex-Editor MX" kann 2 Dateien 
verkleichen. Bede Dateien (jeweils der Einschaltbefehl von 2 versch. 
LED's) haben eine Länge von 170 Bytes. Da gibt es 145 Unterschiede. War 
zwar eine gute Idee, aber leider brachte sie keinen Erfolg.
Trotzdem danke.
Noch jmd eine Idee?

von vhk,bnc,nb,c (Gast)


Lesenswert?

Matthias G. schrieb:
> Brummbär schrieb:
>> Matthias G. schrieb:
>>> Lauter verschlüsseltes Zeug
>>
>> Vielleicht chinesische Schriftzeichen?
>
> Nee, Alles Hex/ASCII

Dann nimm einen chinesischen Editor, der zeigt die richtigen Zeichen.
Leute gibts...

vhk,bnc,nb,c

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Matthias G. schrieb:
> Nee, Alles Hex/ASCII

Zeig doch mal.

von Matthias G. (matthias1102)


Angehängte Dateien:

Lesenswert?

Anbei die pcap-Datei. Kann z.B. mit Wireshark geöffnet werden. Die Datei 
heisst nicht nur "pcap", sie hat auch das Format "pcap". Sollte mit 
einigen Progr. lesbar/auswertbar sein. Ein Screenshot oder Hex-File 
hätte nicht die Struktur der Nachrichten offenbart, daher meine Wahl 
"pcap" zu nehmen. In dem File steht der ges. Netzwerkverhehr zw. meinem 
Smartphone und der LED 192.168.1.64:6668 f. den aufgezeichneten 
Zeitraum. Der 1. lesbare Block ist die Statusabfrage der LED. Der 2. die 
Antwort der LED (true = LED eingesch.). Der 3. große Block ist der 
Ausschaltbefehl an die LED, im 4. Block dann die Antwort der LED.
Den Kleinkram zw. den Blocks kann man, denke ich, vergessen. Dient der 
APP wahrsch. dazu zu prüfen ob die LED noch Online ist.
LG

von Matthias G. (matthias1102)


Lesenswert?

vhk,bnc,nb,c schrieb:
> Matthias G. schrieb:
>> Brummbär schrieb:
>>> Matthias G. schrieb:
>>>> Lauter verschlüsseltes Zeug
>>>
>>> Vielleicht chinesische Schriftzeichen?
>>
>> Nee, Alles Hex/ASCII
>
> Dann nimm einen chinesischen Editor, der zeigt die richtigen Zeichen.
> Leute gibts...
>
> vhk,bnc,nb,c

Uuuh, wie kann man nur auf so eine Idee kommen? Aber gut, ich probiere 
es.
LG


Und was passiert, wenn der europäische Editor die chinesischen Bits 
nicht lesen kann? Die heissen da ja auch anders als Null und Eins.
LG

von Oliver S. (phetty)


Lesenswert?

Matthias G. schrieb:
> Ich vermute mal, dass da der übliche ESP das Kommando inne hat.

Dann sollte man das Ding mal aufmachen und sich versichern ob wirklich 
ein ESP drin ist.
Dann RX,TX,GND,3.3 finden und was ordentliches drauf flashen.

von Rainer P. (rrpt)


Lesenswert?

Hallo Matthias,

ich habe mehrere Luminea Steckdosen ZX-2820 analysiert und kann diese 
nun ansteuert.
Das mit chinesischen Zeichen ist Blödsinn, es ist wirklich 
verschlüsselt, und zwar wird bei der ersten Verbindung mit dem Server 
der Schlüssel individuell ausgehandelt. Mit ein paar Tricks kann man den 
herausbekommen und dann selbst ver- und entschlüsseln.
Falls du noch interesse hast ...
Aber Oliver hat recht, die bessere Variante ist sicherlich eigene 
Software aufzuspielen, z.B. Tasmota. Das habe ich inzwishcne auch 
gemacht, funktioniert super und es gibt kein telefonieren nach hause 
mehr :-)
Bei einer Luninea E27 Lampe ZX2831 habe ich das auch versucht, 
allerdings gehen die schlecht auf (und noch schwieriger wieder zu) und 
auf den Platinen sind die seriellen Anschlüsse nicht markiert. Hier ist 
also die obige Lösung besser.
Wenn du stattdessen Sonof lampen nimmst, bei denen geht das auch besser.

Gruß Rainer

von Matthias1102 (Gast)


Lesenswert?

Zitat:
Bei einer Luninea E27 Lampe ZX2831 habe ich das auch versucht,
allerdings gehen die schlecht auf (und noch schwieriger wieder zu) und
auf den Platinen sind die seriellen Anschlüsse nicht markiert. Hier ist
also die obige Lösung besser.

Ja, ich habe auch versucht, eine Lampe zu öffnen. Bin aber dann davor 
zurückgeschreckt, den Draht zur Fassung zu kappen. Ich wüßte spontan 
nicht, wie ich den wieder dran bekommen soll. Daher wäre für mich die 
einzige Lösung, das mit dem Ver- und Entschlüsseln zu probieren zumal 
ich hier 9 dieser Lampen im Betrieb habe. Wäre nett, wenn Du mir weitere 
Infos zum Ver-/Entschlüsseln geben könntest.

Egal, ich danke Dir und allen anderen die sich hier beteiligt haben.

Matthias

von Rainer P. (rrpt)


Lesenswert?

Hallo Matthias,

Anbei die bestimmung des local Keys:

Bestimmung des LokalKey bei Luninea Komponenten

Das Verfahren stammt von https://github.com/Marcus-L/m4rcus.TuyaCore und 
verwendet das Tool ADB 
(https://www.xda-developers.com/install-adb-windows-macos-linux/)

- ADB herunterladen von 
https://dl.google.com/android/repository/platform-tools-latest-windows.zip
   und entpackenin Verzeichnis 
D:\Daten\Petzoldt\Rainer\Entwicklung\Android\platform-tools
- Smartphone per USB verbinden
- CMD öffnen, in diese Verzeichnis wechseln, Puffergröße auf 9999 Zeilen 
setzen
- adb shell
- am Smartphone debuggin erlauben
- logcat -s Tuya
- nun muss man die App beenden neu starten, die Komponente schalten und 
dann die App wieder beenden, irgendwann tauchen im log sie richtiogen 
Zeilen auf. Dann Log alles markieren und in Editor einfügen
- suchen nach localKey, dann muss noch geschaut werden, ob der zur 
richtigen Komponete gehört.

Ein Ausschnitt aus einer solchen Logdatei steht unten

01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé       "result": [
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé         {
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "devId": 
"012000035ccxxxxxxxxx",
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "dpMaxTime": 
1516560040285,
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "virtual": 
false,
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "productId": 
"fTxxxxxxxxxxxxxx",
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "dps": {
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé             "1": false,
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé             "2": 25,
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé             "3": 0
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           },
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "activeTime": 
1516553844,
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "ip": 
"95.208.xxx.xxx",
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "lon": "",
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé           "moduleMap": {
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé             "wifi": {
01-21 19:40:57.985 17556 17619 D Tuya    : Ôöé               "bv": 
"5.07",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé      "cdv": "",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "pv": 
"2.1",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "verSw": 
"1.0.0",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "isOnline": 
true,
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "cadv": ""
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé             },
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé             "mcu": {
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "cdv": "",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "verSw": 
"1.0.0",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "isOnline": 
true,
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé               "cadv": ""
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé             }
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           },
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "uuid": 
"012000xxxxxxxxxxxxxx",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "name": 
"Luminea03w",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "isShare": 
false,
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "timezoneId": 
"Europe\/Berlin",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "iconUrl": 
"https:\/\/images.tuyaus.com\/smart\/icon\/1502765635_0.png",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "lat": "",
01-21 19:40:57.986 17556 17619 D Tuya    : Ôöé           "runtimeEnv": 
"prod",
01-21 19:40:57.987 17556 17619 D Tuya    : Ôöé           "localKey": 
"xxxxxxxxxxxxxxxx"
01-21 19:40:57.987 17556 17619 D Tuya    : Ôöé         },


Gruß Rainer

von Rainer P. (rrpt)


Angehängte Dateien:

Lesenswert?

Hallo,

anbei im Anhang noch die Beschreibung des Luninea Protokolls

Dafür habe ich mir dann ein C# Programm geschrieben um die Komponenten 
abzufragen und zu steuern ..

Gruß Rainer

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.