Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 25, 2022 11:24:22

hatter
Зарегистрирован: 2022-01-25
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Взлом пароля

Здравствуйте, не знаю как дописать правильно в цикле 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)

Прикреплённый файлы:
attachment task.zip (163,3 KБ)

Офлайн

#2 Янв. 25, 2022 18:36:01

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1308
Репутация: +  112  -
Профиль   Отправить e-mail  

Взлом пароля

 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)

Прикреплённый файлы:
attachment imfree-hi.gif (163,5 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version