2015-07-21 67 views
-1

我一直在试图制作一个简单的zip文件密码破解程序(只是为了好玩,不是恶意的目的),但是我的try和except语句不起作用。无论输入总是导致除语句,永远不会执行的其他内容(即使该zip文件不提取物)如何捕获我期望的特定异常?

import zipfile 

k = 0 
file = zipfile.ZipFile('john.zip') 
def check(i): 
    p = bytes(i, 'ascii') 
    try: 
     file.extractall(pwd=p) 
    except: 
     return False 
    else: 
     return True 

def crack(): 
     x = open('john(1).txt', 'r') 
     for i in x.readlines(): 
      i.strip('\n') 
      k = check(i) 
      if k == True: 
       print('Password is: ' + k) 
       break; 
      x.close() 
     x.close()` 
+3

你有没有尝试采取'try'块的语句,所以你可以看到实际的错误? – TigerhawkT3

+0

是的,我已经自己运行代码,并得到你所期望的错误,并且当输入正确的密码时没有错误 – Ellis

+1

您是否尝试过只捕获异常'except Exception:'而不是'except:'? – johnharris85

回答

1

1)登录错误的except块。帮助很多。

2)您正在'for'循环中关闭文件。循环读取文件中的行时出现错误的想法。

3)的最后一行在其端部的反向引号字符(可能是问题的错字):`

0

我得到它与一对夫妇中裂纹()的变化的工作如下面的评论。这是什么为我工作:

… 
def crack(): 
    x = open('john(1).txt', 'r') 
    for i in x.readlines(): 
     i = i.strip() # not just the statement i.strip('\n') 
     k = check(i) 
     if k == True: 
      print('Password is: ' + i) # not print('Password is: ' + k) 
…