Guten Tag,
ich bin auf der Suche nach einer Möglichkeit Python-Code so zu verschlüsseln, dass man diesen nicht mehr entschlüsseln kann.
Kurz um was es mir geht:
Ich habe eine Geschäftsidee für ein noch zu gründentes Unternehmen und das Programm, die Software, muss erst noch programmiert werden.
Dafür dachte ich an Python.
Zum einen weil das Programm, um welches es mir geht, auf Windows, Linux, MacOS, Android und iOS läuffäig sein wird (sicherlich muss es für die einzelnen Plattformen entsprechend angepasst werden!) zum anderen weil Python "moderner" ist als eine andere Programmiersprache (für meinen Zweck).
Nun, da ich nicht möchte, dass der Programmcode entschlüsselt werden kann - es wird darin u.a. auf eine Datenbank eines Webservers zugegriffen (somit sind dort Zugangsdaten hinterlegt) - suche ich eben eine sehr gute Möglichkeit diesen so zu verschlüsseln (Stichwort ist wohl obfuscate), dass es kein Tool schafft diesen lesbar zu entschlüsseln!
Was ich noch kurz erwähnen nöchte:
Ich bin selbst kein Programmierer, würde also Personal einstellen.
Ich möchte hier weder die Geschäftsidee noch anderes, was nicht zur Frage/Debatte steht, diskutieren.
Danke!
Würde ich nämlich nur einen Ansatz davon hier schreiben, um was es genau geht, dann würde ich wohl große Diskussionen auslösen (schon genug gegoogelt und die Diskussionen gesehen).
Code verschlüssel / entschlüsseln "lesbar" unmöglich machen
- DeaD_EyE
- User
- Beiträge: 1021
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
An den Quellcode kommt man immer irgendwie, egal wie sehr du dich anstrengst den zu verstecken. Der Obfuscator macht den Code nur unlesbar. Kompiliert man Python (nuitka, pyinstaller, etc...), wird meistens der Interpreter zusammen mit dem Quellcode gebundelt. Nuitka ist da eine Ausnahme, aber das würde jetzt zu sehr ins Detail gehen. Das wird auch nicht verhindern, dass man nicht mehr an den Quellcode kommt, denn man könnte dies auch durch einen decompiler jagen.Nun, da ich nicht möchte, dass der Programmcode entschlüsselt werden kann - es wird darin u.a. auf eine Datenbank eines Webservers zugegriffen (somit sind dort Zugangsdaten hinterlegt) - suche ich eben eine sehr gute Möglichkeit diesen so zu verschlüsseln (Stichwort ist wohl obfuscate), dass es kein Tool schafft diesen lesbar zu entschlüsseln!
Den Quellcode zu verstecken, um sein Know-How zu schützen, ist legitim, sofern die Software das Endprodukt ist.
Wenn man eine Dienstleistung anbietet, kann man den kompletten Quellcode auch auf GIT Hub hochladen und kann immer noch seine Dienstleistung anbieten.
Viele Unternehmen machen das vor und sind erfolgreich damit.
Nun das wichtigste
Zugangsdaten im Quellcode zu verstecken, ist eine sehr schlechte Idee. Das haben schon einige feststellen müssen und kann sogar ein Unternehmen gegen die Wand fahren.
Zugänge zu irgendeinem System sind entweder öffentlich oder man verteilt z.B. über ein Webinterface Tokens, mit denen der Zugriff dann erfolgt.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Dein "Grundproblem", dass du beschreibst, ist übrigens nicht Python-spezifisch. Das gleiche Problem hättest du mit vielen anderen Programmiersprachen auch.
Gruß, noisefloor
Kurzfassung: geht nicht. Es gibt immer Mittel und Weg. Wenn du deinen Code bzw. dessen Schöpfungshöhe schützen willst, dann wähle eine geeignete Lizenz und sei bereit, diese im Zweifelsfalls zur Verfügung stehenden Rechtsmitteln durchzusetzen.ich bin auf der Suche nach einer Möglichkeit Python-Code so zu verschlüsseln, dass man diesen nicht mehr entschlüsseln kann.
+1Zugangsdaten im Quellcode zu verstecken, ist eine sehr schlechte Idee.
Python läuft ootb nicht auf Android und MacOS. Auf Android ist es über Umwege und mit ein paar Umständen möglich, aber IMHO kein gangbarer Weg für eine kommerzielle App. Auf MacOS geht es AFAIK gar nicht.Zum einen weil das Programm, um welches es mir geht, auf Windows, Linux, MacOS, Android und iOS
Dein "Grundproblem", dass du beschreibst, ist übrigens nicht Python-spezifisch. Das gleiche Problem hättest du mit vielen anderen Programmiersprachen auch.
Gruß, noisefloor
Erstmal Danke für eine Antwort!
Zum Schluss soll die Software ja für Ihre Zielplattform sein (Windows = .exe).
Genau darum geht es mir ja!
Nur eine Lizenz kann ich vergessen, der Code ist da das Wichtigste, sonst bauen dies andere nach.noisefloor hat geschrieben: ↑Samstag 30. Juni 2018, 13:13 Kurzfassung: geht nicht. Es gibt immer Mittel und Weg. Wenn du deinen Code bzw. dessen Schöpfungshöhe schützen willst, dann wähle eine geeignete Lizenz und sei bereit, diese im Zweifelsfalls zur Verfügung stehenden Rechtsmitteln durchzusetzen.
Zum Schluss soll die Software ja für Ihre Zielplattform sein (Windows = .exe).
@F05: Du schreibst von einer Datenbank im Web. Datenbanken sollten ja sowieso nie direkt erreichbar sein, andererseits heißt das ja, dass Du die komplette Geschäftslogik auf einem Server ausführen kannst. Dann brauchst Du nur eine Weboberfläche und all Deine Probleme mit unterschiedlichen Plattformen sind verschwunden.
@noisefloor: auf MacOS läuft natürlich ein ganz normales Python, was Du wahrscheinlich meinstest ist iOS.
@noisefloor: auf MacOS läuft natürlich ein ganz normales Python, was Du wahrscheinlich meinstest ist iOS.
Wie machen das dann CM-Systeme wie WordPress, Joomla, Drupal...? Die lesen ihre Beiträge ja auch aus der Datenbank.
So soll das auch bei meinem Vorhaben realisiert werden, nur in einem etwas anderen Kontext.
Die Logik nur auf dem Server ausführen zu lassen und mit einer Weboberfläche darauf zugreifen reicht leider nicht, da die Software nicht nur auf die Datenbank zugreift.
Jetzt geht das schon in die Richtung was meine Software sein wird, darauf wollte ich ja nicht kommen!
So soll das auch bei meinem Vorhaben realisiert werden, nur in einem etwas anderen Kontext.
Die Logik nur auf dem Server ausführen zu lassen und mit einer Weboberfläche darauf zugreifen reicht leider nicht, da die Software nicht nur auf die Datenbank zugreift.
Jetzt geht das schon in die Richtung was meine Software sein wird, darauf wollte ich ja nicht kommen!
- DeaD_EyE
- User
- Beiträge: 1021
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Die Zugangsdaten der Datenbanken liegen auf deinem Server, den du verwaltest, auf dem deine Anwendungen laufen und auf dem nur du Zugriff haben solltest.
Du kannst es drehen und wenden wie du willst. Zugangsdaten gehören auf gar keinen Fall in die Anwendung.Die Logik nur auf dem Server ausführen zu lassen und mit einer Weboberfläche darauf zugreifen reicht leider nicht, da die Software nicht nur auf die Datenbank zugreift.
Jetzt geht das schon in die Richtung was meine Software sein wird, darauf wollte ich ja nicht kommen!
Wenn du dann deine Anwendung verteilst, verteilst du die Zugangsdaten ja gleich mit. Das ist nicht sicher.
Wie das Konzept mit der Authentifizierung aussehen könnte, kannst du bei Google, Facebook und vielen anderen großen Plattformen sehen. Die machen es richtig.
Die verteilen die Anwendungen und der Kunde muss seine Zugangsdaten eingeben und wenn es sicher sein soll, dann halt mit 2-Faktor-Autentifizierung.
Will der Kunde nun mit seinem Account eine andere App nutzen, so muss er die Rechte gewähren. Dafür sind dann die Tokens.
- Die Businesslogik auf dem Server implementieren
- Keine direkten Zugriffe auf die Datenbank
- Zugriffe z.B. über eine Rest API mit Authentifizierung/Token
Wenn du dann dein Team mit Programmierern hast, werden die dir sicherlich auch noch mitteilen wo das ein oder andere falsch gedacht ist.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@Sirius3:
@F05;
Gruß, noisefloor
@Sirius3:
Richtig, so meinte ich das, sorry.@noisefloor: auf MacOS läuft natürlich ein ganz normales Python, was Du wahrscheinlich meinstest ist iOS.
@F05;
??? - nachbauen kann man doch immer, mit oder ohne Quellcode. Da geht es ja nur im die Idee / das Konzept bzw. das Ergebnis für den Anwender. Und zum Schützen von Code bzw. dessen Schopfungshöhe dient eine Lizenz.Nur eine Lizenz kann ich vergessen, der Code ist da das Wichtigste, sonst bauen dies andere nach.
Ja, und _serverseitig_ wird das HTML fertig erstellt. Was im Browser ankommt ist dann HTML+CSS+evtl. JavaScript, was der Browser nur darstellen muss. Der Browser kennt keine Zugangsdaten für die DB auf dem Server. Muss er auch nicht.Wie machen das dann CM-Systeme wie WordPress, Joomla, Drupal...? Die lesen ihre Beiträge ja auch aus der Datenbank.
Gruß, noisefloor
@noisefloor ich schreibe hier auf einem iPad. Und darauf läuft “Pythonista”. Damit kann man sogar kleine Apps schreiben. Python auf iOS geht also durchaus. Ob’s für den TE die Rechte Wahl ist steht auf einem anderen Blatt. Da bin ich skeptisch.
Wie erwähnt, für die Zielplattform soll die Software das entsprechende Dateiformat haben.
Bei Windows z.B. .exe.
Also wird auf dem Zielsystem, z.B. auf Windows, kein Python benötigt und somit keine .py ausgeführt.
Sollte doch machbar sein!
Bei Windows z.B. .exe.
Also wird auf dem Zielsystem, z.B. auf Windows, kein Python benötigt und somit keine .py ausgeführt.
Sollte doch machbar sein!
Wie erwähnt, Du hast eine falsche Vorstellung, wie Python-Programme funktionieren. Auch wenn das Python-Programm in einer exe-Datei versteckt ist, ist es kein Problem, dieses Programm wieder auszulesen. Das gleiche gilt für .NET oder Java-Programme und nur in leicht abgeschwächter Form auch für Programme, die direkt nach Maschinensprache übersetzt wurden.
Geschäftslogik, die geheim bleiben soll, darf Deinen Einflußbereich nicht verlassen.
Geschäftslogik, die geheim bleiben soll, darf Deinen Einflußbereich nicht verlassen.
Wobei echt geheime Geschäftslogik ja auch eher ungewöhnlich ist. Unsere Software läuft zwangsweise auf den Rechnern der Kunden. Klar kann und wird die gecrackt. Aber wenn man ein Produkt hat, dass es wert ist, gekauft zu werden, dann passiert das ja auch.
Und natürlich kann die Software auch nach Hause telefonieren. Auch das tun wir. Sie sollte das natürlich mit den Credentials eines konkreten Kunden tun, und nicht mit einem generischen Account. Aber dann ist das auch kein echtes Problem. Wobei wir tatsächlich auch einen Token-Mechanismus haben, der Kunde also nur per Browser den Login tätigt, und die Software dann ein Token übergeholten bekommt per custom Protokoll.
Und natürlich kann die Software auch nach Hause telefonieren. Auch das tun wir. Sie sollte das natürlich mit den Credentials eines konkreten Kunden tun, und nicht mit einem generischen Account. Aber dann ist das auch kein echtes Problem. Wobei wir tatsächlich auch einen Token-Mechanismus haben, der Kunde also nur per Browser den Login tätigt, und die Software dann ein Token übergeholten bekommt per custom Protokoll.