Функция грубой силы SHA256 хэши - PullRequest
0 голосов
/ 14 марта 2020

Я уже создал python программу, которая хэширует ваш пароль к sha256.

import hashlib


u = input("Write 3 upper-case letters: ").upper()
d = int(input("Write 4 digits from 0-9 "))

testhashed = u+str(d)


key = hashlib.sha256(testhashed.encode())

print("function 1" +key.hexdigest())

Но я не знаю, как сделать функцию грубой силы. Был бы признателен, если бы кто-то мог вести меня через.

1 Ответ

2 голосов
/ 14 марта 2020

У вас есть некоторые проблемы с вашим кодом. Например, ничто не заставляет вас вводить только 3 буквы или даже заставляет их быть буквами. Также вы можете ввести больше или меньше 4 цифр. Во всяком случае, это простой пример грубого принуждения. Он просто просматривает все имеющиеся у вас варианты, пытаясь подобрать га sh. Обратите внимание, что это неоптимально, если не сказать больше, но, эй, использование грубой силы в Python не очень разумная идея, чтобы начать с нее, так что это достаточно хорошо. Обратите внимание, что я выбрал тестовый пароль близко к началу диапазона перебора, иначе вы всегда будете ждать, пока это произойдет.

import hashlib, itertools

def brute_force(hash):
    letters = [chr(n) for n in range(ord('A'), ord('Z'))]
    digits = [chr(n) for n in range(ord('0'), ord('9'))]

    for part1 in itertools.product(letters, repeat=3):
        for part2 in itertools.product(digits, repeat=4):
            password_try = ''.join(part1 + part2)
            if hashlib.sha256(password_try.encode()).hexdigest() == hash:
                return password_try


test_password = "BOO8000"
key = hashlib.sha256(test_password.encode()).hexdigest()
print("Hash: %s" % key)
print("Brute-forcing...")
recovered_key = brute_force(key)
print("Brute-force result: %s" % recovered_key) 
...