Seite 1 von 2

ConfigParser() readstring möglich?

Verfasst: Samstag 21. April 2007, 11:20
von droptix
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?

Verfasst: Samstag 21. April 2007, 11:26
von rayo
Hi

Schau das Modul StringIO an.

Gruss

Verfasst: Samstag 21. April 2007, 11:41
von droptix
rayo hat geschrieben:Schau das Modul StringIO an.
Na wunderbar. Hat geklappt, danke!

Verfasst: Sonntag 22. April 2007, 09:33
von jens
"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...

Verfasst: Sonntag 22. April 2007, 11:37
von droptix
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...

Verfasst: Sonntag 22. April 2007, 12:00
von 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 ;)

Verfasst: Sonntag 22. April 2007, 12:17
von EnTeQuAk
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

Verfasst: Sonntag 22. April 2007, 15:20
von droptix
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?

Verfasst: Sonntag 22. April 2007, 15:31
von 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 ;)

AES rein Pythonisch

Verfasst: Sonntag 22. April 2007, 20:44
von droptix
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?

Re: AES rein Pythonisch

Verfasst: Sonntag 22. April 2007, 21:03
von 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

Verfasst: Montag 23. April 2007, 15:55
von Sr4l
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