Генерация пароля в Unix/Linux

Каждый из нас всегда сталкивается с проблемой — генерация пароля. Точнее, с тем чтобы его придумать. Для меня — это не проблема, но чтобы например, использовать какой-то пароль в bash скриптах — нужно знать как сгенерировать какой-то «сложный» пароль. По этому, я в данной теме, решил собрать различные примеры того, как можно сгенерировать пароль. Поехали…

$ tr -dc [:graph:] < /dev/urandom | head -c 32| xargs echo;
{E&7#I^te+G4qN(_]ma2+}fYtk&LZcXV

Еще одна разновидность команды:

$ tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= < /dev/urandom | head -c 32 | xargs

Замечание: Данные команды работают в Linux! Чтобы заработало в Unix, например в MacOS, выполните:

$ LC_CTYPE=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)-+= < /dev/urandom | head -c 32 | xargs

Еще команда:

$ LC_ALL=C; cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Если получили ошибку:

tr: Illegal byte sequence

Решение будет — это добавить «export LC_ALL=C;» перед командой, например:

$ export LC_ALL=C; head -c 500 /dev/urandom | tr -dc "A-Za-z0-9"

Рассмотрим еще пример:

$ tr -dc '[:alnum:]' < /dev/urandom  | dd bs=4 count=8 2>/dev/null | xargs echo;
9kKbjIQRqQLpnSzRJT1n6wiXivqJzCMh

Можно выполнить команду и так:

$ cat /dev/urandom | tr -dc 'a-z0-9' | head -c 32| xargs echo;
9tko490pwdb0jmltu6i4rtxetdtq0mhp

Можно:

$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

Еще одна разновидность:

$ head -c 16 /dev/urandom | md5sum | head -c 32| xargs echo;

Можно использовать base64 в связке с командами:

$ base64 /dev/urandom | tr -d '/+' | head -c 32 | tr '[:upper:]' '[:lower:]' | xargs echo;
jryupsa3scgrpy6o1xwob3rhjxqz0q3v

Или:

$ pwgen -s 10 1

Так же, есть команда:

$ head -c24 < <(tr -dc '\041-\176' < /dev/urandom) | xargs echo;
{u*Ff&1`X~.qz)s,\PjVxt0

Или:

$ head -c24 < /dev/random | base64

и:

$ echo $(cat /dev/urandom | tr -dc [:print:] | tr -d '[:space:]\042\047\134' | fold -w 64 | head -n 1)

Еще:

$ openssl rand -base64 4

Или:

$ openssl rand -hex 100

или:

$ openssl rand -base64 500 | tr -dc 'a-zA-Z0-9' | fold -w 128 | head -n 1

И:

$ xxd -l16 -ps /dev/urandom

Еще в Linux можно выполнять:

$ cat /proc/sys/kernel/random/uuid

Вот и все, статья «Генерация пароля в Unix/Linux» завершена.

This entry was posted in Без рубрики. Bookmark the permalink.

One thought on “Генерация пароля в Unix/Linux

  1. Без повторяющихся символов:

    pass_gen() {
    _CHAR=’A-HJ-NP-Za-hj-np-z2-9!@$_’
    
    while ! echo «${_PASSWORD}» | grep -Pq «(?=(.*?[A-HJ-NP-Z]){3})(?=(.*?[a-hj-np-z]){3})(?=(.*?[2-9]){1})(?=(.*?[!@_\$]){1})»; do
    _PASSWORD=$(LC_ALL=C tr -c -ds $_CHAR $_CHAR < /dev/urandom | head -c8 | sed -E ':a; s/(([[:print:]]).*)\2/\1/iI; ta')
    done
    echo "${_PASSWORD}"
    }
    
    echo "$(pass_gen)"
    

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.