2015-07-21 5 views
-1

Я пытался создать простой почтовый файл для взлома паролей (просто для забавы, а не для злонамеренных целей), однако моя инструкция try и except не будет работать. Независимо от того, на входе всегда приводит к тому, за исключением заявления, и еще никогда не выполняется (даже если файл зип делает экстракт)Как я могу получить конкретное исключение, которое я ожидаю?

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

Вы пытались поймать только Exception 'except Exception:' вместо просто 'except:'? – johnharris85

ответ

1

1) Регистрирует ошибку в блоке, кроме. Помогает много.

2) Вы закрываете файл в цикле «для». Плохая идея, поскольку цикл читает строки из файла.

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) 
… 
Смежные вопросы