Ich erstelle ein ziemlich komplexes interpretiertes Programm in Python. Ich habe den größten Teil dieses Codes einige Monate lang für andere Zwecke bearbeitet und möchte daher nicht, dass mein Kunde ihn einfach kopiert und versucht, ihn zu verkaufen, da er meiner Meinung nach einen angemessenen Betrag wert ist.
Das Problem ist, dass ich das Skript auf einem Server ausführen muss, für den mein Client bezahlt, damit ich einen bestimmten Ordner auf dem Computer vor dem Root-Zugriff schützen oder festlegen kann, dass nur eine bestimmte Verwendung auf das Verzeichnis zugreifen kann ? Das Betriebssystem ist Ubuntu.
python
code-security
Mike Partridge
quelle
quelle
root
darf .Antworten:
Lizenz es.
Wirklich, das ist alles!
quelle
Sie können immer alle Ihre Dateien zu Byte-Code pyc kompilieren. Es gibt Dekompilierer, die daraus Quellcode generieren können, aber nichts Ernstes.
Dies löst jedoch nur die Fähigkeit, den Code Ihres Programms zu lesen. Der einzige Weg zum Schutz ist die Lizenzierung, wie Nightcracker sagte, denn selbst wenn Sie Ihren Code kompiliert haben, kann der Maschinencode, wenn Ihre Arbeit nicht durch eine Lizenz geschützt ist, immer noch gegen Ihren Willen kommerzialisiert werden.
Fazit: Kompilieren Sie den Bytecode und lizenzieren Sie ihn, was noch wichtiger ist
quelle
Verwenden Sie Cython. Auf diese Weise können Sie Ihr Programm als native ausführbare Datei kompilieren. Dann sollte es viel schwerer sein zu stehlen.
Der einzige Rat, den ich Ihnen für das Verzeichnis geben kann, ist, sicherzustellen, dass Sie Ihre Berechtigungen korrekt eingerichtet haben. ACLs können Ihre Freunde sein, obwohl ich nicht zu 100% sicher bin, dass sie den Root-Zugriff auf eine Datei einschränken können. Selbst wenn sie könnten, könnte root immer noch die Berechtigung ändern. Er ist Wurzel, er ist Gott - so funktionieren diese Dinge.
http://www.korokithakis.net/node/109
quelle
Wie der Benutzer oben gezeigt hat, können Disassembler den Code zurückbekommen, aber er ist noch nicht gut lesbar (zumindest nicht für Open-Source-Disassembler).
Ich habe darüber nachgedacht und eine Möglichkeit, dieses Problem zu lösen (wenn Sie erzwungenen Code als Problem bezeichnen), besteht darin, ein automatisches Re-Factoring-Skript zu schreiben. Das wäre eigentlich ziemlich einfach. Sie würden dem Skript einfach Ihr Modul hinzufügen und es würde alle modulspezifischen Variablen umbenennen. Dies würde, zusammen mit der Freigabe der kompilierten Datei, viel dazu beitragen, Ihren Code zu verschleiern.
Bei einer Suche im PyPI habe ich Folgendes gefunden: http://pypi.python.org/pypi/pyfuscate/0.1 . Sie sollten es überprüfen und anderen gefällt es und melden Sie sich zurück: D
Außerdem: Sie sollten es natürlich auch lizenzieren.
quelle
Ich würde auch die Lizenzierung vorschlagen. Verschlüsseln Sie zusätzlich zur Lizenzierung den Quellcode der Hauptroutinen mithilfe eines Algorithmus mit asymmetrischem Schlüssel, damit er nur auf dem Computer Ihres Clients ausgeführt werden kann. Einer der Schlüssel in dem Paar ist etwas, das von der Hardware (Beispiel: Seriennummer der Netzwerkkarte) Ihres Client-Computers bezogen wird. Verwenden Sie den anderen Schlüssel des Paars, um den Quellcode beim Ausführen des Programms zu entschlüsseln. Beachten Sie, dass im Klartext nur die Entschlüsselungsroutine verfügbar ist und der Rest im Chiffretext.
Auf diese Weise kann Ihr Client Ihren scheinbar kitschigen Code kopieren und einfügen, aber nicht an anderer Stelle ausführen. Mein Vorschlag ist jedoch nicht vollständig kugelsicher: Der Interpreter speichert das entschlüsselte Programm möglicherweise irgendwo im Speicher. Dann ist es möglich, dass ein Hacker Ihr Programm während der Ausführung im Klartext abruft.
Ich bin damit einverstanden, dass root nicht daran gehindert werden kann, auf Dateien / Ordner zuzugreifen.
quelle
ruby
/python
/node
die Ausführung API mit einem benutzerdefinierten Programm Spiegel und gibt den Code.Lizenzierung ist hier die beste Antwort. Das heißt, warum muss es auf ihrer Ausrüstung laufen? Wenn es so wichtig ist, sollten Sie sich auf einen Service einstellen und eine Art Service-API erstellen, damit die Leute nicht einmal Ihr geistiges Eigentum sehen können, um es zu stehlen.
quelle