Python sourcecode packer...

Du hast eine Idee für ein Projekt?
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab u.a. http://stackoverflow.com/questions/6882 ... urce-files gefunden und auch sowas wie https://github.com/liftoff/pyminifier

Mit pyminifier kann man u.a. den code zusammen pressen... Beispiel: https://github.com/liftoff/pyminifier/b ... README.rst

Nun Frage ich mich, ob man das nicht weiter auf die Spitze treiben kann.
Man könnte halt ein Wöterbuch machen, mit allen vorkommenden Namen und auch allen Python statements/builtins usw.
Aber anders als beim Pyminifier und dem darin erhaltenen "obfuscator", soll die Namen auch wieder zurück konvertiert werden können.

Eigentlich müßte es doch möglich sein, das AST modul zu verwenden und so einen speziellen Kompressor/Dekompressor schreiben.
Sowas wie Python-Bytecode, der sich allerdings wieder zurück übersetzten läßt zum normalen Code.

Evtl. könnte man darauf verzichten, das beim Dekomprimieren 100% der original code raus kommt. Sondern einer der nach PEP-8 Formatiert ist. Vielleicht https://github.com/google/yapf dazu ansehen?

Ich frage mich allerdings, ob man damit besser sein kann, als eine generischer zlib:deflate oder LZMA Kompressor?!? (Wobei man die ja auch zusätzlich anwenden könnte)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Das mit dem Wörterbuch mit allen Namen ist doch fast so etwas wie ein normaler Kompressionsalgorithmus. So etwas sollte eigentlich immer ineffizienter sein als einen generischen Algorihmus auf den Quelltext loszulassen der das gleiche macht. Ausser man hat im Algorithmus ein vorbelegtes Wörterbuch speziell für Python.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja, da hast du recht.

Wenn dann sollte das "Python-Kompressions-Wörterbuch" ein Bestandteil vom Packer sein. So das es nicht zu jedem Archiv mitgeführt werden muß.

Interessant wäre es aber auch, wie viel größer das Archiv wäre, wenn das Wörterbuch immer dabei ist. Muß dann ja auch nur die wirklich verwendeten Einträge beinhalten.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

@jens: Wenn es nur die verwendeten Worte enthält, dann braucht man ja keins vorbereitet fertig haben, denn die verwendeten Worte kann man beim komprimieren ja ermitteln. Und dann ist es letztendlich doch wieder ein generischer Algorithmus bzw. wäre besser einer.
Antworten