Smart DOM

Bramka Zigbee 3.0 Livarno Lidl – HomeAssistant, przerobienie

Cześć !
W dzisiejszym artykule zaprezentujemy jak zastosować i zaintegrować bramkę Zigbee 3.0 z Lidla, marki Silvercrest, Livarno nie tylko z aplikacją Tuya !

Przerobienie bramki Zigbee 3.0 z Lidla daje możliwość integracji lokalnie z Home Assistant przy użyciu ZHA, zamiast używać integracji poprzez konto i oprogramowanie SmartLife działające w chmurze Tuya.

Pinologia złącza:

Pin 1 = Vcc (3.3V) (bottom pin in picture)
Pin 2 = Ground
Pin 3 = U2 Serial TX
Pin 4 = U2 Serial RX
Pin 5 = ZigBee module ARM Debug SWDIO
Pin 6 = ZigBee module ARM Debug SWCLK

Parametry połączenia:
Napięcie: TTL 3.3V
Prędkość transmisji: 38400 bps
Other: 8N1 (8-bit, No Parity, 1 stop bit)

SSH

Urządzenie uruchamia serwer SSH (dropbear) na porcie 2333.

Serwer ma pewną ochronę przed brute force, dzięki której nieudane logowanie spowoduje zatrzymanie tego serwera przez urządzenie na dłuższy czas.

Urządzenie należy pozostawić włączone, aby licznik czasu anti-brute force wygasł, ponieważ licznik awarii jest trwale zapisany w pamięci flash.

Jeśli masz już dostęp do systemu plików, możesz go zresetować przedwcześnie, usuwając plik /tuya/ssh/cnt.

Po usunięciu pliku wystarczy restart urządzenia i możemy ponownie podłączyć się do ssh na tym porcie.

Zaczynamy odczyt hasła ROOT !
Instrukcja:

Rozebranie obudowy i podłączenie programatora.
Podłączamy:

Programator <-> Płytka zigbee

GND <-> GND

TX <-> RX

RX <-> TX

Zasilania układu nie podłączamy !
Płytę zigbee zasilamy poprzez złącze USB do adaptera dołączonego do bramki lecz to dopiero w momencie jak podepniemy programator TTL do komputera, a więc do dzieła !

Podłączamy prawidłowo skrosowany konwerter TTL do portu USB komputera i sprawdzamy na którym porcie COM jest on widoczny.

Jeżeli mamy już podłączony konwerter do USB komputera oraz prawidłowo skrosowany z zigbee możemy uruchomić program Putty i otworzyć połączenie szeregowe na porcie COM programatora z prędkością podanej wyżej w poście w sekcji Pinologia a mianowicie 38400 bps.
Od teraz Putty nasłuchuje na otworzonym porcie a więc przygotujmy się i podłączmy zasilanie naszego Zigbee !
Gdy zaczną nam się pojawiać w oknie Putty informacje z zigbee naciskamy przycisk “ESC” na klawiaturze aby przerwać bootowanie zigbee.

Ujrzymy mniej więcej taki ekran:

---RealTek(RTL8196E)at 2020.04.28-13:58+0800 v3.4T-pre2 [16bit](400MHz)
P0phymode=01, embedded phy
check_image_header  return_addr:05010000 bank_offset:00000000
no sys signature at 00010000!

---Escape booting by user
P0phymode=01, embedded phy

---Ethernet init Okay!

Jeżeli ujrzeliśmy taki ekran jak powyżej to bardzo dobrze.

Przejdźmy teraz do wydobycia zaszyfrowanej sekcji pamięci aby odzyskać hasło root-a naszej bramki zigbee.

AUSKEY jest sam zaszyfrowany innym kluczem, który nazwiemy KEK. Aby odczytać KEK, wpisz następujące polecenia do bootloadera. Pierwsze polecenie odczytuje wartość z pamięci flash do pamięci RAM. Kolejny wyświetla zawartość.

 

 


FLR 80000000 402002 32
DW 80000000 8

Otrzymamy pojedyńczą linię jaką będzie nasz klucz KEK.

Następnie musimy odczytać nasz AUSKEY.
Sposób podobny jak wyżej lecz wyciągamy dane z innego obszaru pamięci.
Wpisujemy w konsolę jak poniżej:


FLR 80000000 402002 32
DW 80000000 8

Po czym otrzymujemy dwa wiersze wyciągniętymi danymi. Jest to nasz AUSKEY
Zapisujemy sobie najlepiej w notatniku ten KEK oraz AUSKEY.

Kolejnym krokiem będzie odszyfrowanie hasła root-a, posłużymy się gotowym plikiem napisanym w Pythonie lecz do uruchomienia skryptu będziemy musieli posłużyć się systemem Linux na laptopie lub wspomóc się programem VirtualBox i wirtualnym systemem Linux. 
Plik pobierzemy tutaj: Pobierz

Do uruchomienia programu potrzebujemy zainstalować biblioteki takie jak: Python-3 oraz crypt…

Po uruchomieniu programu musimy przekopiować nasz klucz KEK w pierwszej fazie po uruchomieniu programu, zrobimy to za pomocą CTRL + C z notatnika aby skopiować do schowka zawartość która nas interesuje, trzeba uważać aby kopiować bez spacji i innych znaków.
Do programu Putty wklejamy klikając tylko Prawy Przycisk Myszy ! Zawartość zostanie automatycznie przeniesiona. Klikamy ENTER !
Program poprosi nas o wprowadzenie pierwszej lini klucza AUSKEY, robimy analogicznie jak z kluczem KEK i klikamy ENTER. Ostatni krok to wprowadzenie drugiej lini klucza AUSKEY po czym zatwierdzamy klawiszem ENTER.
Jeżeli wszystko zostało poprawnie odczytane z odpowiednich bloków pamięci i nie skopiowaliśmy bez zbędnych znaków to program pokaże nam hasło jak na załączonym obrazku.