Как: Сгенерировать Хэш Пароля в Linux и как узнать тип хэша

Сгенерировать Хэш Пароля в Linux

Linux хранить зашифрованные пароли пользователей, также как и другую информацию связанную с безопасностью, например сроки действия аккаунтов или паролей, в файле 

/etc/shadow
.

Однажды у вас может возникнуть необходимость вручную отредактировать файл 

/etc/shadow
 для того, чтобы задать или изменить чей-то пароль.

В отличие от файла 

/etc/passwd
, который могут читать все, файл 
/etc/shadow
 должен быть доступен для чтения ИСКЛЮЧИТЕЛЬНО пользователю ROOT.

Для этого вам придется сгенерировать хэш пароля в формате, который будет совмести с 

/etc/shadow
.

Нет необходимости устанавливать дополнительные утилиты, так как это может быть легко сделано из командной строки в Linux с помощью Python.

Создать Хэш Пароля для /etc/shadow

Зашифрованные пароли в 

/etc/shadow
 хранятся в следующем формате:

$ID$SALT$ENCRYPTED

$ID обозначает тип шифрования, $SALT — это случайная (до 16 символов) строка и $ENCRYPTED — хэш пароля.

Тип ХэшаIDДлина Хэша
MD5$122 символов
SHA-256$543 символов
SHA-512$686 символов

Используйте следующие команды из терминала в Linux для создания хэшированых паролей со случайной солью для 

/etc/shadow
.

Создать MD5 Хэш пароля:

python -c "import random,string,crypt;
randomsalt = ''.join(random.sample(string.ascii_letters,8));
print crypt.crypt('MySecretPassword', '\$1\$%s\$' % randomsalt)"
---
$1$YjOzcqrf$Zqx4sx5CQRuEIFCdOLAJV0

Создать SHA-256 Хэш пароля:

python -c "import random,string,crypt;
randomsalt = ''.join(random.sample(string.ascii_letters,8));
print crypt.crypt('MySecretPassword', '\$5\$%s\$' % randomsalt)"
---
$5$LgsPuaeR$OCtm.3tpbS/wyOZAIy6dsVNP4x0GyohyGebkIz15e88

Создать SHA-512 Хэш пароля:

python -c "import random,string,crypt;
randomsalt = ''.join(random.sample(string.ascii_letters,8));
print crypt.crypt('MySecretPassword', '\$6\$%s\$' % randomsalt)"
---
$6$HMpFTkgb$WqzuqMqYbjWsXFrOtvZPo.1gIkH6HiXJGr4QPv.k26jE.3mE.sdf3dds[...]

Надеюсь эти команды будут вам полезны.

Только не забудьте поменять MySecretPassword на ваш YourSecretPassword.

Как вы видите, это действительно очень легко генерировать хэши для 

/etc/shadow
 из командной строки в Linux с помощью Python.

В частности потому, что Python, по умолчанию, установлен в большинстве Linux дистрибутивах.

Узнать тип хэша

Существуют два основных параметра, которые могут помочь распознать тип используемой хэш-функции:

  • Длина ХЭШа (каждая хэш-функция имеет определенную выходную длину);
  • Используемый алфавит (есть ли английские буквы? числа 0-9 и A-F … возможно это hex? используются ли специальные символы?).

Есть классный скрипт — «Hash Identifier» (зеркало на случай закрытия проекта).

Step 1: Скачиваем последнюю версию (v1.1 на текущий момент)

$ wget http://hash-identifier.googlecode.com/files/Hash_ID_v1.1.py

Step 2: Запускаем скрипт и копируем интересующие нас ХЭШи

$ python Hash_ID_v1.1.py
-------------------------------------------------------------------------
HASH: hccQ.YzR6GuuY
Possible Hashs:
[+] DES(Unix)
-------------------------------------------------------------------------
HASH: LZ55ugFXQpfyw
Possible Hashs:
[+] DES(Unix)
-------------------------------------------------------------------------
HASH: Step 3: Нажмите Ctrl + C для выходи из программы