Hi,
wenn ich in Python 3.7.2 versuche eine verschlüsselte zip-Datei zu entschlüsseln, ist die Zieldatei leer. Wenn ich z. B. 3 Text-Dateien in ein Paket verschlüssele und dann mit Python versuche, diese Dateien zu entschlüsseln, ist eine dieser Dateien leer.
Gibt es zu ZipFile.extractall vielleicht einen workaround?
Entpacken verschlüsselter zip-Pakete ist fehlerhaft
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Kann `ZipFile` überhaupt Verschlüsselung?
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@__blackjack__: entpacken ja, packen nein.
AFAIK kann zipfile nur crc32 Verschlüsselung, alles andere nicht. Die Doku schweigt sich leider da aus.
Gruß, noisefloor
@__blackjack__: entpacken ja, packen nein.
AFAIK kann zipfile nur crc32 Verschlüsselung, alles andere nicht. Die Doku schweigt sich leider da aus.
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@noisefloor: crc32 ist keine Verschlüsselung sondern ein Prüfsummenverfahren.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@__blackjack__: stimmt. Besser ausgedrückt: zipfile von Python unterstützt nur das Entpacken von Zip-Dateien, wo CRC32 Hashfunktionen verwendet wird. Was, glaube man diversen Quellen im Internet, wohl bei Zip-Dateien, die unter Win erstellt wurde, oft nicht der Fall ist, weil hier andere Verfahren bzw. kryptografisch bessere Funktionen zum Einsatz kommen.
Gruß, noisefloor
@__blackjack__: stimmt. Besser ausgedrückt: zipfile von Python unterstützt nur das Entpacken von Zip-Dateien, wo CRC32 Hashfunktionen verwendet wird. Was, glaube man diversen Quellen im Internet, wohl bei Zip-Dateien, die unter Win erstellt wurde, oft nicht der Fall ist, weil hier andere Verfahren bzw. kryptografisch bessere Funktionen zum Einsatz kommen.
Gruß, noisefloor
Nicht wirklich. Mehr als CRC32 passiert da wohl nicht. Tools wie WinZip und 7-Zip nutzen aber AES-Verschlüsselung. Insofern kann das gar nicht funktionieren.__blackjack__ hat geschrieben: ↑Samstag 29. Dezember 2018, 16:01 Kann `ZipFile` überhaupt Verschlüsselung?
Das Problem ist halt, dass das zipfile-Modul in reinem Python realisiert ist (mit entsprechend mäßiger Performance) und jetzt auch nicht sooo aktiv betreut wird. Der Fokus liegt dabei wohl auch nicht auf einer hundertprozentigen Kompatibilität zu jeglichen ZIP-Archiven, um es mal so auszudrücken.
Ich würde hier eher zu 7-Zip greifen, welches mit dem 7z-Kommando auch recht brauchbar für Shell-Skripte ist. Das gibt es für Linux und Windows und im Gegensatz zu WinZip ist es freie Software. Es bringt einerseits sein eigenes *.7z-Format mit, kommt aber auch sehr gut mit gängigen *.zip-Dateien klar.
Ich persönlich glaube ja, dass es gar nicht um Verschlüsselung geht. Der Threadstarter schreibt nämlich, dass eine von 3 Textdateien aus dem Archiv leer ist. Das ist alles sehr nerkwürdig.
Es gibt wohl auch einen Nachbau des zipfile-Moduls mit Verschlüsselung: https://github.com/wllm-rbnt/py-zipcrypt
Das Problem scheint also existent zu sein.
Es gibt wohl auch einen Nachbau des zipfile-Moduls mit Verschlüsselung: https://github.com/wllm-rbnt/py-zipcrypt
Das Problem scheint also existent zu sein.
@merlinuwe: ZipFile unterstützt nicht alles, was z.B. WinZIP kann, z.B. starke Verschlüsselung mit AES. Da sollte aber dann keine leere Datei entstehen, sondern eine Fehlermeldung erscheinen. Was willst Du eigentlich machen?
Klar ist das merkwürdig. Davon handelt dieser Thread ja. ;P
Dort versteht man unter "Verschlüsselung" aber wohl auch nur CRC32 (bzw hat es wahrscheinlich so übernommen). Sofern wirklich WinZip zum Verschlüsseln benutzt wurde (der Fragestellung nach passiert es ja außerhalb von Python), dann ist auf jeden Fall AES denkbar. Ich kann mir schon vorstellen, dass an der Stelle das Problem liegt.sparrow hat geschrieben: ↑Sonntag 30. Dezember 2018, 10:22 Es gibt wohl auch einen Nachbau des zipfile-Moduls mit Verschlüsselung: https://github.com/wllm-rbnt/py-zipcrypt
Das Problem scheint also existent zu sein.
Der Code zum Entpacken wäre halt hilfreich. Da das bloß ein paar Aufrufe der zipfile-API sein müssten, dürfte das ja kein großes Geheimnis sein...
- __blackjack__
- User
- Beiträge: 13004
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Also ich verstehe immer noch nicht wo das CRC32 hier in die Diskussion kommt, denn es geht um Verschlüsselung. Und die kann `ZipFile` aus der Standardbibliothek a) nur beim Lesen und b) nur die uralte und unsichere Variante von PKWARE die man nicht mehr verwenden sollte. Das `py-zipcrypt`-Modul rüstet dafür auch den schreibenden Teil nach. Den man nicht mehr verwenden sollte.
Bei anderen, sicheren Verschlüsselungsmethoden in ZIP-Dateien sehe ich das Problem, das die Unterstützung dafür von Programm zu Programm/Bibliothek zu Bibliothek unterschiedlich ist, so dass man da ein bisschen vorsichtig sein muss. Frei und recht verbreitet ist wohl nur 7zip, das mit AES-verschlüsselten Archivdateien klar kommt, und das gibt's soweit ich das sehe nur als Programm und nicht als Bibliothek. Da bleibt also nur `subprocess` als Anbindung.
Bei anderen, sicheren Verschlüsselungsmethoden in ZIP-Dateien sehe ich das Problem, das die Unterstützung dafür von Programm zu Programm/Bibliothek zu Bibliothek unterschiedlich ist, so dass man da ein bisschen vorsichtig sein muss. Frei und recht verbreitet ist wohl nur 7zip, das mit AES-verschlüsselten Archivdateien klar kommt, und das gibt's soweit ich das sehe nur als Programm und nicht als Bibliothek. Da bleibt also nur `subprocess` als Anbindung.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@__blackjack__: weil auf ein paar englischsprachigen Seiten wie z.B. dieser schon mal von "CRC32 encryption" die Rede ist. Was von der Terminologie aber wahrscheinlich auch nicht wirklich korrekt bzw sich so nicht auf's deutsche übertragen lässt.
Gruß, noisefloor
@__blackjack__: weil auf ein paar englischsprachigen Seiten wie z.B. dieser schon mal von "CRC32 encryption" die Rede ist. Was von der Terminologie aber wahrscheinlich auch nicht wirklich korrekt bzw sich so nicht auf's deutsche übertragen lässt.
Gruß, noisefloor