Zip Problem

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.
Antworten
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

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

:roll: :roll:
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Jaily: kann man denn die Daten auch mit dem falschen Passwort fehlerfrei entpacken? Ansonsten kann man nix sagen, weil Du nicht verrätst, was Du genau machst, also keinen Code zeigst.
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

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
Benutzeravatar
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
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

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
Benutzeravatar
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
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

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()
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

hey,

jetzt wo du es sagst..........
;(
gibt's doch nicht!!!!

dann auf ein weiteres, anscheinend sitzen die anderen Sachen auch noch nicht so ganz.
Muss ja irgendwie möglich sein ;)
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Jaily: Du bist ja nah dran. Was muß passieren, wenn Du das richtige Passwort gefunden hast?
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

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 :x
Jaily
User
Beiträge: 7
Registriert: Montag 18. Dezember 2017, 07:34

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
Antworten