Взлом солёного га sh с помощью словаря в python - PullRequest
0 голосов
/ 22 апреля 2020

Я сейчас пытаюсь задать вопрос, где мне нужно взломать соленую га sh в python, учитывая га sh e77decd0e7c8a7b4688b010241bece45 и соль "$ goodluck $". Я попытался загрузить 10 миллионов самых популярных паролей (https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt) и использовать их в качестве словаря. Затем я присоединяю соль к слову, зашифровываю его и затем получаю. Это тогда сравнивается с данным значением ha sh. Однако я все еще не смог взломать его. Вот мой код:


import hashlib 
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Hash import MD5

def dictionary_attack(password_hash):

    dic = lines #extracted from file
    pass_found = False

    for word in dic:
        word = word+"$goodluck$"

        key = get_random_bytes(16)
        cipher = AES.new(key, AES.MODE_EAX)
        ciphertext, tag = cipher.encrypt_and_digest(word.encode('utf-8'))

        hashed_val = MD5.new()
        hashed_val.update(ciphertext)
        hashed_val = hashed_val.hexdigest()

        if hashed_val == password_hash:
            pass_found = True
            recovered_password = word

    if pass_found:
        print("Your password is: {}".format(recovered_password))
    else:
        print("Password not found")

dictionary_attack("e77decd0e7c8a7b4688b010241bece45")

Любая помощь будет принята с благодарностью. Спасибо

1 Ответ

0 голосов
/ 22 апреля 2020

Использовали ли вы этот или этот список?

Пожалуйста, попробуйте обратный подход, чтобы посмотреть, работает ли ваш алгоритм или что-то не так:

  • выберите пароль
  • соль
  • получите га sh
  • создайте небольшой список с этим паролем и некоторыми другими
  • передайте этот список и номер ha sh в вашу функцию и посмотрите, работает ли он

Хорошо, это означает, что ваш код действительно работает, а пароль отсутствует в списке. Вместо того, чтобы использовать этот список, найдите «500 самых плохих паролей» и попробуйте их.

Я не знаю, какая библиотека быстрее, поэтому просто попробуйте ее и получите продолжительность для разумного количества паролей, чтобы усреднить накладные расходы, например, выберите столько паролей, что длительность составляет около одной минуты.

...