Hallo zusammen,
eine Möglichkeit, wäre es, die Decodierfunktion, für das im Quelltext enthaltene Passwort, von einem Computerspezifischen Parameter, z.B. dem Hostnamen abhängig zu machen. Natürlich müsste dann für jeden Rechner mit einem zweiten Script, daß Du nicht weiter gibst, das Passwort codiert und in das für diesen Rechner bestimmtes Script eingetragen werden.
Script zum verschlüsseln. Das Script, wird mit dem Hostname des Rechners für den das Passwort verschlüsselt werde soll und dem Passwort, als Argumente aufgerufen :
Code: Alles auswählen
import random, sys
def encrypt(hostname, passwort):
rnd = random.Random(sum([ord(a) for a in hostname]))
return "".join([chr(ord(a) ^ rnd.randint(0,127)) for a in passwort])
print repr(encrypt(sys.argv[1], sys.argv[2]))
hostname ist der name des Rechners, auf dem das script lauffen soll, nicht der name des Rechners auf dem die MySQL-Datenbank läuft!
Script mit verschlüsseltem Passwort. Das Script wird ohne Parameter aufgerufen und gibt das entschlüsselte Passwort zurück.
Code: Alles auswählen
import random, socket
def decrypt(epw):
hostname = socket.gethostname()
rnd = random.Random(sum([ord(a) for a in hostname]))
return "".join([chr(ord(a) ^ rnd.randint(0,127)) for a in epw])
print decrypt('Ul|Xi\x1f') # Na wer entschlüsselt diesen uns allen sehr gut bekannten Begriff?
Bei euch wird beim zweiten Script mit grosser Warscheinlichkeit nur zeichenmüll rauskommen.
Bei mir kommt das raus.
wirklich sicher ist das natürlich auch nicht, und auch umständlich, da für jeden Rechner auf dem das Script laufen soll, das Passwort extra verschlüsselt und in den Source eingetragen werden muss.
Gruß
Dookie