Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Beha WiFi Gen1 protokoll/API?


Bjørn Mork

Anbefalte innlegg

Vet ikke hvorfor jeg ikke har lagt merke til det før, men ser at en av panelovene på hytta er en Beha "PV6 Wi-Fi".   Før jeg kaster bort mer tid på å prøve å finne ut av hvilket språk den snakker:  Er det noen som kjenner til at dette er gjort før?

 

Jeg gjorde noen eksperimenter med Behas app, mitmproxy og litt snooping, og det ser overkommelig ut å få denne til å styres lokalt.  Mangler detaljer om hvordan appen konfigurerer WiFi.  Den bruker åpenbart multicast på en særdeles kreativ måte med pakker til en drøss multicast-adresser.  Innholdet er mystisk nok stort sett et antall "1".  Det ser nesten ut som om de koder data inn som varierende antall/pakkestørrelse.  Elns.  Må forskes mer på.

 

Men når oven først har passordet så klarer den seg ganske bra.  Kjører DHCP og NTP og poster deretter en json-blob og en DeviceDrive-Header med litt personlige til https://agent.devicedrive.com/api/agent  Glad og fornøyd selv om det sitter en proxy der, slik at sertifikater ikke kan valideres i noen retning....

 

Men det den får tilbake er det som er mest interessant.  Body er bare "{"response":"OK"}" så den er ikke nyttig.  Men i headerne finner vi

 

auth_token_receive: SharedAccessSignature sr=BehaIotHubProd.azure-devices.net%2Fdevices%2F<mac>&sig=<sig>%3D&se=<sn>
auth_token_send: SharedAccessSignature sr=BehaIotHubProd.azure-devices.net%2Fdevices%2F<mac>&sig=<sig>%3D&se=<sn>
url_format_receive: https://BehaIotHubProd.azure-devices.net/devices/<mac>/messages/devicebound/%s?api-version=2021-04-12
url_format_send: https://BehaIotHubProd.azure-devices.net/devices/<mac>/messages/devicebound/%s?api-version=2021-04-12

 

med <mac> som 12 lc hex siffer uten skilletegn, og sn som 10 desimale siffer

 

Nå står det https der.  Men det kom aldri noen GET eller POST i den retningen.  Skjønte ikke bæret før jeg la merke til at det gikk pakker i retning av tcp port 8883 på BehaIotHubProd.azure-devices.net

 

Så det der konfigurerer rett og slett ovnen til å bruke MQTT over TLS.  Og enda bedre:  Fremdeles uten å validere sertifkater! Så da er det bare å fyre opp sin egen broker og leke i veg.

 

mitmproxy, som jeg har brukt så langt, er ikke så velegnet til å dekode MQTT.  Men jeg ser ihvertfall at det utveksles JSON blober med svært så lesbart innhold.  Slik som
 

{
  "com.beha.heater": {
    "sw_rev": "1.2",
    "child_lock": 0,
    "heater_mode": 2,
    "alarm_flags": 0,
    "current_triac_temperature": 60.7,
    "current_ext_temperature": 0,
    "current_NTCtemperature": 33.1,
    "current_model": 25.2,
    "target_temperature": 30,
    "current_nrf_temperature": 36.5,
    "current_TriacDutyCycle": 39,
    "max_triac_diff": 35.4,
    "max_triac_delta": 6.07
  },
  "com.devicedrive.heater": {
    "target_temperature": 30,
    "current_temperature": 25.2,
    "week_program_name": "",
    "week_program_id": "",
    "last_programmed": 1726494495
  }
}

 

Trenger bare å finne en fornuftig måte å samle inn topics og meldings-eksempler

 

Men så var det spørsmålet i starten da.  Dette er jo 5(?) år gammel hardware.  Noen må vel ha gjort tilsvarende før?

Lenke til kommentar
Del på andre sider

Fant meg https://github.com/nikitastupin/mitmproxy-mqtt-script og dette synes ganske så rett fram ut:
 

info: Loading script /usr/local/src/git/mitmproxy-mqtt-script/mqtt_message.py
info: Proxy server listening at *:9192
info: 192.168.15.136:21645: client connect
info: 192.168.15.136:21645: server connect 13.74.108.192:8883
info: [CONNECT]

Client Id: <mac>
Will Topic: None
Will Message: None
User Name: BehaIotHubProd.azure-devices.net/<mac>
Password: <innholdet fra auth_token_receive ovenfor>

info: [SUBSCRIBE] sent topic filters: 'devices/<mac>/messages/devicebound/#'
info: [PUBLISH] '<json blob med device data ala den jeg postet ovenfor>'  to topic 'devices/<mac>/messages/events/DeviceDrive%2DHeader=%7B%22mac%22 <osv med hele "DeviceDriver-Header fra første HTTPS POST url-kodet>'

 

Deretter kommer det en del kommandoer til topic 'devices/<mac>/messages/devicebound/%24.mid=<en eller annen uuid>&%24.to=%2Fdevices%2F<mac>%2Fmessages%2Fdevicebound'.  Som f.eks
 

info: [PUBLISH] '{"com.beha.heater": {"enable_notify": ["300"]}}'
info: [PUBLISH] '{"com.devicedrive.heater": {"target_temperature": "22.0"}}'
info: [PUBLISH] '{"com.beha.heater": {"heater_mode": "0"}}'
info: [PUBLISH] '{"com.beha.heater": {"heater_mode": "3"}}'

 

Selvsagt med stadige rapporter tilbake fra ovnen.

Lenke til kommentar
Del på andre sider

21 hours ago, Bjørn Mork said:

Mangler detaljer om hvordan appen konfigurerer WiFi.  Den bruker åpenbart multicast på en særdeles kreativ måte med pakker til en drøss multicast-adresser.  Innholdet er mystisk nok stort sett et antall "1".  Det ser nesten ut som om de koder data inn som varierende antall/pakkestørrelse.  Elns.  Må forskes mer på.

Rart at dette skulle være så vanskelig å google seg fram til.  Det ser ut til å være "ESP Touch" protokollen fra espressif.  Med manual på
https://www.espressif.com.cn/sites/default/files/documentation/esp-touch_user_guide_en.pdf

og eksempel-kode på

https://github.com/EspressifApp

 

Så da burde det være overkommelig å sette samme hele greia fra factory reset til lokal MQTT broker.  Forutsetter riktignok et system for å redirigere https://agent.devicedrive.com/api/agent  til en lokal webserver.  Men det funker nok både med DNS og forskjelige varianter av IP redirect.  Ikkeno DNSSEC i veien her heller.

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.