neulingsi
Goto Top

HI-FI Anlage per PowerShell Skript steuern

Hypothetische Frage:
Ich nutze eine Android App "Theater 2012" die ist von Panasonic und damit kann ich meine Hi-Fi Anlage fernsteuern.
Muss im W-LAN / LAN angemeldet sein in dem auch die Anlage erreichbar ist. Nun habe ich mir gedacht ich könnte ja die Daten Pakete die mein Handy zu meiner Anlage schickt mitschneiden und dann ein Skript erstellen was meine Aktionen mit entsprechenden Pausen ausführt und an die Anlage schickt und dieses nutzen, als dauert mein Smartphone zu nutzen.
Habe gelesen man kann mit der Fritzbox den Traffic mitschneiden und dann eine Datei erstellen, welche man dann im Wireshark auslesen, filtern usw. kann.

Ist das ganze praktikabel und "einfach" umsetzbar oder sollte ich das lieber lassen? Will keine Tage an Zeit da rein investieren...

Gruß und danke fürs lesen

Content-ID: 7889625211

Url: https://administrator.de/contentid/7889625211

Ausgedruckt am: 22.11.2024 um 21:11 Uhr

Xaero1982
Xaero1982 18.07.2023 aktualisiert um 18:06:23 Uhr
Goto Top
Was erhoffst du dir denn, dass in diesen Paketen steht?

Du kannst dir doch einfach mal Wireshark installieren und dann mal schauen, was in deinem Netz so passiert. Ich bin mir sehr sicher, dass du deine Idee ganz schnell zu den Akten legst face-smile Zumindest auf diesem Weg.

Grüße
7426148943
7426148943 18.07.2023 aktualisiert um 17:56:09 Uhr
Goto Top
Da bräuchtest du noch nicht mal mit Wireshark sniffern.
APK Datei runterladen, durch den Online Decompiler jagen, ZIP runterladen und in den Java-Quellcode schauen, da findest du auch die HTTP CGI Endpoints zum Ansprechen der Anlage 😉.
public static final String CGIURL_SENDCOMMAND_CTRL = "http://%s/WAN/%s/%s_ctrl.cgi";  
public static final String CGIURL_SENDCOMMAND_PLAY = "http://%s/WAN/%s/%s_play_tmcode.cgi";  
public static final String CGIURL_SENDCOMMAND_SOUND = "http://%s/WAN/%s/%s_chg_theater_sound.cgi";  
public static final String CGIURL_SENDCOMMAND_STRING = "http://%s/WAN/%s/%s_string_send.cgi";  
public static final String CGIURL_SENDCOMMAND_VOLUME = "http://%s/WAN/%s/%s_volume_ctrl.cgi";  
%s sind natürlich Platzhalter, die und die nötigen Parameter findest du wenn du den Code studierst.

Zeppel
NeulingSI
NeulingSI 18.07.2023 um 18:34:22 Uhr
Goto Top
@7426148943 das ist super interessant, wusste nicht das dass machbar ist. Aus welcher Datei hast du den Ausschnitt für deinen Beitrag? Habe zu viele Dateien gefunden... Java verstehe ich leider auch nicht. Aber danke für den Einblick.
7426148943
7426148943 18.07.2023 um 18:41:09 Uhr
Goto Top
DefineValues.java
NeulingSI
NeulingSI 18.07.2023 um 19:13:54 Uhr
Goto Top
Die Datei DefineValues.java habe ich unter den entpackten Daten leider nicht gefunden. Aber ich denke ich müsste dann ein Java Skript schreiben welches Bibliotheken importiert und dann eine .exe Daraus basteln ?
Mit PowerShell ist das nicht mal eben gemacht oder ?

Möchte eigentlich nur das die Anlage per remote Angeschaltet wird (was per App geht) dann auf den Digital-In Kanal
wechselt und fertig. Das ganze kostet immer Zeit wenn ich das über die App mache.

Handy rauskramen
App starten
Anlage im LAN suchen und verbinden
auf Menü Media wechseln auf EXT-IN gehn
D-IN auswählen... ( manchmal auf was anderes und wieder zurück auf D-IN / klappt manchmal nicht sofort )
niklasschaefer
niklasschaefer 18.07.2023 um 21:55:14 Uhr
Goto Top
Hi,

Mal was ganz anderes warum nicht einfach die native android APP unter dem WSL laufen lassen oder emulieren dann kannst dir den ganzen Umweg sparen.

Grüße
Niklas
7426148943
7426148943 18.07.2023 aktualisiert um 22:08:30 Uhr
Goto Top
Mit PowerShell ist das nicht mal eben gemacht oder ?
Doch , du musst aber erst selbst herausfinden welche Parameter das Skript in POST oder GET Requests erwartet das erfährst du im Quellcode den du schon selbst studieren musst.
Ich sehe jetzt nicht ein das ich da jetzt deine Arbeit machen sollte, zumal ich hier nix von Panasonic zum testen habe. Also ran an der Speck, du kannst nur davon lernen.
Du kannst natürlich auch per Wireshark sniffen und Trial and Error betreiben, zumindest was die Parameter betrifft wirst du damit schneller etwas zustande bringen wenn dir Java Code nicht liegt. Da es nur unverschlüsselte http Aufrufe sind bekommst du die ja bequem im Klartext geliefert. Sobald aber Parameter irgendwie berechnet werden müssen, weil Panasonic bspw. eine Basis-Autorisierung bei den Aufrufen implementiert hat, wirst du um ein Studium des Quellcodes nicht herum kommen wenn du was Eigenes bauen willst.
Die Datei DefineValues.java habe ich unter den entpackten Daten leider nicht gefunden.
Dann hast du sie übersehen ...
Sie liegt im Verzeichnis COM/Panasonic/AVC/DIGA/theaterremote2012/util
MirkoKR
MirkoKR 19.07.2023 um 00:32:10 Uhr
Goto Top
Hi.

