У вас есть некоторые проблемы с вашим кодом. Например, ничто не заставляет вас вводить только 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)