FHEM Forum

Verschiedenes => Off-Topic => Thema gestartet von: DeeSPe am 03 Mai 2019, 09:19:54

Titel: Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 03 Mai 2019, 09:19:54
Hallo,

erst einmal vorweg, ich bin kein gelernter Programmierer, sondern habe mir alles bisher benötigte selbst erlernt.

Mittlerweile habe ich mich ganz gut in die Perl-Modulprogrammierung für FHEM eingearbeitet und schon einige Module geschrieben.
Nun möchte ich möglicherweise ein neues Modul schreiben, benötige dafür aber etwas Unterstützung.

Kurz: ich habe in diesem Jahr ein Gartenbewässerungssystem mit "Rain Bird" Komponenten installiert und möchte dieses nun möglichst in FHEM haben.
Bisher gibt es kein FHEM Modul dafür.
Es gibt allerdings ein Python Skript dafür, aber leider habe ich von Python keinerlei Ahnung und möchte es auch nicht unbedingt noch zusätzlich lernen müssen.
Das Skript ist zu finden unter https://github.com/jbarrancos/pyrainbird .
Ganz konkret geht es mir dabei um den Teil "class RainbirdEncryption:" und dessen Funktionen.

Ich habe bereits ein paar API-Requests der Smartphone App mitgesnifft.
Der Header lässt sich damit auch auslesen, allerdings ist der Body wohl verschlüsselt und dieses müsste sich mit "def decrypt" des genannten Skipts entschlüsseln lassen.
Ich verstehe nur absolut nicht was dort in dieser Funktion passiert und habe dementsprechend auch keine Ahnung wie ich das nach Perl übersetzen kann.

Gibt es jemand der/die mir helfen kann die Funktionen "def decrypt" und "def encrypt" zu verstehen und nach Perl zu übersetzen?

Vielen Dank im Voraus.

Gruß
Dan

P.S. Wie kommt man eigentlich überhaupt auf die entsprechende Ver- und Entschlüsselungsmethoden wenn es keine API Dokumentation gibt?
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: Wzut am 03 Mai 2019, 21:22:18
Ich hatte bei meinem 38_BEOK.pm ein ähnliches Problem , Quellcode in Python , AES Verschlüsselung und Null Ahnung von Python.
Läuft das Python Teil bei dir, so das man vorher / nachher in eine Datei schreiben kann und das dann mit der Umsetzung in Perl vergleichen kann ?
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 06 Mai 2019, 10:56:12
Moin Wzut,

danke für Deine Antwort!
Ehrlich gesagt habe ich das Python Skript bisher nicht gestartet/laufen lassen.
Wollte mich, wie gesagt, nicht groß mit Python beschäftigen müssen.

Gruß
Dan
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: Wzut am 06 Mai 2019, 13:50:22
Kann ich verstehen, allerdings war das loggen der Zwischenwerte und vergleichen mit meinen Werten aus Perl für mich der einzige Weg.
Und solange jetzt hier niemand auftaucht der das Kaninchen aus dem Hut zieht und dir sagt so geht das von Python nach Perl befürchte ist wirst du dich doch etwas mit dem Ding beschäftigen müssen. Ich würde dir ja gern helfen und das Ding mal anwerfen, aber ohne echtes RainBird GW als Ziel ? 
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 06 Mai 2019, 14:42:38
Habe mir das Skript jetzt mal heruntergeladen.
Als Python Ungelehrter weiß ich leider noch nicht einmal was ich jetzt mit den heruntergeladenen Dateien mache.
Müssen die irgendwo hin kopiert werden? Wie starte ich das Ganze dann?
Ich habe die "Befürchtung" dass ich um einen Python-Grundkurs nicht herumkomme! Schade das wollte ich eigentlich vermeiden.

Gruß
Dan
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: Wernieman am 06 Mai 2019, 15:15:03
Naja .. starten wie in der Readme (fast) beschrieben:
python Das_Tolle_Script

In dem Script wird eine JSON zuammengebaut und per Passwort "verschlüsselt", das senden passiert in der Routine send_rainbird_command
Zitatsenddata = self.rainbirdEncryption.encrypt(rbdata ,self.rainbirdPassword)
Das wird dann Direkt auf Dein "Gerät" gesendet
Zitath = http.client.HTTPConnection(self.rainbirdServer,80,timeout=20)
                    h.request("POST","/stick",senddata,head)
                    resp = h.getresponse()
Scheinbar ist das Ergebnis reines JSON, d.h. ohne weitere Ver/Entschlüsselung zu bearbeiten.

