Как: Сгенерировать Хэш Пароля в 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 | $1 | 22 символов |
SHA-256 | $5 | 43 символов |
SHA-512 | $6 | 86 символов |
Используйте следующие команды из терминала в 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 для выходи из программы