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.
BlackJack

keppla hat geschrieben:
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?
Nichts. Das war als Alternative oder Ergänzung gedacht den Haftungsauschluss in jeder Datei als Kommentar oben in den Quelltext zu schreiben. Wenn das Programm mit einer deutlichen Meldung abbricht, dann kann keiner sagen er hätte es überlesen.

Ich gehe grundsätzlich davon aus, dass man so etwas über eine entsprechende Lizenz löst. Wenn die Leute rumhacken *wollen*, dann schaffen sie das letztendlich immer irgendwie.

Wenn man seine Kunden als "Angreifer" sieht, dann hat man ein ernsthaftes Vertrauensproblem. :-)
Lambert
User
Beiträge: 40
Registriert: Montag 20. Februar 2006, 09:32

Ich denke das ich es wohl so probiere das ich auf den "fremden" Computern *.pyc erzeugen lasse und die *.py lösche.

Ich brauche kein ultra sicheres Konzept. Es darf nur nicht jeder leihe dazu in der Lage sein das Skript zu ändern.

Nochmal mein Problem. Ich drücke mich wahrscheindlich etwas unklar aus. Aber wenn man in so einem Projekt tief drin steckt verliert man halt ein bisschen den klaren blick.
In dem Projekt arbeiten etwa 40 verschiedene Firmen und Institute zusammen. Das heißt ich kann den keine Benutzerrechte auf ihren PCs vorschreiben. Aber es ist äußerst wichtig das die 40 alle mit der gleichen Version arbeiten. Den die 40 bekommen Dateien zugeschickt mit denen sie arbeiten müssen. Und einer der ersten Schritte ist mein Program. Ganz zum Schluss laufen die bearbeiteten Dateien dann wieder zusammen (großteils). Wenn jetzt jemand mit einer anderen Version schon startet, läuft es eben irgendwann aus dem Ruder.

Schöne Grüße
Lambert
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Mal blöd gefragt: warum sollten die das Programm ändern? Sind die nicht dazu angehalten und bereit zusammen zu arbeiten? Es wird einfach darauf hingewiesen, dass das Programm nicht geändert werden darf. Wenn es jemand trotzdem tut und dadurch Probleme auftreten bekommt er vom Projektleiter einen derartigen Fön, dass er sich das erstmal ne Weile merkt.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Lambert hat geschrieben:...meinem Praktikum... ...ein Forschungsprojekt... ...damit nur wir alleine Änderungen vornehmen können...
Forschungsprojekt ? Uni/FH ?

Mach es doch einfach als OpenSource! Fertig. Können alle mithelfen. Damit hättest du dir einige Probleme von der Welt geschaft...

[wiki]Warum ist quelloffene Software nicht böse[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Mein Gott nun hackt doch nicht alle auf ihm rum blos weil er eben
KEIN OPEN SOURCE WILL - was sein gutes Recht ist, ihr müsst nicht jeden totlabern mit "blah blah ... sag ihnen sie dürfens nicht blah".

ByteCode reicht völlig aus um jeden ahnungslosen auszuschliessen.
Ansonsten evtl noch ein bischer XOR.

Java ist übrigens das gleiche Problem das auch jeder den ByteCode zurücktransformieren könnte. MAschinensprache ist das schon etwas aufwendiger.

Py2Exe hilft auch recht gut gegen Ahnungslose "ich fummel mal rum" Typen.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Sorry, war nicht meine Absicht auf jemandem rumzuhacken. Ich wollte nur die von Aufwand / Erfolg - Ratio bestmögliche Lösung anbieten. Ahnungslose ausschließen zu wollen, setzt ja voraus, dass man eine gewisse Willkür unterstellt, also, dass jemand absichtlich etwas ändert, das er nicht ändern soll z.B. weil er eben keine Ahnung hat. Sowas wird bei mir vorab kommuniziert und bei Verstoß gibt's einfach nen Anpfiff, der sich gewaschen hat und fertig. Wieso soll ich mir da vorsorglich extra Arbeit machen und Code "verschleiern"? Ich gehe davon aus, dass jeder an einem reibungslosen Ablauf interessiert ist.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Besteht nicht die Möglichkeit, das Paket als Python-Egg oder zumindest Zip-Archiv zu verteilen? Ich weiß nicht, ob man für ersteres zwingend setuptools installieren oder mitliefern muss und ob letzteres (das Modul zipimport wurde mit Python 2.3 in die Standard-Lib aufgenommen, scheint aber nicht als .py im Lib-Verzeichnis zu liegen und damit einfach als Backport nutzbar zu sein) irgendwie mit 2.1 zu realisieren ist, aber es wären schon kleine Schritte, die Code-Distribution zu vereinfachen und es gleichzeitig neugierigen Leuten ein wenig schwieriger und auf den ersten Blick unverständlicher zu machen.
Antworten