0

ログインのリストを含むテキストファイルを使用するbashスクリプトがあります。

LOGINLIST=/home/user/logins.txt
while read line
do
echo $line
done < $LOGINLIST

ログインのリストをプレーンテキストとして保存したくないのですが、スクリプトを実行するたびに手動で復号化する必要はありません。(スクリプトプロンプトでパスワードを入力しても問題ありません。)

これを行う1つの方法は、スクリプトに行を含めることです。たとえば、opensslは、ファイルが読み取られる前にファイルを復号化します。残念ながら、スクリプトが停止した場合(おそらく、ログインしているサイトの1つが応答しない場合)、ファイルは不確定な期間保護されないままになります。

だから私はむしろ平文をメモリだけに残したい。

LinuxQuestionsに関するこの投稿(http://www.linuxquestions.org/questions/programming-9/can-we-hide-the-code-of-a-shell-script-370328/#post1887648)は、プレーンテキストをFIFOでうまくいくかもしれませんが、それは私にとってまったくなじみのない領域です。より良い/より簡単な方法はありますか?スクリプトが完了したときにメモリを消去するにはどうすればよいですか?

...そして、プレーンテキストをメモリに保持しながら、暗号化されたログインリストを編集する方法はありますか?

4

2 に答える 2

4

opensslコードの構造を変更せずに、プロセス置換を使用してこれを行うことができます。

ファイルを暗号化するには、次のようなものを使用します。

openssl blowfish -in plaint_text_file -out encrytped_file

(必要な暗号を選択すると、パスワードの入力を求められます。)

次に、暗号化されたファイルを次のように使用できます。

LOGINLIST=/path/to/encrypted/file
while read line
do
  echo $line
done < <(openssl blowfish -d -in $LOGINLIST)

これにより、パスワードの入力を求められます。一時ファイルは生成されません。

(最後のコマンドのスペースに注意してください。実際にはそうです< <(。)

于 2012-11-17T16:03:48.430 に答える
1

次のコマンドを使用して、vimでencrytped_fileという名前の既存の暗号化ファイルを開くことができます。

openssl blowfish -d -in encrytped_file | vim -

次のコマンドを使用して、vimを介してencrytped_fileという名前の暗号化ファイルを作成または変更/上書きできます。

:w !openssl blowfish -in /dev/stdin -out encrytped_file

パスワードプロンプトを探すだけです。彼らはvimのUIによって少し不明瞭になります。

この回答で使用されるトリックは次のとおりです。他の場合に使用できるように、コピーして貼り付けるのではなく、学習する必要があります。

  1. 裸のハイフンの引数が指定されると、vimはパイプ(別名:stdinまたは標準入力)から読み取ります。
  2. vimはそのバッファをコマンドにパイプすることができます:w !command
  3. UNIXコマンドが裸のハイフンを「標準入力から読み取る」と解釈することは非常に一般的ですが、すべてのコマンドが解釈するわけではありません。この場合、あなたはしばしば使うことができます/dev/stdin
于 2013-10-31T17:07:54.210 に答える