Jump to content
Новости и объявления.
  • Уважаемые гости. При посещении нашего сайта, просим вас ознакомиться с разделами форума, прежде чем оставлять ваши объявления и т.д. Рекомендуем посетить разделы: "Общение, Коммерческий раздел, Услуги Хакеров и статьи, Отзывы о сайте и пользователях, Черный список" и другие разделы нашего сайта. ***ВНИМАНИЕ*** При обращении за помощью, просим быть внимательными, на сайте есть, как проверенные специалисты, так и непроверенные. Если вы обратились к специалисту, который проверку НЕ проходил, рекомендуем воспользоваться услугой гарант сервиса. xakervip.com
  • Взлом
  • Взлом
  • Гарант-сервис
  • Реклама на форуме

Recommended Posts

В этой статье мы разберём код программы на Python 3.6 с использованием BruteForce для взлома криптографической хеш-функции.

Всё, что нам необходимо знать, чтобы сделать перебор по словарю, – это алгоритм хеш-функции, с помощью которого зашифрована информация (в нашем случае – простой текст). В программе будем использовать три алгоритма из библиотеки hashlib: md5, sha256, sha512. Вы можете усовершенствовать код, добавив в него другие алгоритмы, представленные в hashlib.

 

 

 

Работа с командной строкой

Чтобы вызвать программу, перейдём в папку, где лежит исходник (main.py), словарь (будем использовать rockyou.txt) и файл с хеш-функцией (назовём его hash.txt). Аргументы командной строки имеют следующий вид:

  • Нулевой аргумент (необязателен)
  • Название алгоритма шифрования
  • Имя файла с хеш-функцией (hash.txt)
  • Имя словаря (rockyou.txt)

К примеру, вызов программы с использованием алгоритма md5 будет выглядеть так:

./main.py md5 hash.txt rockyou.txt

Разбираем код для взлома хеш-функции

Код небольшой, поэтому я помещу его здесь, а дальше буду разбирать по строкам.

# Examples:

# md5: fc5e038d38a57032085441e7fe7010b0 = helloworld

# sha256: 3fc9b689459d738f8c88a3a48aa9e33542016b7a4052e001aaa536fca74813cb = something

# sha512: 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 = hello

 

from sys import argv

from hashlib import sha256, sha512, md5

 

# chmod +x main.py

# ./main.py md5 hash.txt rockyou.txt

 

line = "----------------------------------"

 

try:

 hashAlgr,fileHash,fileDict = argv[1],argv[2],argv[3]

except IndexError:

 print("Error: Arguments!")

 raise SystemExit

 

with open(fileHash) as file:

 hashFunc = file.read()

 hashFunc = hashFunc.replace('\n','')

 

def generator(string):

 for word in string:

 passwd = word.replace('\n','')

 if encrypt(passwd) == hashFunc:

 yield line +"\n[True]: "+passwd

 return

 else:

 yield "[False]: "+passwd

 

def encrypt(string):

 passwd = string.encode()

 if hashAlgr == "md5":

 signature = md5(passwd).hexdigest()

 elif hashAlgr == "sha256":

 signature = sha256(passwd).hexdigest()

 elif hashAlgr == "sha512":

 signature = sha512(passwd).hexdigest()

 else: raise SystemExit

 return signature

 

print(line)

with open(fileDict, errors = "ignore") as dictionary:

 for password in generator(dictionary):

 print(password)

print(line)

Первым делом из библиотеки sys импортируем argv, чтобы работать с программой из командной строки. Затем из библиотеки hashlib импортируем алгоритмы, которые будем использовать – sha256, sha512, md5 (строки 6 и 7).

В строке 12 добавляем линию, которая будет отображаться при выводе найденной фразы (сделано для красоты).

В строках 14-18 инициализируем аргументы и проверяем их кол-во. Если при вводе в командную строку не обнаруживается какой-либо аргумент, выводится ошибка, а программа прекращает работу.

Если не вывелось никакой ошибки, то на строках 20-22 открываем файл с хеш-функцией (hash.txt) и удаляем оттуда перенос строки – \n.

Далее идёт функция generator: она осуществляет перебор ключей по словарю. В строке 28 убираем у слова перенос строки \n и записываем в переменную passwd. Затем сравниваем зашифрованную с помощью функции encrypt строку passwd с хеш-функцией, записанной в hash.txt. Если значения совпадают, возвращаем из функции generator строку [True] и найденный ключ. Если нет, то возвращаем [False] и текущий ключ.

Разберём функцию encrypt. В строке 34 преобразуем переданный passwd в юникод. Чтобы понять, для чего это делается, смотрите документацию к библиотеке hashlib, которую я прикрепил в начале статьи.

В строках 35, 37 и 39 сравниваем аргумент hashAlgr, полученный из командной строки с имеющимися алгоритмами. Если не находится совпадение, программа завершается. Если аргумент соответствует одному из наших алгоритмов, то шифруем passwd с помощью алгоритма, преобразовываем в шестнадцатиричную систему и возвращаем его.

Рассмотрим заключительный фрагмент кода. В строке 45 мы открываем словарь. Также при открытии игнорируем ошибки. Далее просто перебираем пароли через функцию generator.

Заключение

Логика программы довольно проста. Если вы хорошо разбираетесь в программировании, можете с лёгкостью усовершенствовать её, добавив несколько алгоритмов шифрования, например, blake2b или алгоритм, использующийся в OpenSSL. Также возможно создание посимвольного перебора для фиксированной длины, однако такой способ будет работать гораздо дольше, чем перебор по словарю, но зато шанс взломать криптографическую хеш-функцию будет гораздо выше.

 

Написанная информация в статье несет исключительно ознакомительный характер, чтобы дать возможность пользователю обезопасить себя. Автор не несет ответсвенности за использование данной информации  личных корыстных целях.

 

 

Link to comment
Share on other sites

  • Реклама на форуме

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Guidelines
Terms of Use
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.