Nur wie mein Vorredner, habe so ein gerät nicht und obiges ist reine trockene Analyse des Codes. Das größte Problem ist die Perl Routine zu finden, die Pyhton encrypt entspricht ....
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: KölnSolar am 06 Mai 2019, 15:34:53
ZitatDas größte Problem ist die Perl Routine zu finden, die Pyhton encrypt entspricht ....
Könnte das evtl. Crypt::Rijndael sein ?  :-\ Das hatte zumindest Raymund damals für die Übersetzung eines Samsung-Python-Skripts nach Perl benutzt.
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 06 Mai 2019, 15:41:12
Zitat von: Wernieman am 06 Mai 2019, 15:15:03
Naja .. starten wie in der Readme (fast) beschrieben:
python Das_Tolle_Script

In dem Script wird eine JSON zuammengebaut und per Passwort "verschlüsselt", das senden passiert in der Routine send_rainbird_commandDas wird dann Direkt auf Dein "Gerät" gesendetScheinbar ist das Ergebnis reines JSON, d.h. ohne weitere Ver/Entschlüsselung zu bearbeiten.

Nur wie mein Vorredner, habe so ein gerät nicht und obiges ist reine trockene Analyse des Codes. Das größte Problem ist die Perl Routine zu finden, die Pyhton encrypt entspricht ....

Hallo Wernieman,

soweit hatte ich das auch schon verstanden dass dort JSON (mit Header) aufgebaut und gesendet bzw. empfangen wird.
Sofern ich heraus bekomme wie ich dieses encrypt/decrypt hin bekomme sollte der Rest eigentlich kein großes Problem mehr sein.

Werde heute Abend mal in Ruhe testen ob ich das Python Skript zum Laufen bekomme.

Zitat von: KölnSolar am 06 Mai 2019, 15:34:53
Könnte das evtl. Crypt::Rijndael sein ?  :-\ Das hatte zumindest Raymund damals für die Übersetzung eines Samsung-Python-Skripts nach Perl benutzt.

Hab leider keine Ahnung, kenne mich mit Verschlüsselung nicht aus.

Gruß
Dan
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: dkreutz am 06 Mai 2019, 19:13:05
Zitat von: KölnSolar am 06 Mai 2019, 15:34:53
Könnte das evtl. Crypt::Rijndael sein ?  :-\ Das hatte zumindest Raymund damals für die Übersetzung eines Samsung-Python-Skripts nach Perl benutzt.

Ja, pyrainbird verwendet Crypto.Cypher.AES und Crypt::Rijndael ist die Perl-Implementierung von AES.
Die Verschlüsselungsmethode ist AES-Mode CBC, Blocksize 16 (Standard), Schlüssellänge 128Bit.
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 06 Mai 2019, 21:54:41
Zitat von: dkreutz am 06 Mai 2019, 19:13:05
Ja, pyrainbird verwendet Crypto.Cypher.AES und Crypt::Rijndael ist die Perl-Implementierung von AES.
Die Verschlüsselungsmethode ist AES-Mode CBC, Blocksize 16 (Standard), Schlüssellänge 128Bit.

Danke für die Info, das schaue ich mir mal an.

Gruß
Dan
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: KölnSolar am 06 Mai 2019, 23:09:18
Dann kannst Du ins 70_SamsungAV gucken, wie es in Perl genutzt wird.
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: mumpitzstuff am 06 Mai 2019, 23:40:17
https://repl.it/repls/TrickyImpracticalObjectmodel (https://repl.it/repls/TrickyImpracticalObjectmodel)

iv (init vector) must du noch durch irgend etwas konstantes ersetzen, da sonst jedes encrypt andere ergebnisse liefert.
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: Wzut am 07 Mai 2019, 06:32:28
Zitat von: KölnSolar am 06 Mai 2019, 23:09:18
Dann kannst Du ins 70_SamsungAV gucken, wie es in Perl genutzt wird.
oder wie bereits oben geschrieben in 38_BEOK oder in 38_Broadlink wo ich damals abgeschrieben habe :)
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 07 Mai 2019, 13:28:03
Vielen Dank erst mal für Eure Hilfe.
Mal sehen ob ich aus den neuen Informationen etwas passendes zusammengebastelt bekomme.

Gruß
Dan
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: FosCo am 29 Oktober 2019, 16:23:29
Hi, bist du mit dem Rainbird Steuergerät weitergekommen? Ist das ein rszxe?
Titel: Antw:Entwicklungshilfe erbeten bei Übersetzung von Python Funktionen nach Perl
Beitrag von: DeeSPe am 29 Oktober 2019, 16:37:19
Nein, hatte leider (durch andere Verpflichtungen) noch keine Zeit dort weiter zu forschen und zu entwickeln.
Ich habe eine RZXe Steuereinheit.

Gruß
Dan