Python暴力强制zip文件

时间:2015-04-15 11:13:50

标签: python encryption zipfile

我一直在研究Python中的一个程序,它破解了加密的zip文件。问题是,我的程序的一部分关键功能不起作用。

我的计划如何运作...

  

用户输入zip文件名。

     

用户输入最小密码长度。

     

用户输入最大密码长度。

     

程序将进入一个循环,它将生成一个在最小值和最小值内的密码。最大数量。

     

程序将尝试使用密码打开zip。

     

如果密码成功,程序将打印出密码。

这是我的计划搞砸的第二步。

当密码匹配时,程序继续,而不是弯腰,然后尝试另一个密码。我认为这是因为在尝试打开zip时发生错误。因此,即使密码匹配,它也只是直接进入"除了:"言。

这是我的代码搞砸了 -

# Function which tries to open zip (The buggy function)
def extract(zip_name, password, number):
    print("\nAttempt", number)
    # Tries and opens the zip
    try:
        zip_name.extractall(pwd=password)
        print("Success: " + password)
        exit(0)
    except:
        print("Failed: " + password)

任何人都可以告诉我如何使这项工作。感谢

1 个答案:

答案 0 :(得分:2)

致电exit(0)时会发生什么?好吧,如果您阅读了内置exit的文档,那么您会看到它说:

  

调用时,使用指定的退出代码

引发SystemExit

所以它引发了一个异常,但是在你的程序中,它位于try: ... except: ...内,所以接下来发生的事情是捕获异常并且程序打印Failed并继续。

这就是为什么人们经常提出建议" don't use a bare except:" - 你几乎不想抓住SystemExit

相反,当密码不匹配时,您可以捕获zipfile引发的实际异常,这似乎是RuntimeError。此外,如果您使用exit(0)替换return True,并在程序的更高级别处理成功或失败,它将改进该计划。