Seite 1 von 2

Vorhandene Print-Ausgabe zusätzlich in Text-Datei?

Verfasst: Mittwoch 14. Mai 2008, 16:50
von Scrypton
Hallo ihr,
habe eine Frage, da ich mich mit Python bisher nicht wirklich beschaeftigt habe. Ich habe folgenden Code:

Code: Alles auswählen

#!/usr/bin/env python

import binascii
import base64 
from Crypto.Cipher import AES
import sys
import cgi


# 8C 35 19 2D 96 4D C3 18 2C 6F 84 F3 25 22 39 EB 4A 32 0D 25

infile = sys.argv[1]
Key = binascii.unhexlify('8C35192D964DC3182C6F84F3252239EB4A320D2500000000')

IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF')
IV_Cipher = AES.new(Key,AES.MODE_ECB)
IV = IV_Cipher.encrypt(IV)

obj = AES.new(Key,AES.MODE_CFB,IV)

rsdf = open(infile,'r')

data = rsdf.read()
data = binascii.unhexlify(''.join(data.split()))
data = data.splitlines()


for link in data:
    link = base64.b64decode(link)
    link = obj.decrypt(link)
    print link.replace('CCF: ','')

rsdf.close()
Wenn ich diese in der Eingabeaufforderung ausfuehre mit "decode.py dateiname.rsdf" liest mit die decode.py saemtliche in der .rsdf-Datei verschluesselten Links aus.
Wie kann ich diese Ausgabe zusaetzlich noch in eine .txt-Datei schreiben? Vorzugsweise in eine, die automatisch so heißt wie die rsdf-Datei?

Wuerde mich um eine Antwort freun :).


Mit freundlichen Grueßen,
Scry

Verfasst: Mittwoch 14. Mai 2008, 17:01
von sorgenlos
welches modul ist dies?

"Crypto.Cipher"

Verfasst: Mittwoch 14. Mai 2008, 17:17
von Scrypton
sorgenlos hat geschrieben:welches modul ist dies?

"Crypto.Cipher"
PyCrypto muss das sein - habe neben dem normalen Python-Interpreter nur das zusaetzlich integriert, weil dieses Scipt sonst nicht funktioniert ^^.


MfG,
Scry

Verfasst: Mittwoch 14. Mai 2008, 17:33
von Hyperion
Naja, Du musst doch nur die "link"s in eine Datei schreiben?!? Wo liegt da genau Dein Problem?

Verfasst: Mittwoch 14. Mai 2008, 17:45
von Scrypton
Hyperion hat geschrieben:Naja, Du musst doch nur die "link"s in eine Datei schreiben?!? Wo liegt da genau Dein Problem?
Und wie mache ich das?
datei = file("datei.txt", "w")
datei.write("link")
usw.
geht ja so nicht, da dann lediglich der Text in der Klammer in die Datei geschrieben wird.

Verfasst: Mittwoch 14. Mai 2008, 17:57
von numerix
So sollte es gehen (ungetestet):

Code: Alles auswählen

txtfile = open(infile.replace('.rsdf','.txt'),'w')
for link in data:
    link = base64.b64decode(link)
    link = obj.decrypt(link)
    s = link.replace('CCF: ','') 
    print s
    txtfile.write(s+'\n')
txtfile.close()

Verfasst: Mittwoch 14. Mai 2008, 18:03
von Scrypton
lol danke dir, klappt wunderbar. :)

Verfasst: Mittwoch 14. Mai 2008, 18:43
von Scrypton
Ein Fehler tritt in der Ausgabe (Print und .txt) auf merke ich gerade, wenn ich deinen Code im Source habe - und zwar wird immer die erste Adresse nicht korrekt ausgegeben. Wie z.B.:
ÿÏÎ!6h£ ý³¨pý%àµdresse.com/files/72517911/CCTFD.part01.rar
http://webadresse.com/files/72521292/CCTFD.part02.rar
http://webadresse.com/files/72524682/CCTFD.part03.rar
http://webadresse.com/files/72527806/CCTFD.part04.rar
http://webadresse.com/files/72530889/CCTFD.part05.rar
http://webadresse.com/files/72533811/CCTFD.part06.rar
http://webadresse.com/files/72536577/CCTFD.part07.rar
http://webadresse.com/files/72539217/CCTFD.part08.rar

Ohne die Ausgabe ins Textfile zu schreiben wird die erste Adresse immer richtig dargestellt. Woran liegt das?

