Вычислить хэш bcrypt из командной строки

Я думаю, что вы используете Centos 7, где Network-Manager является утилитой настройки сети по умолчанию. Два интерфейса eth0.1 и eth0.500 помечены тегами vlan 1 и vlan 500. Для отображения всех интерфейсов используйте команду: # nmcli connection show Чтобы удалить оба интерфейса vlan, используйте следующие команды: # nmcli con del eth0.1 и # nmcli con del eth0.500 Вы можете найти помощь там https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-Configure_802_1Q_VLAN_Tagging_Using_the_Command_Line_Tool_nmcli.html

17
05.09.2016, 18:30
3 ответа

Вы можете использовать библиотеку Python. В моей системе Fedora я сделал:

sudo dnf search bcrypt

(sudo предназначен только для того, чтобы не тратить впустую место для пользовательского кеша dnf), и из результата можно увидеть, что есть пакет Python2 и Python3:

py-bcrypt.x86_64 : Python bindings for OpenBSD's Blowfish password hashing code
python3-py-bcrypt.x86_64 : Python 3 bindings for OpenBSD's Blowfish password hashing code

Установите версию Python2 и перечислите файлы в пакете:

sudo dnf install py-bcrypt.x86_64
rpm -ql py-bcrypt.x86_64

Это показывает, что есть файл /usr/lib64/python2.7/site-packages/bcrypt / __ init __. py , поэтому я могу получить документацию с помощью

pydoc bcrypt

Это показывает мне достаточно, чтобы написать следующую команду, которая будет хешировать строку "пароль" :

$ python -c 'import bcrypt; print(bcrypt.hashpw("password", bcrypt.gensalt(log_rounds=10)))'
$2a$10$vWFRZgbOx6RKOKYxCTtyWuMJM60E90Vdm/.0nj.X/o3dYUxvQ/2Dm

Для более поздних версий bcrypt используйте rounds = вместо log_rounds = .

12
27.01.2020, 19:46

Adicional a la respuesta de @Disassembler:

  • no es una buena idea pasar contraseñas desde la línea de comando (como la contraseña podría verse conps)
  • 15es un buen equilibrio entre complejidad y velocidad de generación de contraseñas

Script contenedor para htpasswdybcrypt:

#!/bin/sh

## bcrypt passwd generator ##
#############################
CMD=$(which htpasswd 2>/dev/null)
OPTS="-nBC 15"
USERNAME=$1

usage() {
        local script=$(basename $0)
        cat <<EOF
$script: Generate Bcrypt Hashed Passwords using htpasswd

Usage: $script username
EOF
        exit 1
}

check_config() {
    if [ -z $CMD ]; then
        printf "Exiting: htpasswd is missing.\n"
        exit 1
    fi

    if [ -z "$USERNAME" ]; then
            usage
    fi
}

check_config $USERNAME
printf "Generating Bcrypt hash for username: $USERNAME\n\n"
$CMD $OPTS $USERNAME
exit $?
3
27.01.2020, 19:46

Это актуально для FreeBSD, так как htpasswd недоступен без установки apache. Основываясь на ответе @meuh, вот как использовать Python3 в FreeBSD, чтобы получить хэш bcrypt пароля -, например, для базовой аутентификации в тюрьме traefik.

Обратите внимание, что нижеследующее предполагает наличие тюрьмы. Будьте осторожны с pip, если это базовая ОС. Отрегулируйте версию Python3 в зависимости от версии FreeBSD и текущих доступных версий Python3.

pkg install py37-pip
pip install bcrypt

И запускаем, опять подстраивая под версию Python 3:

python3.7 -c 'import bcrypt; print(bcrypt.hashpw(b"PASSWORD", bcrypt.gensalt(rounds=15)).decode("ascii"))'

@Stuart Cardall справедливо отмечает, что ваш пароль останется в истории. «Оставлено читателю», чтобы взять этот фрагмент Python3 и расширить его запросом на ввод имени пользователя и пароля, чтобы эта информация не попала в ps или в историю.

5
30.06.2020, 20:20

Теги

Похожие вопросы