Hallo erst mal,
ich bin hier neu und versuche mich in den Anfängen der Pythonprogrammierung.
Nachdem ich schon viele Themen in Python durch habe und letzter Zeit nur noch das Gelernte wiederholen wollte, dachte ich mir, ich schreibe ein Skript womit ich meine dateien "zippen" kann. Erst ohne, dann mit Password.
Nun dachte ich mir, ich könnte die Passwortgeschützte Zip Datei auch mal versuchen zu entschlüsseln mit einer Art Bruteforce.
Die ersten paar Male klappten ganz super, aber nun habe ich das Problem, dass er immer das falsche Passwort ausgibt.
(statt z.B. aaa soll es dann arx oder sowas sein)
Ich bitte um Hilfe und ein bisschen Nachsicht, zumal ich hier heute das erste Mal einen Beitrag kommentiere
Zip Problem
extrahiert wird zwar nichts, aber ich kann dann nach der "falschen Passwordeingabe " normal auf den Inhalt zugreifen
hier der code:
#!/usr/bin/python
import zipfile
from threading import Thread
def extractFile(File, password):
try:
zFile.extractall(pwd=password)
print "found: ",password
except:
pass
def main():
File = zipfile.ZipFile("test.zip")
passFile = open("lower.txt")
for line in passFile.readlines():
password = line.strip("\n")
t = Thread(target = extractFile, args=(zFile, password))
t.start()
if __name__ == "__main__":
main()
der output:
found: ga
found: ky
found: aaa
found: abc
found: agm
found: amq
found: aqg
found: ask
found: axl
found: azf
hier der code:
#!/usr/bin/python
import zipfile
from threading import Thread
def extractFile(File, password):
try:
zFile.extractall(pwd=password)
print "found: ",password
except:
pass
def main():
File = zipfile.ZipFile("test.zip")
passFile = open("lower.txt")
for line in passFile.readlines():
password = line.strip("\n")
t = Thread(target = extractFile, args=(zFile, password))
t.start()
if __name__ == "__main__":
main()
der output:
found: ga
found: ky
found: aaa
found: abc
found: agm
found: amq
found: aqg
found: ask
found: axl
found: azf
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
bitte den Code in einen Code-Block setzen, weil a) ist er sonst schlecht lesbar, b) sind die essentiell wichigen Einrückungen nicht sichtbar.
Ansonsten:
* Variablennamen schreibt man in Python per Konvetion klein_mit_unterstrich.
* Nie nackte `try... except` benutzen, weil damit _alle_ Fehler abgefangen werden, inkl. Programmierfehler. Was zu unerwarteten Nebeneffekten und einem unerwartetem Programmverhalten führen kann.
* Warum entpackst du in einem Thread?
* `lower.txt`wird geöffnet, aber nicht geschlossen. Besser ist so wie so, mit dem `with`Statement zu öffnen
* Der gezeigte Code kann so eigentlich nicht funktionieren, weil `zFile` beim Aufruf des Threads nicht definiert ist.
* Bist sicher, dass bei der ZIP-Datei das Passwort korrekt hinterlegt ist?
Gruß, noisefloor
bitte den Code in einen Code-Block setzen, weil a) ist er sonst schlecht lesbar, b) sind die essentiell wichigen Einrückungen nicht sichtbar.
Ansonsten:
* Variablennamen schreibt man in Python per Konvetion klein_mit_unterstrich.
* Nie nackte `try... except` benutzen, weil damit _alle_ Fehler abgefangen werden, inkl. Programmierfehler. Was zu unerwarteten Nebeneffekten und einem unerwartetem Programmverhalten führen kann.
* Warum entpackst du in einem Thread?
* `lower.txt`wird geöffnet, aber nicht geschlossen. Besser ist so wie so, mit dem `with`Statement zu öffnen
* Der gezeigte Code kann so eigentlich nicht funktionieren, weil `zFile` beim Aufruf des Threads nicht definiert ist.
* Bist sicher, dass bei der ZIP-Datei das Passwort korrekt hinterlegt ist?
Gruß, noisefloor
ok
also das nächste Mal mit Einrückungen zwecks Code gut lesbar
hmmmmm, erst mal gute Informationen, mit denen ich besser arbeiten kann
danke dafür
ja das Passwort ist hinterlegt und kann die Datei auch nur öffnen, wenn das richtige Passwort eingegeben wird.
ich schreibe den Code nochmal um, versuche auch keine Liste als Password, sondern versuche es mit "string.lowercase" + for schleife
versuch das anzuwenden was gerade bemängelt wurde und melde und poste dann wieder
danke für die nützlichen Informationen
also das nächste Mal mit Einrückungen zwecks Code gut lesbar
hmmmmm, erst mal gute Informationen, mit denen ich besser arbeiten kann
danke dafür
ja das Passwort ist hinterlegt und kann die Datei auch nur öffnen, wenn das richtige Passwort eingegeben wird.
ich schreibe den Code nochmal um, versuche auch keine Liste als Password, sondern versuche es mit "string.lowercase" + for schleife
versuch das anzuwenden was gerade bemängelt wurde und melde und poste dann wieder
danke für die nützlichen Informationen
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Python kann keine verschlüsselten ZIP-Dateien erzeugen, jedenfalls nicht das zipfile-Modul. Steht in der Doku in der Einleitung, habe ich aber auch gerade erst gesehen. Von daher "passen" wohl auch alle Passwörter...
Gruß, noisefloor
Python kann keine verschlüsselten ZIP-Dateien erzeugen, jedenfalls nicht das zipfile-Modul. Steht in der Doku in der Einleitung, habe ich aber auch gerade erst gesehen. Von daher "passen" wohl auch alle Passwörter...
Gruß, noisefloor
Nach langem hin und her, hier die Lösung meines Problems, klappt wunderbar:
import zipfile
def main():
zipfilename = "datei.zip"
dictionary = "wordlist.txt"
password = None
zip_file = zipfile.ZipFile(zipfilename)
with open(dictionary, 'r') as f:
for line in f.readlines():
password = line.strip('\n')
print line
try:
zip_file.extractall(pwd=password)
password = "Found Password%s" % password
except:
pass
print password
if __name__ == '__main__':
main()
import zipfile
def main():
zipfilename = "datei.zip"
dictionary = "wordlist.txt"
password = None
zip_file = zipfile.ZipFile(zipfilename)
with open(dictionary, 'r') as f:
for line in f.readlines():
password = line.strip('\n')
print line
try:
zip_file.extractall(pwd=password)
password = "Found Password%s" % password
except:
pass
print password
if __name__ == '__main__':
main()
@Jaily: Du hast wieder vergessen, den Code in eine CodeBox zu packen. Eingrückt wird immer mit 4 Leerzeichen pro Ebene, nicht mal 2 und mal 4. Die Zeile mit `print line` ist zu weit eingerückt. Nackte except nie benutzen, da damit wirklich alles abgefangen wird (auch manche Programmierfehler).
Das readlines ist überflüssig, da man direkt über das Fileobjekt iterieren sollte.
Das Programm funktioniert auch nicht, da immer das letzte in der Wortliste ausgegeben wird.
Das readlines ist überflüssig, da man direkt über das Fileobjekt iterieren sollte.
Das Programm funktioniert auch nicht, da immer das letzte in der Wortliste ausgegeben wird.
Hey,
Das Programm soll einfach nur das richtige Passwort ausgeben und die Datei dann extrahieren.
Danke für den Tipp, dass es langsam "warm" wird
Muss nur einige Fehler korrigieren und alte gelernte Sachen wiederholen, mir fehlt einfach manchmal die Zeit und somit vergisst man vieles wieder
Das Programm soll einfach nur das richtige Passwort ausgeben und die Datei dann extrahieren.
Danke für den Tipp, dass es langsam "warm" wird
Muss nur einige Fehler korrigieren und alte gelernte Sachen wiederholen, mir fehlt einfach manchmal die Zeit und somit vergisst man vieles wieder
Hey
egal, wie ich das Programm jetzt geschrieben habe, es hat einfach entweder wieder mehrere richtige Passwörter gefunden, oder es ging gar nicht.
Mitlerweile verwende ich die Archivverwaltung in Linux um verschlüsselte zip Dateien zu erstellen.
mit ist klar, dass ich wahrscheinlich einen Katzensprung davon entfernt bin, aber ich komm einfach nicht drauf ;(
ich bitte um Hilfe
egal, wie ich das Programm jetzt geschrieben habe, es hat einfach entweder wieder mehrere richtige Passwörter gefunden, oder es ging gar nicht.
Mitlerweile verwende ich die Archivverwaltung in Linux um verschlüsselte zip Dateien zu erstellen.
mit ist klar, dass ich wahrscheinlich einen Katzensprung davon entfernt bin, aber ich komm einfach nicht drauf ;(
ich bitte um Hilfe