Python-Anwendungen: Sie Können Ihren Code Sicherer Irgendwie?
Wenn es wirklich einen 'besten' Weg, was ist der beste Weg, um Schiff eine python app und sicherzustellen, Menschen können nicht (leicht) reverse Engineering algorithmen/Sicherheit/Arbeit im Allgemeinen?
Wenn es keinen 'besten' Weg, was sind die verschiedenen Optionen zur Verfügung?
Hintergrund:
Ich Liebe Programmierung in Python und würde gerne die Veröffentlichung mehr apps mit sich. Eine Sache, die ich Frage mich, ist die Möglichkeit von Menschen umgehen, die Lizenzierung code, den ich in setzen, oder können einfach nur Abzocke meiner gesamten source-Basis. Ich habe gehört, Py2Exe und ähnliche Anwendungen, aber ich bin neugierig, ob es "bevorzugten" Weise, es zu tun, oder wenn das problem ist einfach eine Tatsache des Lebens.
- Das kompilieren ist in der Regel der Weg zu gehen, aber das ist in PHP (Zend-etwas). Ich Frage mich, ob Py hat andere Einrichtungen für die Sicherung?
- Das ist der Nachteil bei der Verwendung von Perl, PHP, Python, etc für Produkte, die Sie versenden. Es gibt nicht viel Sie tun können, wirklich.
- Dupe? stackoverflow.com/questions/261638/how-do-i-protect-python-code
- Ja, es ist ein dupe. Es ist nicht subjektiv, es gibt keine technischen Mittel zum Schutz der code.
- Ah, vielen Dank für diesen link. Ich habe einen Antrag, um diese zu schließen, als ein dupe, aber es braucht zwei weitere Benutzer, dasselbe zu tun.
- Py2exe nicht verschleiern des Codes. Der bytecode ist nur in gespeichert library.zip.
- s/Secure/Verschleiern...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Security through obscurity nie funktioniert. Wenn Sie müssen, verwenden Sie eine proprietäre Lizenz zu erzwingen es durch das Gesetz nicht ausgegoren Verschleierung versucht.
Wenn Sie sind besorgt über Sie lernen Ihre Sicherheit (z.B. in der Kryptographie) - Algorithmus, gilt das gleiche. Real, nützlich -, Sicherheits-algorithmen (wie AES) sicher sind, auch wenn der Algorithmus vollständig bekannt ist.
Selbst wenn Sie eine kompilierte Sprache wie C# oder Java, können die Menschen die Durchführung von reverse engineering, wenn Sie sind motiviert und fachlich kompetent. Verschleierung ist kein zuverlässiger Schutz gegen diese.
Können Sie hinzufügen Verbot gegen reverse-engineering zu Ihrem Endbenutzer-LIZENZVERTRAG für Ihre software. Die meisten proprietären Unternehmen, dies zu tun. Aber das bedeutet nicht verhindern, dass die Verletzung, es gibt Ihnen nur der Rechtsweg.
Den besten Lösung ist, um Ihnen Produkte und Dienstleistungen nutzen, die den Zugang des Benutzers zu Lesen, Ihr code wird nicht Schaden, Ihre Fähigkeit, zu verkaufen Ihr Produkt oder service. Als Basis für Ihr business on-service bereitgestellt, oder Abonnement für regelmäßige updates der Daten, anstatt den code selbst.
Beispiel: Slashdot macht eigentlich den code für Ihre website zur Verfügung. Macht diesem Schaden Ihre Fähigkeit, zu laufen Ihre website? Nein.
Ein anderes Mittel ist, um Ihre Preis-Punkt, so dass der Aufwand Pirat code ist teurer als einfach den Kauf legitime Lizenzen zur Verwendung Ihres Produkts. Joel Spolsky hat eine Empfehlung, um diese Effekte in seinen Artikeln und podcasts.
Versand ein kommerzielle mac-desktop-app in Python, wir wollen genau wie beschrieben in den anderen Antworten; schützen Sie sich durch das Gesetz mit einer anständigen EULA, nicht durch Verschleierung.
Hatten wir noch nie irgendwelche Probleme mit Leute die reverse-engineering unser code. Und wenn wir das tun, ich bin zuversichtlich, wir können rechtliche Schritte einleiten. Also ja, es ist eine Tatsache des Lebens. Aber eine, die nicht zu schwer, damit zu Leben. Einfach einen anständigen Anwalt, der schreibt einen anständigen EULA.
Das Wort, das Sie suchen, ist verschleiern. Eine schnelle google zeigt:
http://www.lysator.liu.se/~astrand/Projekte/pyobfuscate/
aber:
a) Wenn eine Urheberrechtsverletzung zum problem wird, dann ist das Gesetz auf deiner Seite (solange Sie die entsprechenden copyright-Vermerke in allen Dateien).
b) Es ist auch möglich, einen Gewinn zu machen auf open-source-Anwendungen, wenn Sie klug.
c) Wenn Sie möchten, dass Ihr Geistiges Eigentum, um wirklich sicher zu sein, dann ist die einzige Antwort ist, um nicht lassen Sie jemand haben es in Erster Linie: Schreiben Sie Ihre Anwendung als web-app (ich empfehle, mit django) und nur Ihren web-hosting-provider hat den Zugriff auf Ihren code.
py2exe
Auf windows-py2exe ist eine Möglichkeit, den Versand-code, um end-Benutzer, py2exe-bundles der python-interpreter, der erforderlichen dlls und Ihr code wird kompiliert, um python-bytecode.
Hier sind die python-bytecode-Anweisungen, um eine Vorstellung davon, wie es aussieht:
http://www.python.org/doc/2.5.2/lib/bytecodes.html
Oder verwenden Sie dis zerlegen einige pyc/pyo-Dateien.
So, die mithilfe von py2exe ist ähnlich wie die Verteilung kompilierte python (pyc/pyo) Dateien.
Shedskin C++ - compiler
Den Shedskin compiler kompiliert eine Teilmenge von python zu C++, die Sie kompilieren zu systemeigenem code mit jedem compiler.
pypy
Ich weiß nicht, über PyPy zu viel. Nach Ihrer docs Pypy in der Lage ist zum generieren von C-code.