
11.08.2020, 14:53
|
|
Постоянный
Регистрация: 16.11.2018
Сообщений: 620
С нами:
3943766
Репутация:
47
|
|
Сообщение от M@rtein
Помогите определить тип хеша - $pbkdf2-sha256$25000$GE0Rxy/Z6/PQLpNGx/sBXA$K2UtzWXp2grZaRWntLIW.sKzYlAwfb6x8ybP630nDYE
И как сгенерить такой для пароля - admin
Взят из CMS Typo3
Понимаю что pbkdf2, что sha256, что 25000 итераций, а что далее, где salt где password - не понимаю
Для кота это номер 20300 (hashcat -m 20300).
Вот функция для генерации хэша, с двумя библиотеками (passlib и hashlib)
Код:
#!/usr/bin/python3
import hashlib
import os
import base64
from passlib.hash import pbkdf2_sha256
def special_b64(input_bytes):
out_b64_special = base64.b64encode(input_bytes,altchars=bytes("./","ascii")).rstrip(b'=');
return str(out_b64_special,'ascii')
my_hashfunction = "sha256";
my_pass = "admin";
my_rounds = 25000;
my_salt_size = 31;
my_salt = os.urandom(my_salt_size);
hash_hashlib = hashlib.pbkdf2_hmac(my_hashfunction, bytes(my_pass,"ascii"), my_salt, my_rounds);
hash_passlib = pbkdf2_sha256.using(rounds=my_rounds, salt_size = my_salt_size, salt = my_salt).hash(my_pass);
#print("Salt (b64): " + (str(base64.b64encode(my_salt,altchars=bytes("./","ascii")))).rstrip('='));
print("Salt (b64): " + special_b64(my_salt));
print("Hash hashlib: " + special_b64(hash_hashlib));
print("Hash passlib: "+ hash_passlib);
print("Formatted output: $pbkdf2-%s$%d$%s$%s" % (my_hashfunction,my_rounds,special_b64(my_salt),special_b64(hash_hashlib)));
В общем вывод разделяется с помощью знака "$":
- Хэш-функция использованная для производного хэша
- Количество повторов
- Соль закодированная в спецальном формате -> в принципе используется обычный base64, только вместо "+" используется "." и в конце обрезается пэддинг ("=") см. special_b64
- Собственно сам хэш, тоже в спецальном base64 формате.
|
|
|