Config-Datei verschlüsseln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Da wir anfangs mal den `ConfigParser` angeschnitten hatten: Der soll mir meine INI ja einlesen. Zuvor muss ich sie eben nur decodieren.

Das Problem was ich grad entdeckt hab: `ConfigParser` kann nur von einem Fileobject lesen. Ich kann keinen String übergeben. Wie löst man dieses Problem? Kann ich eine Art virtuelles Fileobject erstellen, welches nicht erst auf Platte geschrieben werden muss?
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Hi

Schau das Modul StringIO an.

Gruss
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

rayo hat geschrieben:Schau das Modul StringIO an.
Na wunderbar. Hat geklappt, danke!
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

"suche pure Python crypt Algo...": http://www.python-forum.de/topic-8075.html

btw. Um es wirklich sicher zu machen, müßte man IMHO ein Master-Passwort nehmen, welches der User eingeben muß, um die anderen Passwörter "freizuschalten"... Ohne so etwas ist das ganze nur ein leicht zu durchschauendes durcheinander würfeln...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Danke. Ich denke aber es reicht mit dem durcheinander würfeln. Ist nichts sicherheitskritisches. Die INI Datei wird eigentlich auch nur auf einem Rechner abgelegt, auf den nur ich Zugriff habe. Die Verschlüsselung ist nur für alle Fälle...
lunar

droptix hat geschrieben:Die Verschlüsselung ist nur für alle Fälle...
Na, dann solltest du lieber hoffen, dass diese Fälle nie eintreten ;)
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Genau...

Denn das, was du vor hast, schützt nur vor direktem anschauen durch den Menschen. Hacker, haben damit 100%ig keine Probleme.

MfG EnTeQuAk
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Jaja... ist mir schon klar. Man muss halt immer nur sehen, wo die Grenze zwischen Aufwand und Nutzen liegt. Normalerweise würde ich das gar nicht verschlüsseln, weil nur ich vor diesem Rechner sitze. Aber es könnte ja sein, dass ich mal jemanden ran lasse und kurz in der Küche verschwinde... und wenn da einfach der falsche Ordner zur falschen Zeit offen ist kann eine neugierige Nase sofort reinschauen und Passwörter lesen.

Das ist das Einzige, das es zu verhindern gilt. Aber grundsätzlich geb ich euch natürlich recht.

Wie kann man denn mit Python eine AES-Verschlüsselung realisieren? Kenne Tools, die ihre Configs komplett AES-verschlüsselt ablegen. Liegt der Key zum Decoden dann direkt im Binary des Programms? Kann man den Decompilen oder anderweitig rankommen?
lunar

droptix hat geschrieben:Wie kann man denn mit Python eine AES-Verschlüsselung realisieren?
Das von dir erwähnte pycrypto wäre dazu geeignet... Mit ein bisschen Code außenrum kann man pycrypto auch zum Verschlüsseln von Konfigurationsdateien verwenden. Wenn du aber sowieso schon pycrypto installierst, kannst du stattdessen auch gleich auf gpg zurückgreifen, und daszur AES-Verschlüsselung verwenden.
Kenne Tools, die ihre Configs komplett AES-verschlüsselt ablegen. Liegt der Key zum Decoden dann direkt im Binary des Programms? Kann man den Decompilen oder anderweitig rankommen?
Das macht aber wenig Sinn, da man Python-Bytecode immer noch relativ gut analysieren kann. Da könntest du den Schlüssel auch direkt in einer Klartextdatei ablegen ;)
Wirklich sicher wäre es es, beim Start ein Passwort zu verlangen, und den den mehrfachen Sha1-Hash mit Salt als Schlüssel für den Algorithmus zu verwenden... Das wird dann allerdings aufwendiger... Ich kann meine Empfehlung nur wiederholen ;) gnupg wäre ideal für diesen Zweck ;)
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Da muss ich jetzt mal doof fragen: AES ist doch einfach nur ein mathematischer Algorithmus wie andere Codecs auch. Das Verfahren kann man doch rein in Python implementieren, also als Modul und nicht als C-Variante, die für das Betriebssystem compiliert vorliegen muss. Ist schon klar, dass die C-Variante Geschwindigkeitsvorteile bringt. Bei einer 20-zeiligen INI-Datei weiß ich aber nicht inwiefern das ins Gewicht fällt.

Dann könnte man seinem plattformunabhängigen Python-Programm einfach das Modul anhängen und los geht's! Auf externe Binaries könnte verzichtet werden. Gibt's das?
lunar

droptix hat geschrieben:Da muss ich jetzt mal doof fragen: AES ist doch einfach nur ein mathematischer Algorithmus wie andere Codecs auch. Das Verfahren kann man doch rein in Python implementieren, also als Modul und nicht als C-Variante, die für das Betriebssystem compiliert vorliegen muss. Ist schon klar, dass die C-Variante Geschwindigkeitsvorteile bringt. Bei einer 20-zeiligen INI-Datei weiß ich aber nicht inwiefern das ins Gewicht fällt.

Dann könnte man seinem plattformunabhängigen Python-Programm einfach das Modul anhängen und los geht's! Auf externe Binaries könnte verzichtet werden. Gibt's das?
Jepp... natürlich gibt es pure-python AES Algorithmen:
http://tlslite.cvs.sourceforge.net/tlsl ... iew=markup
http://tlslite.cvs.sourceforge.net/tlsl ... iew=markup
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Wiso nicht die daten im binär abspeichern?

Also mit zlib compress und zum lesen decompress in der form die dieser compress gespeichert wird kann man ihn nicht lesen.

Code: Alles auswählen

>>> import zlib
>>> zlib.compress("User:Ich bin ein PW")
'x\x9c\x0b-N-\xb2\xf2L\xcePH\xca\xccSH\x05\xe2\x80p\x00BG\x06j'
>>> zlib.decompress(_)
'User:Ich bin ein PW'
>>> print zlib.compress(_)
x?-N-?òLÎPHÊÌSHâ?p
Je nach Codierung sieht es echt Cryptisch aus :-D
Antworten