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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7889625211
Url: https://administrator.de/contentid/7889625211
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
13 Kommentare
Neuester Kommentar
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 😉.
%s sind natürlich Platzhalter, die und die nötigen Parameter findest du wenn du den Code studierst.
Zeppel
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";
Zeppel
DefineValues.java
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
Zitat von @NeulingSI:
Ist das ganze praktikabel und "einfach" umsetzbar oder sollte ich das lieber lassen? Will keine Tage an Zeit da rein investieren...
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.
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.
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 ...
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.
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.