Code verschleiern

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.
Lambert
User
Beiträge: 40
Registriert: Montag 20. Februar 2006, 09:32

Code verschleiern

Beitragvon Lambert » Montag 16. Oktober 2006, 15:27

hallo zusammen,

Ich habe eine Python Skript geschrieben desen Code man nicht umbedingt sehen können sollte. Hat einer von euch eine Idee wie ich den Code verschlüssle oder unauffindbar mache?

Gruß
lambert
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Beitragvon pr0stAta » Montag 16. Oktober 2006, 15:36

Generell kann man nur davon abraten Code
zu verschleiern, nicht sonderlich professionell und seriös.
wenn du aber nicht willst das jemand deinen code
sieht, gib doch einfach deine pyc Datei raus
Zuletzt geändert von pr0stAta am Montag 16. Oktober 2006, 15:36, insgesamt 1-mal geändert.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Montag 16. Oktober 2006, 15:36

das ist kein scherz:
mach es über das internet.
nehme einen server und lasse den code darauf laufen,
dann kann der anwender den code nicht sehen...
die textdatei kannst du lesen, die *.pyc oder *.pyo kann man mit der stdlib wieder in text umwandeln, und alle anderen ansätze sind auch leicht knackbar.
Anfänger1911
User
Beiträge: 62
Registriert: Donnerstag 17. November 2005, 16:25

py2exe

Beitragvon Anfänger1911 » Montag 16. Oktober 2006, 15:55

Was ist mit py2exe? Da kann man den Code doch auch nicht mehr sehn oder?
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Montag 16. Oktober 2006, 16:02

meines Wissens ist das compilieren von Pythonskripten auch wieder
Rückgängig zu machen.
Es gibt im web zb decompyle Services. Also ist das auch keine Möglichkeit.
Zudem widerspricht das meines Wissens auch der Philosophie von Python,
Code für jeden Zugänglich zu halten.
Was hast du zu verstecken !? ;)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Montag 16. Oktober 2006, 16:05

bei py2exe wird der interpreter nur in eine exe-datei gepackt,
die automatisch mit dem skript als parameter gestartet wird.
also, was ich damit sagen will, ist, dass in der exe eine text-datei mit deinem code rumschwimmt, daher muss man einfach nur an der richtigen stelle kucken...
und sonst über internet, das ist das sicherste.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Montag 16. Oktober 2006, 16:25

Um was für eine Anwendung handelt es sich denn genau? Wenn du eine schlechte Sicherheitsprüfung wie "if password == 'geheim'" eingebaut hast, ist das Problem nicht die potentielle Sichtbarkeit des Codes, sondern der "Algorithmus" dahinter ;)
Costi
User
Beiträge: 544
Registriert: Donnerstag 17. August 2006, 14:21

Beitragvon Costi » Montag 16. Oktober 2006, 16:44

<quatsch>
die frage ist welchen aufwand nhemand zur entschluessung geben wuerde,
ich denke aber, das wenn du den ganzen script in einen string speicherst, verschluesschelst und ihm zur executierung moeglichst kryptisch entschtschluesselst, das ganze ding dan mit jython in java script umwandelst, kompilierst, das ganze nochmal mit diesen shareare programmen, die angeblich sogar windows-eigene programme schneller laufen lassen durchlaufen lasst und


puuhh, sry ich blick da oben aber nicht mehr durch :lol: :lol: :lol: die kern-ausage ist aber hoffe ich ersichtlich: haaaaa sry hab jetzt vollig den faden verloren, wieder nen sinnlosen beitrag, lol
</quatsch>


wenn du uns aber genauer sagst woran es sich im script handelt, finden wir vieleicht eine alternative!
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Montag 16. Oktober 2006, 17:30

Kann es sein, daß hier motivationslos rumgerätselt wird, was Lambert eigentlich will? Haben wir solche Fragen nicht schon x-mal beantwortet?

Gruß,
Christian (der die Fragen rein rhetorisch verstanden wissen will!)

edit: Entschuldigung - hatte den falschen Namen zitiert.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Montag 16. Oktober 2006, 19:00

Costi hat geschrieben:[...] das ganze ding dan mit jython in java script umwandelst, [...]

Ja, das ist in der Tat ziemlicher Quatsch. Den klaffenden Unterschied zwischen Java (Jython: Java<->Python) und JavaScript kennst du nicht zufällig?
Lambert
User
Beiträge: 40
Registriert: Montag 20. Februar 2006, 09:32

Beitragvon Lambert » Dienstag 17. Oktober 2006, 13:16

