Почему мой взломщик Python brute force ha sh теперь работает? - PullRequest
0 голосов
/ 20 июня 2020

Я написал скрипт перебора Python ha sh. Но функция грубой силы не работает. Он будет принимать вводимые пользователем ha sh и l oop на всех итерациях. Тем не менее, я вижу на выходе, что он обнаружил ha sh, но он не сломает l oop.

ha sh - это sha256, а ввод - 'blah', он найдет ha sh blah, но не сломает l oop.

Спасибо за понимание!

Код:

def bruteforce(passwordHash, hashtype): #bruteforce not working?

    wordlist = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+{}:;',./?-="
    y=''
    length=1
    wordlistHash=''
    passwordHash=passwordHash

    while wordlistHash != passwordHash:
        for c in itertools.product(wordlist, repeat=length):
            word = y.join(c)
            if hashtype == 'sha256':
                wordlistHash = hashlib.sha256(word.encode("utf-8")).hexdigest()
                print(f"Trying password: {word}:{wordlistHash}")
            elif hashtype == 'md5':
                wordlistHash = hashlib.md5(word.encode("utf-8")).hexdigest()
                print(f"Trying password: {word}:{wordlistHash}")
            elif hashtype == 'sha1':
                wordlistHash = hashlib.sha1(word.encode("utf-8")).hexdigest()
                print(f"Trying password: {word}:{wordlistHash}")
            else:
                print("Please either enter a sha256, md5 or sha1 hash and restart the script")
                exit()
                if wordlistHash == passwordHash:
                    print(f"Found password: {word}")
                    break
        length=length + 1

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Это новый скрипт, я просто добавил

if wordlistHash == passwordHash:
    print(f"Found password: {word}")
    break

после каждого оператора if-elif, в противном случае программа будет отображать пароль только в том случае, если ввод неверен (потому что вы помещаете его в последний else заявление). Не знаю, понятно ли мне, надеюсь, это поможет, вот новая программа:

import hashlib
import itertools

def bruteforce(passwordHash, hashtype): #bruteforce not working?

    wordlist = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+{}:;',./?-="
    y=''
    length=1
    wordlistHash=''
    passwordHash=passwordHash

    while wordlistHash != passwordHash:
        for c in itertools.product(wordlist, repeat=length):
            word = y.join(c)
            if hashtype == 'sha256':
                wordlistHash = hashlib.sha256(word.encode("utf-8")).hexdigest()
                print(f"Trying password: {word}:{wordlistHash}")
                if wordlistHash == passwordHash:
                    print(f"Found password: {word}")
                    break
            elif hashtype == 'md5':
                wordlistHash = hashlib.md5(word.encode("utf-8")).hexdigest()
                print(f"Trying password: {word}:{wordlistHash}")
                if wordlistHash == passwordHash:
                    print(f"Found password: {word}")
                    break
            elif hashtype == 'sha1':
                wordlistHash = hashlib.sha1(word.encode("utf-8")).hexdigest()
                print(f"Trying password: {word}:{wordlistHash}")
                if wordlistHash == passwordHash:
                    print(f"Found password: {word}")
                    break
            else:
                print("Please either enter a sha256, md5 or sha1 hash and restart the script")
                exit()


        length=length + 1

bruteforce('8B7DF143D91C716ECFA5FC1730022F6B421B05CEDEE8FD52B1FC65A96030AD52', 'sha256')
0 голосов
/ 20 июня 2020

Потому что после строки

print("Please either enter a sha256, md5 or sha1 hash and restart the script")

Вы поместили функцию exit(). Если вы хотите, чтобы разрыв работал, поместите строки,

if wordlistHash == passwordHash:
    print(f"Found password: {word}")
    break

вне оператора if

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...