Bjørn Mork Skrevet 16. september Skrevet 16. september 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? Siter
Bjørn Mork Skrevet 16. september Forfatter Skrevet 16. september 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. Siter
Bjørn Mork Skrevet 17. september Forfatter Skrevet 17. september 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. Siter
Anbefalte innlegg
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.