Взломщик паролей для ZIP-файлов не выдает ошибку. Как мне это исправить?

#python #brute-force

#python #перебор

Вопрос:

Мой взломщик паролей .zip -файлов останавливается на строке 53 ( z.extract(Item) ) без сообщения об ошибке. Пароли создаются, но я не уверен, что происходит.

 import zipfile

input("press enter to start...")

#characterlist
Charlist = ("abcdefghijklmnopqrstuvwxyz")
Com = [] #complete combination list 

#error handling
while True:
    try:
        rg = int(input("Range of char: ")) #how big is the password
        break
    except ValueError:
        print("Please use an integer")
        print( )

#calculation of all possible tries
total = 26**rg

print( )
print("thease are all the possible outcomes with the amount of characters the password has")
print(total)
print( )

#combination
for current in range(int(rg)):
    Alph = [i for i in Charlist]
    for x in range(current):
        Alph = [y   i for i in Charlist for y in Alph] #the combination
    Com = Com   Alph

#zipfile error handling
while True:
    try:
        file = input("Zipfile name: ") #the name of the zip file that has the locked items in
        z = zipfile.ZipFile(file   ".zip") #the zip name   the .zip
        break
    except FileNotFoundError:
        print("File was not found (ps. do not add .zip to the end of the zip file name)")
        print( )

#number of tries
Tr = 0
Item = input("Name of file that is secured   its type (eg: .txt): ") #the file that you want to crack

for password in Com:
    try:
        Tr  = 1 #incrementation of tries
        z.setpassword(password.encode('ascii')) #setting password
        z.extract(Item)
        print(f'Passcode was found, the passcode was {password}') #from here to the end area isn't being read :(
        print(f'It was found at try number {Tr}')
        break
    except:
        pass

input("press enter to close...")
 

Сообщение «ошибка»:

 Zipfile name: example
Name of file that is secured   its type (eg: .txt): example.txt
press enter to close...
>>> 
 

Он завершается без обратной связи и ничего не делает. Что должно было произойти:

 Zipfile name: example
Name of file that is secured   its type (eg: .txt): example.txt
Passcode was found, the passcode was 'example'
It was found at try number 'x'
press enter to close...
>>> 
 

Комментарии:

1. Я думаю, это произойдет, если пароля нет в списке сгенерированных паролей? Вы можете попробовать добавить else в свой for цикл предложение, сообщающее пользователю, что пароль не найден. Он будет выполнен, если цикл завершится без a break , т. Е. Если Правильный пароль не найден.

2. @JohanL Спасибо за вашу помощь, однако пароль не найден даже для действительно простых паролей, таких как «aa» … и, как ни странно, пароли создаются. Я не могу отправить скриншот, но вот как это выглядит, когда я print(Com) : ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'aa', 'ba', 'ca', 'da', 'ea', 'fa', 'ga', 'ha', 'ia', 'ja'... . Возможно, я неправильно понял, что вы имели в виду, на случай, если я ошибся, я прошу прощения.

3. Я думаю, что это будет z.extract(item,pwd = password) вместо z.setpassword(password.encode('ascii')) z.extract(Item)

4. except: pass Вероятно, вы скрываете исключение, из-за которого программа не работает. Except: pass` вообще очень плохая практика. Заставьте его принять и передать конкретное исключение «неверный пароль», и тогда вы увидите другие исключения.