Verschlüsselung / UnEncrypt Python Scripts in C

Duplikate (die ich nicht gefunden habe Antworten): https://stackoverflow.com/questions/4066361/how-to-obfuscate-python-code Wie schütze ich Python-Code?

Also habe ich bei den beiden Links oben gesehen ^^ und ich habe nichts für die einfache Verschlüsselung von Python-Skripten und / oder Verschleierung von Python-Code gefunden. Also bin ich neu bei C, aber erlebt in Python, und wenn ich kommerzielle Pythonprojekte entwickeln wollte, war meine beste Idee:

Erstellen ac script und ein verschlüsseltes & kompiliertes Python-Skript Das C-Skript müsste einfach einen String-Verschlüsselungsschlüssel liefern und ihn entschlüsseln. Nur FYI ive nie wirklich versucht Verschlüsselung, und ich weiß, dass dies nicht perfekt wäre. Aber ich brauche nicht perfekt. Ich möchte nur, dass es schwieriger, meine Python-Quellcode zu dekompilieren, zu realisieren, das wäre noch einfach, aber nicht so einfach.

Ich habe gerade bei Cython ausgesehen, und ich kann ganz einfach eine * .c-Datei generieren, jetzt wie kann ich diese auf binär kompilieren? (Mit Visual Studio)

Also, wie könnte ich meinen Python-Code verschlüsseln und ihn aus einem C-Skript entschlüsseln (was ich zur Binärdatei kompilieren könnte, damit es deutlich schwerer zu bearbeiten ist)?

3 Solutions collect form web for “Verschlüsselung / UnEncrypt Python Scripts in C”

Hier ist was ich tun würde:

1) Erstellen Sie ein C-Skript, das einen Schlüssel erzeugt und speichert es in einer Textdatei

2) Heben Sie den Schlüssel ab und löschen Sie sofort die Textdatei beim Ausführen von Python

3) Verwenden Sie die Taste, um die wirklich wichtigen Teile Ihres Python-Codes zu entschlüsseln (stellen Sie sicher, dass nicht diese Bits Ihr Skript brechen), dann importieren Sie alle

4) Sofort neu verschlüsseln die wichtigen Python-Bits, und löschen Sie die .pyc Datei

Das wird beatable sein, aber du bist ok damit.

Um deine Python-Bits zu verschlüsseln und neu zu verschlüsseln, probiere diesen Code:

 from hashlib import md5 from Crypto.Cipher import AES from Crypto import Random def encrypt(in_file, out_file, password, key_length=32): bs = AES.block_size salt = Random.new().read(bs - len('Salted__')) key, iv = derive_key_and_iv(password, salt, key_length, bs) cipher = AES.new(key, AES.MODE_CBC, iv) out_file.write('Salted__' + salt) finished = False while not finished: chunk = in_file.read(1024 * bs) if len(chunk) == 0 or len(chunk) % bs != 0: padding_length = (bs - len(chunk) % bs) or bs chunk += padding_length * chr(padding_length) finished = True out_file.write(cipher.encrypt(chunk)) def decrypt(in_file, out_file, password, key_length=32): bs = AES.block_size salt = in_file.read(bs)[len('Salted__'):] key, iv = derive_key_and_iv(password, salt, key_length, bs) cipher = AES.new(key, AES.MODE_CBC, iv) next_chunk = '' finished = False while not finished: chunk, next_chunk = next_chunk, cipher.decrypt(in_file.read(1024 * bs)) if len(next_chunk) == 0: padding_length = ord(chunk[-1]) chunk = chunk[:-padding_length] finished = True out_file.write(chunk) 

So zusammenfassend, hier ist ein paar Pseudocode:

 def main(): os.system("C_Executable.exe") with open("key.txt",'r') as f: key = f.read() os.remove("key.txt") #Calls to decrpyt files which look like this: with open("Encrypted file name"), 'rb') as in_file, open("unecrypted file name"), 'wb') as out_file: decrypt(in_file, out_file, key) os.remove("encrypted file name") import fileA, fileB, fileC, etc global fileA, fileB, fileC, etc #Calls to re-encrypt files and remove unencrypted versions along with .pyc files using a similar scheme to decryption calls #Whatever else you want 

Aber nur um Stress und wichtigen Punkt,

Python ist nicht dafür gemacht! Es soll offen und frei sein!

Wenn du dich an dieser Stelle ohne andere Alternative findest, solltest du wohl nur eine andere Sprache benutzen

Ein Blick auf das Nuitka-Projekt. Es ist ein Python-Compiler, der Ihre Python-Skripte zu nativen ausführbaren Code kompiliert, der libpython verwendet, um zu laufen.

http://nuitka.net/

Sie haben nicht erklärt, warum Sie die Notwendigkeit zu verschlüsseln / entschlüsseln fühlten. Die Antwort, auf die sich eventuell Vorschläge stützen könnten.

Zum Beispiel, nehmen wir an, Sie versuchen, geistiges Eigentum zu schützen, aber wie die Bequemlichkeit der Codierung in Python. Wenn dies ist Motivation, betrachten Sie Cython – http://cython.org .

Aber lassen Sie uns sagen, Sie waren mehr besorgt über die Sicherheit (dh: um zu verhindern, dass jemand Ihren Code ohne die Erlaubnis eines Benutzers ändert). In diesem Fall könntest du irgendeine Art von Embedded Loader betrachten, die deine Python-Quelle prüft, bevor du einen eingebetteten Python-Interpreter aufrufst.

Ich bin sicher, es gibt 1/2 Dutzend andere Gründe, die Sie vielleicht verschlüsseln möchten.

  • Wie 3DES in Python mit dem M2Crypto Wrapper verschlüsseln?
  • Obfuscate Strings in Python
  • Python oder LibreOffice Save xlsx Datei mit Passwort verschlüsselt
  • Welcher symmetrische Cypher für die Verschlüsselung von Nachrichten?
  • Verschlüsselte Datei oder db in python
  • ASCII Vigenere Chiffre nicht entschlüsseln
  • Python-Code, der RSA verschlüsselte Datei in Chunks von 64 Bit unter Verwendung eines privaten Exponenten und Moduls entschlüsselt
  • Xor Verschlüsselung / Entschlüsselung einer Datei mit Python 3
  • Verwenden Sie RSA, um in JavaScript zu verschlüsseln und in Python3 zu entschlüsseln
  • Entschlüsseln Sie SHA1 mit (Passwort) in Python
  • Warum mein Code nicht entschlüsseln die verschlüsselte Zeichenfolge auf der Grundlage des Wörterbuchs?
  • Python ist die beste Programmiersprache der Welt.