Also um das ganze mal aufzuschlüsseln. Ich bräuchte die Verschlüsselung meines Codes weil ich ein Programm für ein, schon bestehendes, Roboterprogram in meinem Praktikum geschrieben habe. Und das geht jetzt an den "Kunden", Kunde trifft es nicht ganz weil es ein Forschungsprojekt ist. Und damit nur wir alleine Änderungen vornehmen können, und nicht jeder der 40 Beteiligten alleine, muss der Code eben geschützt werden. Das Problem ist ganz einfach: Das Simulationsprogramm ruft aus einem bestimmten Ordner heraus alle Pythonskripte auf die "__init__.py" heißen. Und nur mit Python lassen sich die speziellen Klassen des Simulationsprogrammes aufrufen. Das heißt Python ist unabdingbar. Und in eine Exe umwandeln geht auch nicht. Ich habe nämlich nur die 2.1 Version von Python zur verfügung. Die ist ein fester bestandteil des Simulationsprogrammes.

Schöne Grüße
lambert
Benutzeravatar
Blattlaus
User
Beiträge: 55
Registriert: Donnerstag 24. August 2006, 08:55

Beitragvon Blattlaus » Dienstag 17. Oktober 2006, 13:32

Die antwort ist ganz einfach: Es geht nicht

Ich seh auch das Problem nicht. Wenn die anderen da nicht dran rumpfuschen sollen, dann sagt ihnen das gefälligst. Falls es dir um sowas wie Haftung geht, dann schreib eben einen Haftungsausschluss rein, dass du lediglich für das unveränderte Programm haftest (tust du ohnehin nur).

Erläuter doch mal bitte, wieso andere die Sourcen nicht bearbeiten/sehen dürfen?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Dienstag 17. Oktober 2006, 13:38

Na ja, ich kenne schon ähnliche Probleme: In der Forschung ticken die Uhren halt manchmal anders. Aber womöglich reicht es schon alle Dateien an einem Ort zu entwickeln, an einem anderen zu installieren und prompt alle .py-Dateien zu löschen und die .pyc-Dateien weiterzuverwenden. Wenn man ein paar Skripte schreibt, die das erledigen ist auch ein Update nicht so furchtbar arbeitsintensiv.
Ich könnte mir schon vorstellen, das eine solche Strategie ausreichend ist, da es ja offenbar nicht um den Schutz proprietären Codes geht.

Gruß,
Christian
BlackJack

Beitragvon BlackJack » Dienstag 17. Oktober 2006, 14:08

Alternativ könnte man eine Prüfsumme (Module `md5` oder `sha`) über die Quellen berechnen und das auch in den Package-Code einbauen. Wenn die Prüfsummen abweichen dann einfach das Programm beenden.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Beitragvon keppla » Dienstag 17. Oktober 2006, 14:09

Lambert hat geschrieben:Und damit nur wir alleine Änderungen vornehmen können, und nicht jeder der 40 Beteiligten alleine, muss der Code eben geschützt werden.


Also, wenn ich das richtig verstehe: Du möchtest verhindern, dass eine andere funktionalität, als genau die, die du programmiert hast, von einem anderen Programm genutzt wird.

Selbst wenn du es schaffst, deine Skripte 100% unverständlich zu machen, würde dieses Ziel immer noch nicht erfüllt, da man deine Skripte ja einfach gegen komplett fremde austauschen kann.

Wenn die Annahme getroffen wird, dass die Angreifer zwar in der Lage wären, veränderungen zu machen, aber nicht genug wissen hätten, um ein eigenes Skript zu scheiben, sollte man imho auch davon ausgehen können, dass sie mit dem Unkommentierten Code, den ein disassemblieren (afaik) ergeben würde, nicht viel anfangen können.

Für die Problematik
Und damit nur wir alleine Änderungen vornehmen können, und nicht jeder der 40 Beteiligten

wurden Dateisysteme mit Rechtevergabe erfunden. Die einfache Lösung wäre, dass niemand ausser dir ein schreibrecht hat.

Wenn das Problem ist, dass das Programm vor denen, die diese Rechte vergeben, geschützt werden soll, so liegt das Problem ausserhalb der Informatik: Wenn root nicht vertrauenswürdig ist, ist man aufgeschmissen.

Alternativ könnte man eine Prüfsumme (Module `md5` oder `sha`) über die Quellen berechnen und das auch in den Package-Code einbauen. Wenn die Prüfsummen abweichen dann einfach das Programm beenden.


Was hindert den Angreifer daran, einfach diese Prüfsumme gegen eine eigene auszutauschen?

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]