我使用该zipfile
库对加密的 zip 文件进行了字典攻击。当我开始使用 BIG 词典时,有时会得到误报结果,即密码可能是“wool”,而“12630”被认为是正确的。在那种情况下,解密的文件显然包含胡言乱语。
这不是我的代码中的错误,而是zipfile
库检查提供的密码是否正确的方式。我设法通过检查解密文件的大小来减少误报,如果它等于 0,则认为它是错误的并继续搜索。但是我的问题仍然存在,因为当文件包含乱码时,它的大小> 0。所以我的问题是,有什么方法可以在 Python 中确定文件是否已正确解密或是否包含乱码?
PS。是的,我知道解密 zip 文件zipfile
很慢,但正如我之前所说,我这样做是为了掌握 Python。
这是我的代码:
import zipfile
import os
zfile=raw_input("Please input zip's file name\n")
diction=raw_input("Please input dictionary\n")
found = False
zipf = zipfile.ZipFile( zfile, 'r' )
f = open(diction, 'r')
for line in f:
pswd = line
pswd = pswd[:-1]
zipf.setpassword(pswd)
try:
zipf.extractall()
if (os.path.getsize(zfile[:-4]) != 0):
found = True
break
except RuntimeError:
continue
except Exception:
continue
zipf.close()
这是我在 python 的错误跟踪器中提交的错误报告。正如您所看到的,他们不认为这是库的“错误”,这就是为什么我要求检查文件是否正确解密的替代方法。
PS。对于任何关心的人,在上面提供的链接中,他们告诉我这是 zip 文件格式的问题,没有什么可以做的。所以我想,问题有点回答了。