Wie Schütze ich Python-code?
Ich entwickle eine software in Python, das wird verteilt an meine Arbeitgeber und Kunden. Mein Arbeitgeber will beschränken Sie die Nutzung der software mit einer zeitlich eingeschränkten Lizenz-Datei.
Wenn wir verteilen den .py-Dateien oder sogar .pyc Dateien, die es leicht sein wird zu (Dekompilierung) den code entfernen, der prüft die Lizenz-Datei.
Ein weiterer Aspekt ist, dass mein Arbeitgeber nicht möchten, dass der code gelesen werden, die von unseren Kunden, die befürchten, dass der code gestohlen werden kann oder zumindest die "neuen Ideen".
Ist es ein guter Weg, um dieses problem zu umgehen? Vorzugsweise mit einem off-the-shelf-Lösung.
Die software läuft auf Linux-Systemen (also ich glaube nicht, py2exe wird den trick tun).
so: stackoverflow.com/questions/15955948/...
InformationsquelleAutor Jordfräs | 2008-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python, der einen byte-code kompiliert interpretierte Sprache ist, ist sehr schwer zu sperren. Selbst wenn Sie eine exe-packager wie py2exe, das layout, die ausführbare Datei ist bekannt, und die Python byte-codes, die gut verstanden werden.
In der Regel in Fällen wie diesem, müssen Sie einen Kompromiss. Wie wichtig ist es wirklich zum Schutz der code? Gibt es echte Geheimtipps drin (wie ein Schlüssel für die symmetrische Verschlüsselung von Banküberweisungen), oder sind Sie einfach nur paranoid? Wählen Sie die Sprache, mit der Sie entwickeln das beste Produkt Schnellste, und realistisch sein, wie wertvoll Ihre Ideen sind.
Wenn Sie sich entscheiden, Sie wirklich brauchen, um die Lizenz durchzusetzen prüfen Sie fest, schreiben Sie es als ein kleines C-Erweiterung, so dass der Prüfung der Lizenz-code kann extra-hart (aber nicht unmöglich!) reverse Engineering, und lassen Sie die Masse Ihrer-code in Python.
Ja, es würde, je nachdem, wo die Lizenz-Prüfung durchgeführt wird. Wenn es viele Aufrufe an die Erweiterung, könnte es schwierig sein, zu beseitigen. Oder Sie können verschieben einige andere wichtige Teil der Anwendung in der Prüfung der Lizenz, so dass die Beseitigung der Anruf der Erweiterung, die Krüppel, die app.
Wirklich, all diese Arbeit ist nicht zum verhindern von Modifikation, sondern um die Erhöhung Ihrer Schwierigkeit, so dass es nicht mehr lohnt. Alles kann nachgebaut und modifiziert, wenn es genug nutzen.
Conrad: Nicht, wenn im code überprüfen der Lizenz verbirgt sich die Funktionalität auch. E. g.
mylicensedfunction(licenseblob liblob, int foo, int bar, std::string bash)
Ich denke, die clevere Art und Weise implementiert kritische Teile in C und implementieren alle Lizenz-überprüfung Zeug dort. (Ich verwende die hardware-dongle kann mit der Umsetzung einiger der Berechnung drin. So ist es fast unmöglich, reverse es zurück.)
InformationsquelleAutor Ned Batchelder
"Ist es eine gute Möglichkeit, dieses problem zu behandeln?" Nein. Nichts kann der Schutz gegen reverse-engineering. Sogar die firmware auf DVD-Maschinen wurde reverse-engineered und AACS Encryption key ausgesetzt. Und das ist trotz des DMCA zu machen, dass eine kriminelle Handlung.
Da keine technische Methode können aufhören, Ihre Kunden aus der Lektüre Ihrer code, Sie gelten handelsübliche Methoden.
Lizenzen. Verträge. Bedingungen und Konditionen. Funktioniert dieser immer noch, auch wenn die Leute Lesen können der code. Beachten Sie, dass einige Ihrer Python-basierten Komponenten kann verlangen, dass Sie Gebühren bezahlen, bevor Sie verkaufen, software verwenden diese Komponenten. Auch einige open-source-Lizenzen untersagen Ihnen, von denen die Quelle oder der Ursprung dieser Komponente.
Bieten einen erheblichen Wert. Wenn Ihr Zeug ist so gut-zu einem Preis, die schwer zu verweigern-es gibt keinen Anreiz, Zeit und Geld zu verschwenden reverse engineering nichts. Reverse engineering ist teuer. Machen Sie Ihr Produkt etwas weniger teuer.
Bieten upgrades und Verbesserungen eingeführt, die ein reverse-engineering für eine schlechte Idee. Wenn die nächste Version bricht Ihre reverse engineering, gibt es keinen Punkt. Dies kann durchgeführt werden, um absurde Extreme, aber Sie sollten bieten neue features, die die nächste Veröffentlichung mehr Wert ist als reverse-engineering.
Bieten die Anpassung an Preise so attraktiv, dass Sie lieber bezahlen, die Sie aufbauen und unterstützen der Erweiterungen.
Verwenden Sie einen Lizenz-key abgelaufen ist. Das ist grausam, und geben Sie einen schlechten Ruf, aber es macht sicherlich Ihre software aufhören zu arbeiten.
Bieten Sie als web-service. SaaS beinhaltet keine downloads zu Kunden.
Das ist wahr. Reverse engineering ist machbar, aber teuer in den meisten Situationen. @S. Lott, ich glaube Punkt 6 hält mehr Bedeutung auf der Grundlage der Frage. Wenn der source code wirklich geschützt werden muss, dann sollte es remote aus der end-Benutzer.
Frage: "ist es eine gute Möglichkeit, meine Familie zu schützen und mich vor der Ermordung durch die Eindringlinge in unseren Schlaf?" Internet: "Nein. Jeder kann eine bekommen, und keine Wohnung sind, ist immer zu 100 Prozent undurchdringlich. Eine Sterbliche menschliche Familie ist das falsche Werkzeug für den job."
InformationsquelleAutor S.Lott
Python ist nicht das Werkzeug, das Sie brauchen
Müssen Sie verwenden das richtige Werkzeug, das richtige zu tun, und Python nicht dazu geeignet ist verschleiert. Es ist das Gegenteil; alles ist zu öffnen oder einfach zu zeigen oder zu ändern in Python, weil die Sprache der Philosophie.
Wenn Sie wollen etwas, das Sie nicht sehen können durch, such dir ein anderes tool. Dies ist nicht eine schlechte Sache, es ist wichtig, dass viele verschiedene tools existieren, die für unterschiedliche Verwendungen.
Verschleierung ist wirklich schwer
Selbst kompilierte Programme können von reverse Engineering, also denkt nicht, dass Sie können vollständig schützen Sie jeden code. Sie können analysieren obfuscated PHP, brechen Sie die flash-Verschlüsselung, Schlüssel, etc. Neuere Windows-Versionen sind gerissen, jedes mal.
Dass eine rechtliche Voraussetzung ist ein guter Weg zu gehen
Können Sie nicht verhindern, dass sich jemand missbraucht dein code, aber Sie können leicht entdecken, wenn es jemand tut. Daher, es ist einfach nur ein casual-rechtliche Frage.
Code-Schutz ist überbewertet
Heutzutage, business-Modelle neigen zu gehen für den Verkauf von Dienstleistungen anstelle von Produkten. Sie können keine Kopie einer service -, Piraten -, noch stehlen. Vielleicht ist es Zeit zu prüfen, mit dem Fluss zu gehen...
Wie wird man "leicht zu entdecken", wenn jemand missbraucht meinen code?
Gute Antwort, aber "casual-rechtliche Frage"? Wirklich? Wo wohnst du, dass Sie beliebiger rechtliche Probleme, die sind casual?
Also welche Programmiersprache?
Ich denke, wenn wir eine Frequenz - wie oft teuren obfuscated code gehackt wird - könnten wir sagen, über die Praktikabilität der Verwendung von Python und obfuscated code.
InformationsquelleAutor e-satis
Python kompilieren und verteilen von binaries!
Vernünftige Idee:
Verwenden Cython, Nuitka, Schuppen Haut oder etwas ähnliches zum kompilieren von python-in C-code, dann verteilen Sie Ihre app als python-binary-Bibliotheken (pyd) statt.
So, keine Python (byte -) code übrig ist, und Sie haben getan, alle angemessenen Betrag von obscurification jemand (d.h. Ihr Arbeitgeber) könnte erwarten, dass aus dem normalen Code, denke ich. (.NET oder Java weniger sicher als in diesem Fall, dass der bytecode ist nicht verschleiert und lassen sich relativ leicht dekompiliert werden in angemessener Quelle.)
Cython wird immer mehr und mehr Kompatibilität mit CPython, also denke ich es sollte funktionieren. (Ich bin eigentlich angesichts dieser für unser Produkt.. Wir sind bereits einige Drittanbieter-Bibliotheken wie pyd/dlls, damit der Versand unserer eigenen python-code in Binär-Form ist nicht ein übermäßig großer Schritt für uns.)
Sehen In Diesem Blog-Post (nicht von mir) für ein tutorial auf, wie es zu tun. (thx @hithwen)
Verrückte Idee:
Man wohl Cython zu speichern, die C-Dateien separat für jedes Modul, dann nur verketten Sie alle und bauen Sie mit schweren inlining. So, Ihr Python-Modul ist ziemlich monolithische und schwer zu chip mit den gängigen tools.
Jenseits crazy:
Könnten Sie in der Lage sein zu bauen, eine einzige ausführbare Datei, wenn Sie einen link zu (und optimieren) die python-Laufzeitumgebung und alle libraries (dlls) statisch. So, es würde sicher schwierig sein, zum abfangen von aufrufen an/aus python und unabhängig von framework-Bibliotheken, die Sie verwenden. Dies kann nicht getan werden, wenn Sie mit LGPL code obwohl.
Würde das kompilieren mit cython Arbeit mit python 3.4 Django-app, oder könnte es gemacht werden, zu arbeiten, ohne einen riesigen Aufwand?
stackoverflow.com/questions/32577864/...
FWIW, IMHO kompilieren zu Binärdateien ist ein schöner Kompromiss zwischen Verkauf all deine Geheimnisse und versucht sich zu schützen vor der NSA-Klasse reverse engineering. Esp, wenn Sie eine große python-code-Basis und Gründe, um paranoid zu werden. 😉
hithwen POST ist jetzt ungültig.
InformationsquelleAutor Macke
Ich verstehe, dass Sie möchten, dass Ihre Kunden, die auf die power von python, aber nicht wollen, setzen Sie den source-code.
Hier sind meine Vorschläge:
(a) Schreiben Sie die kritischen Teile des Codes als C-oder C++ - Bibliotheken, und verwenden Sie dann SIP oder Schluck machen, dass das C/C++ - APIs nach Python namespace.
(b) Verwenden Sie cython statt Python
(c) In (a) und (b), sollte es möglich sein verteilen die Bibliotheken lizenziert binäre mit einer Python-Schnittstelle.
Ich gab einen Blick auf die von Schuppen der Haut, wie vorgeschlagen, durch TyPyPy und es scheint wirklich gutes Zeug!
InformationsquelleAutor bhadra
Ist Ihrem Arbeitgeber bekannt, dass er "stehlen" kann wieder alle Ideen, die andere Leute aus deinem code? Ich meine, wenn Sie Lesen können, Ihre Arbeit, so können Sie Ihre. Vielleicht auf der Suche, wie Sie können von der situation profitieren, würde die Ausbeute eine bessere Rendite für Ihre Investition, als fürchten Sie, wie viel Sie verlieren könnten.
[EDIT] Antwort auf nicks Kommentar:
Nichts gewonnen und nichts verloren. Der Kunde hat, was er will (und dafür bezahlt da er ja die ändern sich). Da er nicht loslassen ändern, es ist, als ob es nicht geschehen für alle anderen.
Nun veräußert der Kunde die software, die Sie haben, ändern Sie den copyright-Hinweis (welche illegal sind, so können Sie Klagen und gewinnt -> einfacher Fall).
Wenn Sie nicht ändern Sie den copyright-Hinweis, der 2nd-level-Kunden werden feststellen, dass die software von Ihnen stammt original und Frage mich was Los ist. Die Chancen sind, dass Sie in Kontakt mit Ihnen und so lernen Sie über den Verkauf Ihrer Arbeit.
Wir haben wieder zwei Fälle: Den ursprünglichen Kunden verkauft, nur noch wenige Exemplare. Das bedeutet, dass Sie nicht viel Geld sowieso, also warum die Mühe. Oder Sie verkauft in der Lautstärke. Das bedeutet bessere Chancen für Sie, zu erfahren, was Sie tun und tun Sie etwas über es.
Aber am Ende, die meisten Unternehmen versuchen zu erfüllen, um das Gesetz (sobald Ihr Ruf ist ruiniert, es ist viel schwieriger, Geschäfte zu machen). So werden Sie nicht stehlen Ihre Arbeit, sondern arbeiten mit Ihnen, um Sie zu verbessern. Also, wenn Sie die Quelle (mit a-Lizenz, die Sie schützt vor einfachen Wiederverkauf), sind die Chancen, dass Sie werden drücken Sie einfach wieder Veränderungen, die Sie vorgenommen, da die sicherstellen werden, dass die änderung in der nächsten version, und Sie nicht haben, um es aufrecht zu erhalten. Das ist win-win-Situation: Sie bekommen Veränderungen, und Sie können die änderung vornehmen, selbst wenn Sie wirklich dringend brauchen, auch wenn Sie nicht dazu bereit sind, fügen Sie es in das offizielle release.
Ändert nichts an der situation in keiner Weise. Siehe meine edits.
+1 für das stehlen von Ideen zurück. Warum beschränken Sie Ihre client-portion power für Ihr in-house-Lösungen, wenn Sie konnte sehen, wie die anderen verbessern Ihre Lösung und entsprechend verbessern Ihr eigenes Produkt? "Wenn Sie einen Apfel haben und ich einen Apfel haben und wir diese äpfel tauschen, dann werden du und ich noch jeder einen Apfel haben. Aber wenn du eine Idee hast und ich eine Idee und wir tauschen diese Ideen aus, dann wird jeder von uns zwei Ideen."
Was, wenn einer Ihrer Kunden re-releases der code oder die Ideen, die kostenlos und anonym? Sie können nicht sagen, wer es getan hat, und Klagen Sie, und weil Sie das nicht bekommen, profitiert Sie es, Sie werden nicht so gut. Dies wird ruine Ihre Arbeit, während einer von Ihnen die Kunden zahlten nur der Basis-Preis für es. (natürlich nur funktioniert, wenn Sie mehr als ein Kunde für die Lösung)
Wie genau würde das funktionieren? Das hochladen Ihrer arbeiten über das Internet nicht Schaden. Es würde beginnen, Sie zu schädigen, wenn eine Menge Leute würden es finden UND die Leute würden zahlen Kunden statt. Code-Diebstahl ist ein Mythos. "Mein wissen ist frei, meine Zeit ist teuer" (nicht sicher, wer sagte, dass).
InformationsquelleAutor Aaron Digulla
Haben Sie schon einen Blick auf pyminifier? Es tut minifizieren, verschleiern und komprimieren Python-code. Der Beispiel-code sieht ziemlich böse für casual reverse engineering.
Das einzige, was dieses Paket verwaltet zu erreichen, ist zu täuschen 'obfuscator' , der code ist verschleiert.
InformationsquelleAutor Lmwangi
Verlassen Sie sich nicht auf die Verschleierung. Da hast Du richtig geschlossen, es bietet einen sehr begrenzten Schutz.
UPDATE: Hier ist ein link zum paper die reverse-engineered obfuscated python-code in der Dropbox. Die Ansatz - opcode-remapping ist eine gute Barriere, aber klar, es kann besiegt werden.
Statt, wie viele Plakate erwähnt, es machen:
Alternativ als kick-ass Python IDE-WingIDE hat: verschenken Sie den code. Das ist richtig, geben Sie den code entfernt hast und die Leute kommen zurück für upgrades und support.
InformationsquelleAutor Konrads
Versand .pyc Dateien hat seine Probleme - Sie sind nicht kompatibel mit anderen python-version als die python-version Sie erstellt wurden, was bedeutet, müssen Sie wissen, welche python-version ausgeführt wird, auf die Systeme, die das Produkt ausgeführt wird. Das ist eine sehr begrenzende Faktor.
InformationsquelleAutor Erik Forsberg
In einigen Fällen kann es möglich sein, sich zu bewegen (alle, oder zumindest ein wichtiger Teil) von der software zu einem Webdienst, der Ihrer Organisation hostet.
So, die Lizenz-Prüfungen können durchgeführt werden, in der Sicherheit der eigenen server-Raum.
Achten Sie darauf, dass, wenn Sie Ihre Lizenzierung webserver ausfällt oder das Kunden-Internetzugang down ist, Ihr Kunde wird nicht glücklich sein, dass Sie nicht ausführen können, Ihren Betrieb, weil der Verlust des Zugangs zu Lizenzierung Prüfungen.
Es gibt Lösungen für dieses. Sie könnte die Umsetzung einer lokalen key-Mechanismus, der es erlaubt temporären Zugang, wenn die software nicht erreichen kann, der remote-server-Lizenzierung.
Das bekommt Sie zurück, wo Sie begann - wie um Sie zu schützen, dass code. Um sicherer zu sein, müssen Sie einige der wichtigsten Funktionen auf Ihrem eigenen server, so ersetzt es würde bedeuten, erheblich Aufwand (an welcher Stelle, warum nicht einfach starten Sie eine open-source-Konkurrent?)
InformationsquelleAutor Oddthinking
Obwohl es keine perfekte Lösung, kann Folgendes getan werden:
Ob der Aufruf der native code entfernt, das Programm würde nicht starten sowieso. Wenn es nicht entfernt wird, dann ist die Lizenz durchgesetzt werden.
Obwohl dies nicht ein cross-Plattform oder eine Reine Python-Lösung, es wird funktionieren.
So? Verwendung von RSA zum signieren der Lizenz und lassen Sie Sie brute-force Ihren privaten Schlüssel haben, sagen, bestehend aus 1024 bits. Es ist möglich, aber nimmt eine Menge Zeit... und damit Geld.
InformationsquelleAutor
Den zuverlässigen einzige Weg, Sie zu schützen code, um Sie auf einem server, den Sie Steuern und bieten Ihren Kunden mit einem client die Schnittstellen mit dem server.
InformationsquelleAutor Alex Coventry
Ich denke, es gibt eine weitere Methode zum Schutz Ihrer Python-code; Teil der Verschleierung Methode. Ich glaube, es war ein Spiel wie Mount and Blade oder etwas, dass sich verändert und neu kompiliert haben, Ihre eigenen python-interpreter (das original-interpreter, die ich glaube, ist open source) und wurde nur der OP-codes im OP-code Tabelle anders zu sein, dann ist die standard-python-OP-codes.
Also das python-Quelltext ist unverändert, aber die Dateiendungen der *.pyc Dateien sind anders und die op-codes nicht übereinstimmen, um die öffentlichkeit python.exe Dolmetscher. Wenn Sie überprüft die Spiele-Daten-Dateien alle Daten, die in Python-source-format.
Alle möglichen fiesen tricks kann getan werden, um Durcheinander mit unreifen Hacker auf diese Weise. Stoppen einer Reihe von unerfahrenen Hackern ist es einfach. Es ist die professionelle Hacker, die werden Sie wahrscheinlich nicht schlagen. Aber die meisten Unternehmen nicht Schritt halten können, pro-Hacker auf die Mitarbeiter lange ich mir das vorstellen (wahrscheinlich, weil die Dinge gehackt). Aber unreife Hacker sind alle über dem Platz (zu Lesen als neugierig, IT-Personal).
Könnten Sie zum Beispiel in einer modifizierten Dolmetscher, erlauben es zu prüfen, für bestimmte Kommentare oder doc-strings im source. Sie könnten spezielle OP-codes für solche code-Zeilen. Zum Beispiel:
OP 234 ist für die source-Zeile "# Copyright schrieb ich hier"
oder compile diese Zeile in op-codes, die äquivalent zu "if False:" if "# Copyright" fehlt. Im Grunde deaktivieren einen ganzen block von code für das, was scheint, einige obskure Grund.
Einen Anwendungsfall, in dem kompilieren eines modifizierten interpreter kann möglich sein wird, wo Sie nicht schreiben, die app, die app ist groß, aber Sie werden bezahlt, um es zu schützen, wie wenn man einen dedizierten server admin für eine Finanz-app.
Ich finde es ein wenig widersprüchlich, lassen Sie die Quelle oder opcodes öffnen für Augäpfel, aber die Verwendung von SSL-Netzwerkverkehr. SSL ist nicht 100% sicher. Aber es wird benutzt, um stop-die MEISTEN aus den Augen zu Lesen. Ein bisschen vorsorge ist sinnvoll.
Auch, wenn genug Leute meinen, dass Python-Quell-und-opcodes sind auch sichtbar, ist es wahrscheinlich, jemand wird schließlich entwickeln, die zumindest einen einfachen Schutz-tool für Sie. Also je mehr Leute Fragen, "wie schützen Python-app" fördert nur diese Entwicklung.
InformationsquelleAutor DevPlayer
Abhängig, wer der AUFTRAGGEBER ist, eine einfache Schutz-Mechanismus in Verbindung mit einem vernünftigen LIZENZVERTRAG weit effektiver als jede komplexe Lizenzierungs - /Verschlüsselung/Verschleierung system.
Die beste Lösung wäre der Verkauf der code als service, sagen wir von hosting-service oder Unterstützung anzubieten - obwohl das ist auch nicht immer praktisch.
Versand des code als
.pyc
Dateien verhindert, dass Ihr Schutz wird vereitelt durch ein paar#
s, aber es ist kaum eine effektive anti-Piraterie-Schutz (als wenn es so eine Technologie), und am Ende des Tages, es sollte nicht alles erreichen, ein ordentliches Lizenz-Vereinbarung mit dem Unternehmen.Darauf konzentrieren, Ihren code so schön wie möglich zu gestalten - unter zufriedene Kunden wird Ihr Unternehmen weit mehr Geld als das verhindern von einigen theoretischen Piraterie..
InformationsquelleAutor dbr
Verwenden Cython. Es wird die Kompilierung der Module zu hoch-performanten C-Dateien, die dann kompiliert native binary-Bibliotheken. Dies ist im Grunde un-umkehrbar ist, im Vergleich zu .pyc-bytecode!
Ich geschrieben habe, einen ausführlichen Artikel darüber, wie Cython für ein Python-Projekt, überprüfen Sie es heraus:
Schutz Der Python-Quellen Mit Cython
InformationsquelleAutor Vitaly Gordon
Einen weiteren Versuch zu machen den code schwerer zu stehlen ist die Verwendung von jython und verwenden Sie dann java obfuscator.
Dieser sollte ziemlich gut funktionieren, wie jythonc übersetzen von python-code zu java und java kompiliert zum bytecode. Also Unze Sie verschleiern die Klassen wird es wirklich schwer zu verstehen, was Los ist, nachdem die Dekompilierung, nicht zu erwähnen, erholt sich der eigentliche code.
Das einzige problem mit jython ist, dass Sie nicht verwenden können python-Module in c geschrieben.
InformationsquelleAutor Piotr Czapla
Was zum signieren Sie Ihren code mit standard-Verschlüsselungsverfahren, die von der Vermischung und Unterzeichnung von wichtigen Dateien und überprüfen Sie mit public-key-Methoden?
Auf diese Weise können Sie die Ausgabe der Lizenz-Datei mit einem öffentlichen Schlüssel für jeden Kunden.
Zusätzliche können Sie ein python-Verschlüsselungsprogramm wie diese eine (einfach googeln).
Das signieren funktioniert nicht in diesem Zusammenhang. Es ist immer möglich, zu umgehen der Signatur-überprüfung loader. Das erste, was müssen Sie für nützliche software protection ist eine undurchsichtige bootstrap-Mechanismus. Nicht etwas, was Python macht einfach.
Ja, bootstrap in nicht-python.
Oder prüfen Sie die Lizenz nicht nur beim Start, sondern in mehreren anderen Orten. Können leicht durchgeführt werden, und kann stark erhöhen die Zeit, zu umgehen.
InformationsquelleAutor Peter Parker
Sollten Sie einen Blick auf, wie die Jungs bei getdropbox.com tun Sie es für Ihre client-software, einschließlich Linux. Es ist ziemlich schwierig zu knacken und erfordert einige ziemlich kreativ Demontage, vorbei an den Schutz-Mechanismen.
Gibt es keine Informationen veröffentlicht, wie man das übergeben dieser Schutz-Mechanismen?
InformationsquelleAutor fwzgekg
War ich überrascht, nicht zu sehen, pyconcrete in jeder Antwort. Vielleicht, weil es neuer ist als die Frage?
Könnte es genau das sein, was Sie brauchen(Hrsg.).
Statt Verschleierung der code, verschlüsselt und entschlüsselt beim laden.
Vom pypi-Seite:
InformationsquelleAutor mvallebr
Das beste, was Sie tun können, mit Python zu obskuren Dinge.
Können Sie fügen Sie einige zusätzliche Dunkelheit durch die Verschlüsselung ein Teil davon, und entschlüsseln Sie auf der fly und der übergabe an eval(). Aber egal, was Sie tun jemand Sie brechen kann.
All das wird aufhören, ein entschlossener Angreifer von der Demontage der bytecode oder Graben durch Ihre api mit Hilfe, dir usw.
InformationsquelleAutor Brian C. Lane
Idee, zeitlich begrenzte Lizenz-und überprüfen es in lokal installierten Programm wird nicht funktionieren. Auch mit perfekten Verschleierung, Lizenzprüfung entfernt werden kann. Jedoch wenn Sie das Kontrollkästchen Lizenz auf dem remote-system und führen signifikanten Teil des Programms auf der geschlossenen remote-system, werden Sie in der Lage zu schützen Sie Ihre IP.
Verhinderung Wettbewerber von der Nutzung der source code als Ihren eigenen oder schreiben Ihren inspirierten version von der gleichen code, eine Art zu schützen, ist es, Signaturen hinzufügen, um Ihr Programm-Logik (einige Geheimnisse, die in der Lage sein zu beweisen, dass code geklaut wurde) und verschleiern die python-source-code, also es ist schwer zu Lesen und zu nutzen.
Gut Verschleierung fügt im Prinzip den gleichen Schutz zu Ihrem code, kompilieren Sie es, um ausführbare (und stripping Binär) bedeutet. Herauszufinden, wie die verborgenen komplexen code funktioniert, könnte sogar noch schwieriger sein, als Sie tatsächlich schreiben Sie Ihre eigene Implementierung.
Dies wird nicht helfen, zu verhindern hacking von Ihrem Programm. Auch mit obfuscation code-Lizenz Zeug wird rissig und das Programm kann geändert werden, um etwas anderes Verhalten (in der gleichen Weise, dass das kompilieren von code in binary nicht helfen Schutz von native-Programme).
Zusätzlich zum symbol der Verschleierung sein könnte gute Idee, zu unrefactor der code, das macht alles noch verwirrender, wenn z.B. call-Graphen Punkte, an viele verschiedene Orte, auch wenn tatsächlich die verschiedenen Orte ist schließlich das gleiche.
Logische Signatur innerhalb obfuscated code (z.B. Sie können die create table-Werte, die verwendet werden, die von der Programm-Logik, aber auch als Unterschrift), die verwendet werden können, um festzustellen, dass der code von Ihnen stammen. Wenn sich jemand entscheidet, verwenden Sie Ihre verborgenen code-Modul als Teil Ihres eigenen Produkts (auch nach reobfuscating es zu machen es scheinbar anders) man kann zeigen, dass der code gestohlen mit Ihrer geheimen Signatur.
InformationsquelleAutor Mikael Lepistö
Ich habe mir bei software-Schutz im Allgemeinen für meine eigenen Projekte und die Allgemeine Philosophie ist, dass ein vollständiger Schutz unmöglich ist. Das einzige, was Sie zu erreichen hoffen können ist das hinzufügen von Schutz auf einem Niveau, das Kosten würde, Ihren Kunden mehr zu umgehen, als würde es um den Kauf einer anderen Lizenz.
So, ich war nur die überprüfung von google für python obsfucation und drehen nicht eine Menge von irgendetwas. In einer .Net-Lösung, obsfucation wäre ein Erster Ansatz, um Ihr problem auf einer windows-Plattform, aber ich bin nicht sicher, ob jemand hat Lösungen auf Linux mit Mono.
Die nächste Sache wäre, zu schreiben Ihren code in einer kompilierten Sprache, oder wenn Sie wirklich wollen, den ganzen Weg zu gehen, dann in assembler. Eine abgespeckte heraus ausführbar wäre viel schwieriger zu dekompilieren, als eine interpretierte Sprache.
Kommt es zu Kompromissen. An einem Ende haben Sie einfache software-Entwicklung in python, in dem es ist auch sehr schwer zu verbergen Geheimnisse. Am anderen Ende haben Sie die software in assembler geschrieben, die ist viel schwieriger zu schreiben, aber ist viel einfacher zu verbergen Geheimnisse.
Ihren boss wählen Sie einen Punkt irgendwo auf diesem Kontinuum, das unterstützt seine Anforderungen. Und dann hat er Ihnen die Werkzeuge und Zeit, so können Sie das bauen, was er will. Aber meine Wette ist, dass er Objekt der realen Entwicklung Kosten im Vergleich zu den potentiellen monetären Verluste.
InformationsquelleAutor Peter M
Ist es möglich, den py2exe-byte-code in einer geschützten Ressource für ein C-launcher, der lädt und führt Sie in Erinnerung. Einige Ideen hier und hier.
Einige haben auch gedacht,ein selbst ändern Programm, um reverse-engineering zu teuer.
Finden Sie auch tutorials für die Verhinderung von Debuggern, machen den disassembler fehlschlagen, setzen Sie falsche debugger breakpoints und schützen Sie Ihren code mit Prüfsummen. Suche nach ["crypted code" ausführen "in memory"] weitere links.
Aber wie andere schon sagten, wenn Ihr code ist es Wert, reverse engineers wird am Ende erfolgreich sein.
InformationsquelleAutor lalebarde
Lange Geschichte kurz:
Für mehr detail, sehen diese Antwort.
Wenn Sie das Thema interessiert, dieses Projekt wird helfen, Sie - pyprotect.
InformationsquelleAutor lambda11
Wenn wir konzentrieren uns auf die software-Lizenzierung, würde ich empfehlen, einen Blick auf einen anderen Stack Overflow-Antwort, die ich schrieb hier, um inspiration, wie Sie eine Lizenzschlüssel-Verifizierung-system aufgebaut werden kann.
Es ist ein open-source-Bibliothek auf GitHub, die helfen können Sie mit der Lizenz-überprüfung bit.
Können Sie es installieren, indem Sie
pip install licensing
und fügen Sie den folgenden code:Können Sie mehr Lesen über die Art, den öffentlichen RSA-Schlüssel, etc. konfiguriert sind,hier.
InformationsquelleAutor Artem
mit cxfreeze ( py2exe für linux ) wird die Arbeit machen.
http://cx-freeze.sourceforge.net/
es ist in den ubuntu-repositories
InformationsquelleAutor Ali AlNoaimi
Die gleiche Art und Weise zu schützen binäre Datei von c/c++, verschleiern jede Funktion Körper in ausführbaren Datei oder Bibliothek Binär-Datei, legen Sie eine Anweisung "springen" Beginn der einzelnen Funktion Eintrag, springen spezielle Funktion zum wiederherstellen obfuscated code. Byte-code, Binär-code von einem Python-Skript, so
Diese verschleierte Datei (.pyc-oder .pyo) verwendet werden kann, die von normalen python-interpreter, wenn diese code-Objekt aufgerufen wird erstmals
Erste op JUMP_ABSOLUTE, springt es zur offset-n
Im offset-n die Anweisung ist der Aufruf einer PyCFunction. Diese Funktion wiederherstellen kann, die bytecode obfuskiert zwischen offset-3-und n, und setzen Sie den ursprünglichen byte-code am offset 0. Der verschleierte code kann erhalten werden, indem Sie den folgenden code
Nachdem diese Funktion gibt die Letzte Anweisung ist, zu springen, um
offset 0. Die wirklich byte-code nun ausgeführt wird.
Gibt es ein tool Pyarmor zur Verschleierung von python-Skripten, die von diesem Weg.
InformationsquelleAutor Jondy Zhao