Unpickle einer Datenstruktur

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

Hallo, leider komme ich nicht weiter.

Ich versuche eine Datenstruktur, die miitels Base64 kodiert wurde, zu "entpicklen" und in eine Datei zu schreiben.

Leider klappt das nicht, da es sich scheinbar um ein Objekt handelt.

Die Originaldaten stammen aus einer Datei: https://github.com/CensoredUsername/unr ... 0.2/un.rpy (https://github.com/CensoredUsername/unrpyc)

Kann jemand die Daten entschlüsseln?

Code: Alles auswählen

import pickle
import base64
import json

data = pickle.loads(base64.b64decode(b'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'))

output_file_path = 'decode.json'
with open(output_file_path, 'w', encoding='utf-8') as output_file:
    try:
        json.dump(data, output_file, ensure_ascii=False, indent=4)
    except TypeError as e:
        output_file.write(str(data))
Benutzeravatar
noisefloor
User
Beiträge: 4173
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wie kommst du denn darauf, dass es eine Datenstruktur ist? Es ist, wie du richtig sagst, ein Objekt (gut, ist alles in Python), welches die Methode `decompile_game()` hat. Das sieht man, wenn man die verlinkte Datei mit einem Texteditor öffnet.

Warum du davon ausgehst, dass man das einfach so zu JSON machen kann erschließt sich mir noch nicht.

Gruß, noisefloor
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

Hallo und danke für die Antwort.

Mir würde es auch reichen, wenn ich den Inhalt von data binär speichern könnte. Momentan wird lediglich eine Zeile ausgegeben, selbt pprint erzeugt nicht mehr. Aber anhand der Menge an Daten hätte ich vermutet, dass viel mehr enthalten ist.

LG TRM
Benutzeravatar
noisefloor
User
Beiträge: 4173
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

du verstehst da was nicht bzw. denkst zu simple... `data` _ist_ das Modul `unrypc`. Kann natürlich sein, dass in dem Modul noch irgendwelche andere Daten drin sind. Jedenfalls ist `data` _keine_ reine Datenstruktur. Irgendwie brauchst du auch renpy, so geht es jedenfalls aus der von dir verlinkten Datei `un.rpy` hervor. Um zu verstehen, was da passiert, musst du halt mal den Quellcode Schritt für Schritt nachvollziehen. `data` isoliert betrachten funktioniert jedenfalls nicht.

Gruß, noisefloor
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

Hallo noisefloor,

danke, dass du dich mit meiner Frage beschäftigst. Dadurch, dass die Daten, die mittels Base64 codiert sind, zurückgewandelt werden können, erhalte ich eine entsprechende Struktur an Daten.

