Форум сайта python.su
Здравствуйте, не знаю как дописать правильно в цикле Whilr код для взлома пароля архива, помогите пожалуйста
import string import random import zipfile PASSWORD_LENGTH = 4 def extract_archive(file_to_open, password): """ Функция открывает архив с паролем и возвращает результат операции (bool) """ try: file_to_open.extractall(pwd=password.encode()) return True except Exception as e: print(e) return False def hack_archive(file_name): """ Функция брутфорсит запароленный архив """ file_to_open = zipfile.ZipFile(file_name) # объект архива wrong_passwords = [] # список паролей, которые не подошли tries = 0 # колличество неудачных попыток while True: """ Здесь необходимо реализовать: 1. Случайную генерацию пароля, который будет соответствовать условиям: * длина - 4 символа (`PASSWORD_LENGTH`) * допустимые символы пароля - только цифры * type(password) == str 2. Открытие архива со сгенерированым паролем - `extract_archive(file_to_open, password)` При удачном открытии (True) - прервать цикл При неудачи (False) - добавить пароль в список `wrong_passwords` и больше не проверять данный пароль 3. Счетчий неудачных попыток """ print(f'Archive {file_name} is hacked. Password - {password}') print(f'Password was found after {tries} tries') ############# filename = 'task.zip' hack_archive(filename)
Прикреплённый файлы:
task.zip (163,3 KБ)
Офлайн
from zipfile import ZipFile with ZipFile("task.zip") as zf: pwrds = ('{:>04}'.format(i).encode('utf-8') for i in range(10000)) for pwd in pwrds: try: zf.extractall(pwd=pwd, path="unzip") print(pwd.decode()) break except: pass
Отредактировано xam1816 (Янв. 25, 2022 18:38:14)
Прикреплённый файлы:
imfree-hi.gif (163,5 KБ)
Офлайн