#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
цикл предложение, сообщающее пользователю, что пароль не найден. Он будет выполнен, если цикл завершится без abreak
, т. Е. Если Правильный пароль не найден.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` вообще очень плохая практика. Заставьте его принять и передать конкретное исключение «неверный пароль», и тогда вы увидите другие исключения.