ZIP entpacken

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
schleppiworks
User
Beiträge: 3
Registriert: Freitag 10. April 2020, 16:37

Hey,

ich möchte eine in der GUI erstellte .zip Datei mit einem Script öffnen.

ich habe die Kompressionsmethode deflated gewählt und ein Passwort gesetzt, verslüsselt mit aes256.

Code: Alles auswählen


import zipfile
import string

password = 'abc'

with zipfile.ZipFile('to_encrypt.zip', 'r') as extracted_zip:
    extracted_zip.extractall(pwd=str.encode(password))
    
Nach mehreren Tutorials in dem ebenfalls extractall(), zum entpacken und encode(),
da extractall() binäre passwörter braucht, benutzt wird, sollte das funktionieren.

Führe ich das Script aus, sagt mir die Konsole, dass die Kompressionsmethode nicht unterstützt werde,
selbst wenn ich in ZipFile() hier deflated nochmals als Parameter angebe (im code oben nicht)

Output Konsole:

Code: Alles auswählen

$ python openZip.py 
Traceback (most recent call last):
  File "openZip.py", line 7, in <module>
    extracted_zip.extractall(pwd=str.encode(password))
  File "/usr/lib/python3.8/zipfile.py", line 1647, in extractall
    self._extract_member(zipinfo, path, pwd)
  File "/usr/lib/python3.8/zipfile.py", line 1700, in _extract_member
    with self.open(member, pwd=pwd) as source, \
  File "/usr/lib/python3.8/zipfile.py", line 1571, in open
    return ZipExtFile(zef_file, mode, zinfo, pwd, True)
  File "/usr/lib/python3.8/zipfile.py", line 819, in __init__
    self._decompressor = _get_decompressor(self._compress_type)
  File "/usr/lib/python3.8/zipfile.py", line 720, in _get_decompressor
    _check_compression(compress_type)
  File "/usr/lib/python3.8/zipfile.py", line 700, in _check_compression
    raise NotImplementedError("That compression method is not supported")
NotImplementedError: That compression method is not supported
Habe ich etwas in meinem bisschen Code übersehen, das vielleicht keinen Sinn ergibt?
Oder ist es doch die Syntax - diese ganzen Fehler im zipfile modul - ich habe doch kein nichtoptionalen Parameter vergessen?


ich mache das ganze auf manjaro und python 3.8.2
Benutzeravatar
darktrym
User
Beiträge: 785
Registriert: Freitag 24. April 2009, 09:26

Und du bist sicher das zipfile aes256 beherrscht, ich dachte dafür gibt's bspw. pyzipper?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
schleppiworks
User
Beiträge: 3
Registriert: Freitag 10. April 2020, 16:37

darktrym hat geschrieben: Freitag 10. April 2020, 17:52 Und du bist sicher das zipfile aes256 beherrscht, ich dachte dafür gibt's bspw. pyzipper?
ah, ich weiß nicht ob es das beherrscht.
hab zu wenig Ahnung um zu verstehen warum, wenn ich das passwort doch kenne,
beim öffnen die verschlüsselungsmethode zu beachten ist.
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

schleppiworks hat geschrieben: Freitag 10. April 2020, 18:17 hab zu wenig Ahnung um zu verstehen warum, wenn ich das passwort doch kenne,
beim öffnen die verschlüsselungsmethode zu beachten ist.
Stell Dir vor, Du hast Dein Bankkonto mit einem Passwort gesichert und möchtest gerne Geld abheben. Gehst aber mit Deinem Passwort immer zur falschen Bank.
schleppiworks
User
Beiträge: 3
Registriert: Freitag 10. April 2020, 16:37

Danke euch beiden,
habs mit dem hinweis von darktrym geschafft zu googlen und nun läufts.

Code: Alles auswählen

import pyzipper


password = 'abc'

with pyzipper.AESZipFile('to_encrypt.zip', 'r', compression=pyzipper.ZIP_DEFLATED, encryption=pyzipper.WZ_AES) as extracted_zip:
    extracted_zip.extractall(pwd=str.encode(password))
@kbr, wir greifen hier also Direkt auf den Inhalt der zip zu und versuchen das mit der angegeben Entschlüsselungsmetode?
Das problem war also weniger, dass mein Betirebssystem dem Prozess nicht das Recht zum Zugriff gewährte, sondern,
dass zipfile nichts sinnvolles herausbekam als es die zip mit (anscheinend CRC32) versuchte zu entschlüsseln?

Oder meinst du das mit der andern Bank doch eher so wie, dass zipfile einfach nicht versteht was ich meine und deswegen gar nichts tut?
Nur versteh ich dann nicht warum ein Prozess die methode kennen muss mit der ein anderer entschlüsselt...

Naja gibt noch viel zu lernen
Danke und Gute Nacht
Antworten