Использование ожидаемого скрипта для gpg — расшифровки пароля — не работает

#encryption #passwords #expect #gnupg

#шифрование #пароли #ожидать #gnupg

Вопрос:

Привет, я довольно новичок в ожидаемых сценариях. Я пытаюсь использовать gpg для шифрования / расшифровки пароля. С шифрованием проблем нет. Что касается расшифровки, я пытаюсь автоматизировать ее с помощью ожидаемого скрипта. Основная команда, которую я пытаюсь использовать, такова: gpg -o -d <.gpg файл с зашифрованным паролем>

Когда я запускаю эту команду, stand alone, она запрашивает кодовую фразу, когда я ее ввожу, она создает выходной файл, как и ожидалось. В выходном файле есть пароль.

Когда я запускаю эту команду с использованием ожидаемого скрипта, чтобы кодовая фраза могла быть предоставлена автоматически во время выполнения, ожидаемый файл не создается.

Приветствуется любая помощь. Он не показывает никаких ошибок! Вывод таков:

 spawn gpg -o /home/gandhipr/passwdfile -d /home/gandhipr/passfile.gpg
gpg: CAST5 encrypted data
Enter passphrase: 
  

Ниже приведен мой ожидаемый скрипт.

 #!/usr/bin/expect
set timeout 1
set passdir [lindex $argv 0]
set passfile [lindex $argv 1]
set passfilegpg [lindex $argv 2]
set passphrase [lindex $argv 3]
spawn gpg -o $passdir$passfile -d $passdir$passfilegpg
expect "Enter passphrase:"
send "$passphrasen"
exp_internal 1
exit 0;
interact
  

Комментарии:

1. 1: У меня еще не было проблемы, но этот вопрос хорош уже тем, что он предоставляет быстрый рецепт для выполнения этой раздражающей задачи! Следует упомянуть, что это плохая практика обеспечения безопасности (кодовая фраза понятна, просто посмотрев на /proc/$pid/cmdline , что может пойти не так?), Но я подстраховался, и это самый прямой способ сделать это.

Ответ №1:

Используйте r вместо n в команде отправки: r символы возврата каретки, которые имитируют нажатие пользователем Enter.