Verfasst: Mittwoch 14. Mai 2008, 20:30
von sorgenlos
da versucht jemand rslinks aus rsdfs mit python zu decodieren... interessant

Verfasst: Mittwoch 14. Mai 2008, 21:23
von lunar
``decode dateiname.rsdf > ausgabe.txt``?

Die Windows-Konsole kann doch unmöglich so beschränkt sein, dass es keine Ausgabeumleitungen gibt?

Verfasst: Mittwoch 14. Mai 2008, 21:49
von Scrypton
Ist aber wohl so *g*.
Kann man das irgendwie umgehen, sodass in die Textdatei letzten endes jede URL, einschließlich eben auch der ersten, korrekt eingeschrieben werden?

Achja, noch eine Frage nebenbei, wo ich gerade hier bin:
Beim oben vorgestellten Source - wie muss ich das machen, dass ich in der Eingabeaufforderung nicht "decode.py dateiname.rsdf" machen muss sondern nur decode.py ausfuehren muss und dann aufgefordert werde, den Namen der .rsdf-Datei zu schreiben?

Irgendwas mit eingabe = input("Gebe einen Container an: ") oder so und so weiter - aber habe keine Ahnung wie das genau geht ^^.

Verfasst: Mittwoch 14. Mai 2008, 21:51
von sorgenlos
ich könnte dir ne gui dafür schreiben...

Verfasst: Mittwoch 14. Mai 2008, 21:59
von audax
lunar hat geschrieben:``decode dateiname.rsdf > ausgabe.txt``?

Die Windows-Konsole kann doch unmöglich so beschränkt sein, dass es keine Ausgabeumleitungen gibt?
Hat sie, kann sie. Sie kann zwar wenig...aber Pipes und Ausgaben sind noch dabei.

Verfasst: Mittwoch 14. Mai 2008, 22:12
von Scrypton
sorgenlos hat geschrieben:ich könnte dir ne gui dafür schreiben...
o.O, hui - das waer wirklich super lieb von dir.
Was wuerdest du denn dafuer verlangen?

Verfasst: Mittwoch 14. Mai 2008, 22:26
von sorgenlos
hehe nix :D wir sind doch alle ein bischen python :D

edit: schick mir per pm die aktuelle source

Verfasst: Mittwoch 14. Mai 2008, 22:38
von Scrypton
Du hast Post :)

Verfasst: Mittwoch 14. Mai 2008, 23:15
von Leonidas
Scrypton hat geschrieben:Irgendwas mit eingabe = input("Gebe einen Container an: ") oder so und so weiter - aber habe keine Ahnung wie das genau geht ^^.
``infile = raw_input('Dateiname: ')``

Verfasst: Mittwoch 14. Mai 2008, 23:40
von Scrypton
Leonidas hat geschrieben:
Scrypton hat geschrieben:Irgendwas mit eingabe = input("Gebe einen Container an: ") oder so und so weiter - aber habe keine Ahnung wie das genau geht ^^.
``infile = raw_input('Dateiname: ')``
Cool danke, klappt.
Warum der Ausgabefehler der ersten Adresse ist, wenn man die Ausgabe in eine Textdatei speichert, weißt du sicher auch oder? *g*.

Achja, was deine Hilfte Betrifft: Kann man das schon auf .rsdf Eingrenzen, sodass der Benutzer die Dateiendung nicht mehr schreiben muss? :)

Verfasst: Mittwoch 14. Mai 2008, 23:54
von Leonidas
Scrypton hat geschrieben:Achja, was deine Hilfte Betrifft: Kann man das schon auf .rsdf Eingrenzen, sodass der Benutzer die Dateiendung nicht mehr schreiben muss? :)
Natürlich; häng einfach ein '.rsdf' mit Plus an den String dran.

Verfasst: Donnerstag 15. Mai 2008, 00:04
von Scrypton
Leonidas hat geschrieben:Natürlich; häng einfach ein '.rsdf' mit Plus an den String dran.
Aeh, wo ganz genau soll der hin?
infile = raw_input('Dateiname: '+'.rsdf')
oder
infile = raw_input('Dateiname: '('.rsdf'))
geht naemlich nicht *g*.
Sorry, aber Python ist ganz neues Gebiet fuer mich und mit Visual Basic, Ruby, HTML/PHP einfach nicht zu vergleichen. Komme mir vor wie ein noob, was ich hier auch bin muss ich zugeben ^^.