使用 python zipfile 查找 zip 密码

Using python zipfile to find the zip password

首先我只想说我是一个非常菜鸟的程序员,但我仍然不是那种决定要制作 MMO 游戏的人。我的问题与 zip 有关 files.I 我一直在研究,但我找不到如何使用 zipfile 模块。我的想法是,你将输入 zip 的路径,然后输出密码。

这是我发现我认为我代码使用的命令

ZipFile.open(name, mode='r', pwd=None)

但问题是我不知道自己在做什么。

你有一种方法可以做到这一点,那就是蛮力。

所以你需要一个蛮力算法(你自己喜欢或设计的)and/or 彩虹 table 为你的脚本提供密码。之后,您只需循环遍历它,直到找到您的密码。

https://docs.python.org/2/tutorial/errors.html#handling-exceptions

这是简化的非优化代码

rainbowTable = ['Password', '123abc', 'qwerty', 'qwerty123'] # etc...
x = 0
data = ''
for x in xrange(len(rainbowTable)):
    try:
        data = ZipFile.open(name, mode='r', pwd=rainbowTable[x])
    if data != ''
        break

正如所指出的,上面的解决方案是非 pythonic 的(但如果你来自另一种语言,我更容易掌握)。应该这样写。

for password in rainbowTable:
    try:
        data = ZipFile.open(name, mode='r', pwd=password)
    if data != ''
        break
    else:
        print password 
然而

Python 并不是最好的选择。您可能希望使用 C 来完成此特定任务。

这是 Python 示例的真实示例: https://github.com/igniteflow/violent-python/blob/master/pwd-crackers/zip-crack.py

来自示例:

try:
    zip_file.extractall(pwd=password)
    password = 'Password found: %s' % password
except:
    pass
print password

代码总量为17行,建议阅读以加深理解。