отправка пароля в инструменты командной строки - PullRequest
10 голосов
/ 10 декабря 2010

Я пишу приложение на python, которое использует утилиту командной строки (пропиетарную, чтобы ее нельзя было изменить) для выполнения части своей работы Проблема заключается в том, что я должен передать пароль в качестве аргумента командной строки в инструмент, который легко увидит любой пользователь, выполняющий команду «ps ax». Как можно безопасно отправить пароль для инструмента командной строки из Python (или сценария оболочки)?

Ответы [ 6 ]

5 голосов
/ 10 декабря 2010

Если в приложении есть интерактивный режим, вы можете использовать что-то вроде pyexpect .

Если он принимает пароли только в командной строке, приложение было ПРОИЗВЕДЕНО для того, чтобы быть уязвимым для «ps ax», как вы ожидаете преодолеть оригинальный плохой дизайн? Это пропетир, жалобы должны идти к виновному ^ H ^ H ^ H ^ H ^ H ^ Hauthor.

2 голосов
/ 10 декабря 2010

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

0 голосов
/ 07 января 2015

Как насчет этого в bash:

command_asking_for_password < <(command_that_prints_a_password; printf "\r")
0 голосов
/ 05 ноября 2014

Вы можете принудительно включить встроенную оболочку оболочки следующим образом

somecommand --password=$(echo "Enter Password: " >&2;read -s PASSWORD;echo $PASSWORD)

Ввод пароля заполняет команду перед ее выполнением

Пароль НЕ появится в истории вашей оболочки

Но он появится в вашем выводе 'ps'

0 голосов
/ 23 октября 2012

Напишите другой скрипт на python, который будет принимать пароль из командной строки, используя getpass.getpass(), и сохраните его в переменной. Затем вызовите команду из сценария с этой переменной, для которой в качестве параметра указан пароль.

0 голосов
/ 23 октября 2012

Вы можете получить больше безопасности, используя аргумент зашифрованного пароля и передав зашифрованный пароль, и программа может дешифровать его. По крайней мере, не было бы паролей в виде простого текста. Я использовал этот метод при запуске процесса через другой процесс и передаче ему аргументов. Это может быть неосуществимо в вашем случае, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...