Wenn ich den String (siehe oben) mittels Base64 decodiere, erhalte ich eine binäre Datei, die ca. 20kb groß ist.( Unter https://www.base64decode.org/ können Dateien decodiert werden.)

Hier ist der Anfang der Datei:

Code: Alles auswählen

m.Á¥..±”)}±½…‘Ì(¡.é±¥ˆ)‘•.½µÁÉ•ÍÌ(¡.}.½‘•.Ì)•¹.½‘”(¡`1<..ã.k.u÷.µÈs.'.Dc.”ï.§.».ƒ.O.'.…Àã.ó..E5#.;.¸˜l....ï.K.¥›.aqÇ.ås.$û.». ƒ.ç.{.T....ç.û.£..ÐÇ.L÷.³.¸..#...Àà;.ÿ...üë.ð¡ø.ÿ....s.g.×.utô..Ç.aU`lK.EO.}eeeg.eeeeg.è§.YµDØï...±7.k.Û.yåÜœ Yß...°å½ÙYW.ùg.É›.Ÿ.t?.û.{.åÏ..;.;.É«.Ô».[.±û.ß...°õ}..8]S.ˆ5ó.¿.ó.ï..ƒ.Ç...ÙW.Ï.Õ?.ƒ.¡°..´Tµo.5›.¿.û.éõ.ç.C.«.ˆ...ü
Der Inhalt der Datei müsste ja nun "ent pickle d" werden. Dabei hoffte ich, ähnlich wie bei Base64, dass ein entsprechender Text zurückgegeben werden würde.
( https://docs.python.org/3/library/pickle.html )

Vielleicht habe ich aber auch das Prinzip von pickle nicht verstanden..?

LG
Benutzeravatar
noisefloor
User
Beiträge: 4173
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Dadurch, dass die Daten, die mittels Base64 codiert sind, zurückgewandelt werden können, erhalte ich eine entsprechende Struktur an Daten.
Nein, eben nicht! Du erhältst binäre Daten, die gepickelt sind und die du mittels `pickle.loads()` entpickeln kannst. Und wenn du das machst, erhältst du ein Objekt, welches das `unrypc` Modul ist.

Das lässt sich aber auch ziemlich einfach im interaktiven Interpreter nachvollziehen:

Code: Alles auswählen

>>> import pickle
>>> import base64
>>> data = pickle.loads(base64.b64decode(b'Y3BpY........ usw usw .....'))
>>> data
<module 'unrpyc'>
>>> dir(data)
['Path', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'decompile_game', 'decompile_rpyc', 'decompiler', 'ensure_dir', 'pickle_safe_loads', 'read_ast_from_file', 'sys', 'traceback']
Im von dir verlinkten Code wird danach `data.decompile_game()` aufgerufen und dann kommt auch irgendwie renpy ins Spiel. Was dann genau passiert durchblicke ich nicht bzw. damit beschäftige ich mich auch nicht. Wenn du das verstehen willst solltest du dich halt mal mit renpy beschäftigen.

Gruß, noisefloor
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

Vielen Dank. Das hat mir schon weitergeholfen.

Wie kann ich mittels Python erkennen, um welche Art Variable es sich bei data handelt, nachdem es entpickelt wurde?

Ich komme aus der Delphi-Welt, in der Typen nahezu immer explizit deklariert werden müssen, daher ist mir dieses Verhalten in Python unbekannt.

LG TRM
Benutzeravatar
__blackjack__
User
Beiträge: 14000
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@TRM: Im Grunde zeigt noisefloor das doch. Die `repr()`-Darstellung vom entpickelten Objekt ist "<module 'unrpyc'>", was den Typ des Objekts verrät: es ist ein Modul. Man kann natürlich auch die `type()`-Funktion verwenden um den Typ zu ermitteln.

In Delphi gehört der Datentyp zum Namen, in Python gehört der Datentyp zum Wert. Und da jeder Wert einen Typ hat und den auch kennt, kann man den Typ von jedem Wert mit `type()` abfragen.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Benutzeravatar
__blackjack__
User
Beiträge: 14000
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@TRM: Ich habe mir das Projekt mal angeschaut und Frage mich, und Dich, nach dem Sinn dieses Versuchs das aus dem Base64 zu dekodieren. Der Quelltext von dem Modul ist doch Bestandteil des Projekts, warum versuchst Du den aus dem kompilierten Modul zu bekommen, statt einfach die Quelltextdatei zu verwenden‽

https://github.com/CensoredUsername/unr ... compile.py
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Benutzeravatar
DeaD_EyE
User
Beiträge: 1222
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Mutmaßung: Er versucht ein Spiel zu dekompilieren, von dem er keine Nutzungslizenz erworben hat und ausschließlich der kompilierte Bytecode vorhanden ist. Ich bewerte das aber nicht.

Was ich nicht wusste, dass man sogar Moule mit Pickle serialisieren kann. Ich vermute mal, dass es bei Renpy ein Teil der Runtime ist, um weiteren Code zu laden.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
__blackjack__
User
Beiträge: 14000
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@DeaD_EyE: Nee was da gepickled ist, ist Teil des Projekts selbst. Der Quelltext von dem Modul liegt da ja vor auf Github und auch der Code der das dann importiert, pickled, Base64 kodiert, und den Quelltext produziert der in dem Download vorhanden ist, den der OP da versucht irgendwie lesbar zu speichern.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

Hallo.

Vielen Dank an euch.

Ich hatte versucht eine Struktur zu entschlüsseln, um eine Übersetzung eines Spiels zu erstellen. Um aber an die Strings zu gelangen, müsste ich das Spiel zurückportieren.
Leider klappte es nicht so, wie gewünscht.

Bei den Untersuchungen des Codes fiel mir schon am Anfang der verschlüsselte Code auf und ich wurde neugierig, ob bzw. was das Script versucht zu verschleiern.

Es war nichts unseriöses an meiner Intention, das kann ich versprechen :-)

LG M
Benutzeravatar
DeaD_EyE
User
Beiträge: 1222
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Es war nichts unseriöses an meiner Intention, das kann ich versprechen :-)
Im Gegenteil. Wenn man Programme untersucht, dessen Quellcode man nicht hat, lernt man dadurch sehr viel.
Viele, die früher Spiele gecrackt haben, werden heutzutage vorzüglich bezahlt und sind in der IT-Security unterwegs und untersuchen Malware.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

Eine letzte Nachfrage habe ich aber bitte noch.

Was mir noch aufgefallen ist: Zurückcompilierte Dateien hatten am Ende der Datei immer eine Signatur, in der auf unpy github des Entwicklers verwiesen wurde. Das steht aber in keiner Bibliothek und ebenfalls nicht im Quelltext als String. Daher kam ich eben auf die Idee, dass im verschlüsselten Code noch Logik und Code stecken könnte.

Woher nun aber der/die Strings kommen, ist mir weiterhin ein Rätsel.

LG M
Benutzeravatar
noisefloor
User
Beiträge: 4173
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Was meinst du mit "zurückkompilieren"? Bzw. welchen Code hast du von wo nach wo zurückkompiliert?

Gruß, noisefloor
TRM
User
Beiträge: 7
Registriert: Mittwoch 2. Oktober 2024, 11:45

noisefloor hat geschrieben: Sonntag 13. Oktober 2024, 07:56 Was meinst du mit "zurückkompilieren"? Bzw. welchen Code hast du von wo nach wo zurückkompiliert?

Gruß, noisefloor
unrpyc.py decompiliert Dateien *.rpcy (quote]Unrpyc is a tool to decompile Ren'Py (http://www.renpy.org) compiled .rpyc script files. -> https://github.com/CensoredUsername/unrpyc[/quote]

Damit erhalte ich die Struktur und kann mir ein langfile erstellen und übersetzen.

LG M.
Benutzeravatar
sparrow
User
Beiträge: 4526
Registriert: Freitag 17. April 2009, 10:28

Aber tut dann nicht schon das Programm genau das, was du möchtest?
Antworten