Schau dir mal die mächtige Android-App "Tasker" nebst AddOns an....

... ja, man muss sich bei der Macht dieser App intensiv einarbeiten ... face-wink
Mr-Gustav
Mr-Gustav 19.07.2023 um 07:44:13 Uhr
Goto Top
Zitat von @NeulingSI:

Ist das ganze praktikabel und "einfach" umsetzbar oder sollte ich das lieber lassen? Will keine Tage an Zeit da rein investieren...


Es wird aber nichts anderes Übrig bleiben denn du versuchst ja gerade eine vorhandene Software / App via Reverse Engeneering nachzubauen bzw. Teile davon. Je nach dem was die APP da macht kann das durchaus dauern. Gibts denn für das Zeug kein Webinterface oder irgendeine Rest API ? Im Grunde läuft da ja auch nur ein Mini Linux drauf was einen Webserver bereitstellt welcher dann die Befehle der APP empfängt.

Die Alternative ist du emuliert die APP irgendwie unter Windows wenn du da nicht soviel Zeit investieren willst.

Also dann wie @7426148943 schon sagt ran an den Speck und losgetestet. Wenn das alles nur HTTP ist dann sollte das u.U relativ einfach sein.

Ach ja ein Tipp noch:
Bau das Setup so einfach wie möglich auf. Also ich meine damit das ich ein Netzwerk nur benötigten Komponenten aufbauen würde und nicht das komplette Netzwerk verwenden würde. Sprich nur den Panasonic, WLAN AP/Router/Fritzbox/wasauchimmer, Handy und dann noch den PC. Das ganze ist dann deulich einfacher und du senkst damit die Chanche etwas im Wireshark zu übersehen was da so an Paketen einie kommt. Das wird alleine bei den 3/4 Geräten schon eine Menge sein und du sorgst dafür das eventuelle Störquellen minimiert werden.
MirkoKR
MirkoKR 19.07.2023 um 08:22:37 Uhr
Goto Top
Zitat von @Mr-Gustav:

Es wird aber nichts anderes Übrig bleiben denn du versuchst ja gerade eine vorhandene Software / App via Reverse Engeneering nachzubauen bzw. Teile davon. Je nach dem was die APP da macht kann das durchaus dauern.

Doch, möglich!
Prinzipiell sendet die App ja auch nur Befehle übers Netz ...

... die Frage ist: prpiäteres [verschlüsseltes] Protokoll oder einfach per http[s] und z.B. JSON?

Letzteres ließe sich mitlesen und nachbauen ...
Mr-Gustav
Mr-Gustav 19.07.2023 um 09:19:14 Uhr
Goto Top
Ja schreibe ich ja. Reverse Engeniering. Dauert halt bis man alles hat. Versuch und Irrtum. Wenn dann da irgendeine Prop.Verschlüsselung drinne ist dauert es eben länger aber es gibt fast nichts was man nicht herausfinden kann.
Alles eine Frage der Zeit und Geduld. Und Zeit will der TO so wie er schreibt ja scheinbar keine Investieren. Das wird er aber müssen es sei denn jemand ist hier so freundlich und liefert Ihm die Lösung frei haus.

Wenns nur HTTP Requests sind dann reicht ja eigentlich eine 5 Minuten ( wenn überhaupt so lange ) Wireshark Aufzeichnung in der eben dann die Notwendigen Befehle ausgeführt werden. Dann die URL kopieren und einfach als "Webseiten Aufruf" über einen Browser oder Script seiner Wahl abfeuern und gut ist. Dann sollte das ja eigentlich funktionieren. Ich glaube aber nicht das das so einfach ist denn die App / der Webserver braucht ja irgendeine Rückmeldung bzw. muss ja erkennen was aktuell ist somit denke ich das hier ggf. ein Zähler wird da sicher integriert sein oder etwas ähnliches in Sinne von Zeitstempel. Der Webserver muss ja die Unterschiedlichen Anfragen erkennen und zuordnen können und hier könnte dann das Problem lauern denn dieses Verfahren wird der Hersteller wahrsch. nicht Öffentlich bekannt machen denn er will ja das man seine APP nutzt und nicht eben irgendjemand eine Universal App schreibt und der Hersteller sich damit die Mühe hätte sparen können.
MirkoKR
MirkoKR 19.07.2023 aktualisiert um 10:35:06 Uhr
Goto Top
... Wenn man basteln will könnte man auch eine ESP32, etc auf den -vermutlich - I2C, SPi - Bus etc aufschalten .. fast alle modernen Geräte nitzen diesen (Anleitung,/Internet)

Der ist in der Regel unverschlüsselt und es gibt viele Programmieranleitungen. ...
Mr-Gustav
Mr-Gustav 19.07.2023 um 10:09:47 Uhr
Goto Top
Dann könnte man sich damit ein "eigenes" Fernbedie nungswebdings" bauen was man dann nach belieben ansteuern könnte.