Как расшифровать строку, ранее написанную в BASH?

у меня проблема с безопасностью скрипта. Я должен передать ему имя пользователя и пароль, но я не могу дать ему незашифрованный пароль. Этот скрипт написан на bash.

#!/bin/bash
HOST=$1
USER=$2
PASSWORD=$3
#PASSWORD=`perl -e 'print pack "H*",$PASSWORD'`
wget -v $HOST --http-user=$USER --http-password=$PASSWORD --no-check-certificate
......

Я думаю использовать что-то вроде этого для создания зашифрованного пароля:

perl -e 'print unpack "H*","yourpassword"'

и что-то вроде этого для описания

descrpt=`perl -e 'print pack "H*","encrypted password"'`

но это не работает. Кто-нибудь может мне помочь?


person clarkseth    schedule 08.11.2013    source источник
comment
Я думаю, что вы просто указываете пароль в виде обычного текста, и wget зашифрует его по мере необходимости при общении с сервером.   -  person chepner    schedule 08.11.2013


Ответы (2)


Ваша команда не шифрует, она просто кодирует пароль в виде шестнадцатеричной строки. Любой программист, который увидит строку, сразу же узнает, как вернуть открытый текстовый пароль.

Вместо этого передайте пароль wget таким образом, чтобы люди не могли просто взять его из вывода ps. Вот один из способов сделать это:

wget -v "$HOST" --http-user="$USER" --no-check-certificate --config=/dev/stdin <<< "http_password = $PASSWORD"
person that other guy    schedule 08.11.2013
comment
Извините, но мне нужно передать его по-своему, а не через стандартный ввод, потому что это ввод для другого скомпилированного скрипта. - person clarkseth; 09.11.2013
comment
Я не понимаю. Вы не вызываете wget? - person that other guy; 09.11.2013

Проблема решена с помощью:

эхо $пароль | openssl enc -base64 -d

person clarkseth    schedule 11.11.2013