rot13 um eine log Datei zu 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.
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Sonntag 11. Juli 2010, 14:07

Hallo

Ich möchte eine erzeugte log Datei verschlüsseln und dazu rot13 als System verwenden.
Das rot13 nicht das Maß der Dinge ist ist mir klar, aber es geht auch nur darum das nicht jeder unmittelbar an die Daten kommt falls sie ihm mal in die Hände fallen sollten.

"gelöst" habe ich das ganze mit meinen bescheidenen Pythonkenntnissen so

Code: Alles auswählen

message = ProtocolMsg(self.bl, None, "message", text.encode("UTF-8"))
            message.send(self)
	    file = open(self.logging(), "a") 
	    file.write('[log ] '.decode("rot13") + text.encode('utf-8').decode("rot13") + '[time ]'.decode("rot13") + time.strftime('%d.%m.%Y.%H.%M', time.gmtime()).decode("rot13") + '[IP ] '.decode("rot13") + self.getip().decode("rot13")  + '\n')
	    file.close()
nun habe ich aber den Effekt das die Zeitangabe und die IP-Angabe immer noch unverschlüsselt sind

Code: Alles auswählen

[ybt ] uv[gvzr ]11.07.2010.12.49[VC ] 89.250.196.127
was mache ich denn da jetzt falsch, oder ist rot13 dafür gar nicht geeignet da es nur Buchstaben versetzt ?


Gruß John
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

Sonntag 11. Juli 2010, 14:18

Code: Alles auswählen

In [1]: "123456".decode("rot13")
Out[1]: u'123456'

In [2]: "abcdefg".decode("rot13")
Out[2]: u'nopqrst'
Zahlen werden nicht rotiert. Aber du kannst ja die rot13 Funktion mit Zahlen erweitern...
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Sonntag 11. Juli 2010, 14:22

o.k. Danke

die Frage ist nur ob ich das kann :roll:

Gibt es einen besseren Weg also ein System wie rot13 was im standard verfügbar ist und die Zahlen auch mit rotiert ?
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Sonntag 11. Juli 2010, 15:18

xor (müsstest du aber selber schreiben), base64, gzip ...

hth, Jörg
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Sonntag 11. Juli 2010, 16:13

o.k. base64 sieht recht vielversprechend aus, werde damit mal etwas rumspielen.
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Montag 12. Juli 2010, 15:01

habe mir jetzt mal

http://docs.python.org/library/base64.h ... _b64decode

zu Gemüte geführt, scheitere aber immer wieder schon an dem Beispiel.

Code: Alles auswählen

>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'
ich bekomme immer nur

Code: Alles auswählen

AttributeError: 'module' object has no attribute 'b64encode'
warum ?

liegt das daran das ich Python in Version 2.5 verwende ?

oder stelle ich mich einfach zu bl** an :K
BlackJack

Montag 12. Juli 2010, 15:33

Wie sieht denn `base64.__file__` aus? Hast Du vielleicht zufällig selber ein Modul mit dem Namen `base64.py` erstellt? *Das* hat die Funtkion dann ja wahrscheinlich nicht. ;-)
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

Montag 12. Juli 2010, 17:04

Warum nicht so?

Code: Alles auswählen

In [1]: "abcdefgh12345".encode("base64")
Out[1]: 'YWJjZGVmZ2gxMjM0NQ==\n'
Spricht da etwas dagegen oder gibt es das nicht mit Python 2.5?
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Montag 12. Juli 2010, 17:25

Echte Kerle nehmen eh Kenny statt rot13.

*SCNR*
BlackJack

Montag 12. Juli 2010, 18:19

Aber bitte selber implementieren und nicht den furchtbaren Python-Code von der Seite verwenden.
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Montag 12. Juli 2010, 19:47

hm o.k. mir hat einfach das Modul gefehlt :K

wenn ich das ganze jetzt aber auf das obige skript anwende

Code: Alles auswählen

file.write('[log ] '.encode("base64") + text.encode("base64") + '[time ]'.encode("base64") + time.strftime('%d.%m.%Y.%H.%M', time.gmtime()).encode("base64") + '[IP ] '.encode("base64") + self.getip().encode("base64")  + '\n')
bekomme ich das

Code: Alles auswählen

W2xvZyBdIA==
RGllcyBpc3QgZWluIFRlc3QgISQmPyAwODE1NDcxMg==
W3RpbWUgXQ==
MTIuMDcuMjAxMC4xOC4yOQ==
W0lQIF0g
OTIuMjUwLjE5Ni4xMjA=
wenn ich das dann wieder dekodiere bekomme ich dann das

Code: Alles auswählen

[log ] F–W2—7BV–âFW7BBcòƒSCs [time ]"ãrã#ã‚ã#�[IP ] 92.250.196.1
Das ist irgendwie nicht ganz Plaintext :shock:

Kann es sein das es daran liegt das ich alles einzeln ins base64 encode ?
BlackJack

Montag 12. Juli 2010, 20:02

Ja das liegt daran. Das hättest Du aber nun auch ziemlich einfach ausprobieren können.
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Montag 12. Juli 2010, 20:49

ja aber wenn ich die ganze Datei als base64 dekodiere und sie wird beim nächsten log wieder geöffnet und wieder dekodiert, dann habe ich doch die vorhergehende Zeile doppelt dekodiert.

Also müßte ich doch bei dem Ansatz bleiben die Zeile einzeln als .base64 zu dekodieren.

Aber wie mache ich das

Code: Alles auswählen

file.write('[log ] '.encode("base64") + text.encode("base64") + '[time ]'.encode("base64") + time.strftime('%d.%m.%Y.%H.%M', time.gmtime()).encode("base64") + '[IP ] '.encode("base64") + self.getip().encode("base64")  + '\n')
funktioniert wenn auch alles andere als leicht wieder encodierbar

aber die ganze Zeile auf einmal, das bekomme ich irgendwie nicht hin :K

Also sorry das kann schon sein das das recht komische Fragen sind, aber ich hab mit Python noch "leicht" Probleme, was ja nicht heißen soll das ich mir keine Mühe gebe

Gruß John
BlackJack

Montag 12. Juli 2010, 20:58

@JohnR: Ich verstehe jetzt nicht wo das Problem ist!? Du musst die Zeile aus den Einzelteilen erstellen und die dann kodieren. Statt wie jetzt die Einzelteile zu kodieren und daraus die Zeile zu erstellen.
JohnR
User
Beiträge: 23
Registriert: Freitag 25. Juni 2010, 19:42

Dienstag 13. Juli 2010, 15:03

o.k. habs dann gelöst

ob nun gut oder schlecht das kann ich nicht wirklich beurteilen, aber es funktioniert :D

Code: Alles auswählen

file = open(self.logging(), "a")     
log = ('[log ] ' + text + '[time ]' + time.strftime('%d.%m.%Y.%H.%M', time.gmtime()) + '[IP ] ' + self.getip()  + '\n')
file.write(log.encode("base64"))
file.close()
Antworten