Я пытаюсь создать скрипт Python, который проверяет пароли в zip-файлах, защищенных паролем.Единственная проблема заключается в том, что всякий раз, когда я пытаюсь передать в качестве пароля конкретно "D", я получаю zipfile.BadZipFile: Bad CRC-32'
. Чтобы проверить это, я создал p.zip
, с паролем p
и только один файл.позвонил p.txt
и запустил этот код:
from zipfile import ZipFile
with ZipFile("p.zip") as zf:
password = "E"
try:
zf.extractall(pwd=bytes(password, "utf-8"))
except RuntimeError:
print("wrong password: " + password)
Я только что получил wrong password: E
, что я и ожидал.
Однако, когда я запускаю EXACT тот же код, кроме как с password = "D"
, я получаю zipfile.BadZipFile: Bad CRC-32 for file 'p.txt'
Я пробовал несколько строк, таких как p
, letmein
, password1
, DD
, DDD
и все они работают нормально.ТОЛЬКО установка password = "D"
дает zipfile.BadZipFile: Bad CRC-32 for file 'p.txt'
.
Кто-нибудь знает причину этого или возможного исправления?
Вот полная ошибка на консоли:
Traceback (most recent call last):
File "C:/Users/argolis/workspace/zip-breaker/zip-breaker/script2.py", line 6, in <module>
zf.extractall(pwd=bytes(password, "utf-8"))
File "C:\Users\argolis\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 1594, in extractall
self._extract_member(zipinfo, path, pwd)
File "C:\Users\argolis\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 1649, in _extract_member
shutil.copyfileobj(source, target)
File "C:\Users\argolis\AppData\Local\Programs\Python\Python37\lib\shutil.py", line 79, in copyfileobj
buf = fsrc.read(length)
File "C:\Users\argolis\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 876, in read
data = self._read1(n)
File "C:\Users\argolis\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 966, in _read1
self._update_crc(data)
File "C:\Users\argolis\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 894, in _update_crc
raise BadZipFile("Bad CRC-32 for file %r" % self.name)
zipfile.BadZipFile: Bad CRC-32 for file 'p.txt'