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

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.
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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
Benutzeravatar
sorgenlos
User
Beiträge: 69
Registriert: Donnerstag 15. Februar 2007, 00:52

welches modul ist dies?

"Crypto.Cipher"
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Naja, Du musst doch nur die "link"s in eine Datei schreiben?!? Wo liegt da genau Dein Problem?
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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()
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

lol danke dir, klappt wunderbar. :)
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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?
Benutzeravatar
sorgenlos
User
Beiträge: 69
Registriert: Donnerstag 15. Februar 2007, 00:52

da versucht jemand rslinks aus rsdfs mit python zu decodieren... interessant
lunar

``decode dateiname.rsdf > ausgabe.txt``?

Die Windows-Konsole kann doch unmöglich so beschränkt sein, dass es keine Ausgabeumleitungen gibt?
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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 ^^.
Benutzeravatar
sorgenlos
User
Beiträge: 69
Registriert: Donnerstag 15. Februar 2007, 00:52

ich könnte dir ne gui dafür schreiben...
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

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.
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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?
Benutzeravatar
sorgenlos
User
Beiträge: 69
Registriert: Donnerstag 15. Februar 2007, 00:52

hehe nix :D wir sind doch alle ein bischen python :D

edit: schick mir per pm die aktuelle source
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

Du hast Post :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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: ')``
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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? :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Scrypton
User
Beiträge: 10
Registriert: Mittwoch 14. Mai 2008, 16:35

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 ^^.
Antworten