Seite 1 von 1

zipfile-Modul zu langsam?

Verfasst: Donnerstag 17. September 2015, 00:58
von Sophus
Hallo Leute,

im nachfolgenden Quelltext stelle ich euch meine check_zipfile()-Funktion vor. Ich möchte eine *.zip-Datei auf Fehler überprüfen. Insgesamt funktioniert das Skript sowohl mit als auch ohne Passwort. Wenn die *.zip-Datei nicht passwortgeschützt ist, läuft die "Untersuchung" recht flott durch. Sobald die Zip-Datei aber passwortgeschützt ist, wird es kritisch. Die "Untersuchung" dauert wesentlich länger. Meine zip-Datei ist knapp 13 MB groß, und beinhaltet insgesamt 17 *.pdf-Dateien. Alle *.pdf-Dateien sind nicht größer als 1 MB, sie schwanken eher von 700 KB bis 900 KB. Mein Passowrt ist nur 7 Zeichen lang, bestehend aus Buchstaben und Zahlen. Die Gesamtdauer bei der "Untersuchung" mit Passwort beträgt 2 Minuten und 20 Sekunden. Nach dieser langen Wartezeit bekomme ich dann die entsprechende Print-Meldung, zum Beispiel ob die Datei beschädigt sei oder eben nicht.

Ich komme einfach nicht darauf, was diese Prozedur so dermaßen ausbremsen könnte. Hat jemand von euch eine Ahnung?

Code: Alles auswählen

def check_zipfile(zipfile_path, zip_pwd):
    try:
        with zipfile.ZipFile(zipfile_path, 'r') as f:
            f.setpassword(zip_pwd)
            try:
                ret = f.testzip()
                if ret is not None:
                    print "First bad file in zip: %s" % ret
                else:
                    print "zip file is correct"
            except RuntimeError as e:
                print e
                if 'encrypted' in str(e):
                    print 'This zip has encrypted files! Try again with a password!'
                if 'Bad password' in str(e):
                    print "Bad password"
                if 'password required' in str(e):
                    print "Password required"
            except Exception as Ex:
                print "Exception ", Ex
    except zipfile.BadZipfile as bad_zip_file:
        print "BAD", bad_zip_file
    except RuntimeError as RuEr:
        print "(RuntimeError)", RuEr
    except Exception as ex_corrupt:
        print "Exception", ex_corrupt

Re: zipfile-Modul zu langsam?

Verfasst: Donnerstag 17. September 2015, 06:57
von Sirius3
@Sophus: Der zip-Datei-Passwortschutz ist eher eine Spielerei:
zipfile.py hat geschrieben: ZIP supports a password-based form of encryption. Even though known
plaintext attacks have been found against it, it is still useful
to be able to get data out of such a file.
Daher ist das Entschlüsseln auch in reinem Python geschrieben und dementsprechend langsam. Welche Zeichen Du in Deinem Passwort verwendest ist für die Geschwindigkeit egal, und die Anzahl der Zeichen spielt auch nur eine sehr untergeordnete Rolle.

Re: zipfile-Modul zu langsam?

Verfasst: Donnerstag 17. September 2015, 16:12
von Sophus
@Sirius3 Inwiefern soll der zip-Datei-Passwortschutz eine Spielerei sein? Weil die Entschlüsselung in reinem Python geschieht?

Re: zipfile-Modul zu langsam?

Verfasst: Donnerstag 17. September 2015, 16:19
von DasIch
Der Passwortschutz an sich ist eine Spielerei da er nichts schützt.

Re: zipfile-Modul zu langsam?

Verfasst: Donnerstag 17. September 2015, 16:27
von Sirius3
@Sophus: weil die Verschlüsselung nicht heutigen Standards entspricht. Etliche Dateiformate haben gerade am Anfang der Datei immer die selben Bytes. Die zip-Kompression fängt also immer gleich an. Damit hat man automatisch den known plaintext, ohne dass man den eigentlichen Dateiinhalt kennen muß. Aus einem Vergleich der verschlüsselten Bytes mit den unverschlüsselten läßt sich das Passwort rekonstruieren. Damit hat man quasi keinen Schutz für zip-Dateien, ergo Verschlüsslung = Spielerei.

Re: zipfile-Modul zu langsam?

Verfasst: Donnerstag 17. September 2015, 16:57
von Sophus
Ich verstehe. Ich griff deshalb auf die zip-Variante zu, weil das in Python das einzige Modul ist, was unabhängig von dem Entpackungsprogramm läuft. Ich bin ein großer Freund von WinRAR, da die Passwörter dort enorm schwer zu knacken sind. WinRar, 7zip und all die anderen Depressions-Programme, die auch Passwortschutz unterstützen, sind alle von jeweiligen Programm abhängig. Und das wollte ich eben vermeiden. Bei zipfile-Modul bruacht man kein zip-Entpackungsprogramm und somit unabhängig. Daher nahm ich diese Alternative. Aber wenn der Passwortschutz eher Spielerei ist, kann ich es auch wieder lassen.