これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド gpgwrap です。
プログラム:
NAME
gpgwrap - gpg の小さなラッパー
SYNOPSIS
gpgwrap -V
gpgwrap -P [-v] [-i] [-a] [-p ]
gpgwrap -F [-v] [-i] [-a] [-c] [-p ] [-O ] [-] [ ...]
gpgwrap [-v] [-i] [-a] [-p ] [-O ] [-] gpg [GPGオプション]
DESCRIPTION
GNU プライバシー ガード (gpg) オプション --passphrase-fd を提供します。 これは指示します gpg 〜へ
指定されたファイル記述子からパスフレーズを読み取ります。 通常、このファイル記述子は開かれます
gpg 経由で実行されます execvp(3)。 まさにそれがそれです gpgwrap やってる。 の
パスフレーズが渡される可能性があります gpgwrap 4つの方法で:
* ファイルパスとして、パスフレーズはファイルにプレーンテキストとして保存されます
* 別のプログラムから stdin にパイプされます。 gpgwrap
* を通って GPGWRAP_PASSPHRASE 環境変数
* gpgwrap それを促す
予防策がなければ、最初のポイントは安全なインフラストラクチャを損なう gpg 提供します。 しかし
純粋なバッチ指向の環境では、これが望ましいかもしれません。 そうでなければ、あなたがそうであれば
パスフレーズは一度入力すればよいが、ファイルにプレーン テキストとして保存したくない
gpg-agent あなたが探しているものです。 もう XNUMX つのセキュリティ上の異議は、
環境変数 GPGWRAP_PASSPHRASE これにはパスフレーズが含まれており、次のユーザーによって読み取られる可能性があります。
同じユーザーの他のプロセス。
OPTIONS
-V、-version
バージョンを印刷して終了します。
-P、--print
パスフレーズを取得し、それをマングルして標準出力に出力します。
-F、--ファイル
読む gpg 指定されたファイルからのコマンド。 もし は - 標準入力から読み取られます。
XNUMX 行に XNUMX つのコマンドが必要です。 指定された行は次のように処理されます。
次の方法:
※そもそもパスフレーズがめちゃくちゃです。 つまり、珍しい文字
バックスラッシュでエスケープされた XNUMX 進数に置き換えられます。
* 次に、壊れたパスフレーズが環境変数に保存されます。
GPGWRAP_PASSPHRASE.
* 結果が次のように渡される前に、「exec gpgwrap --」が各行の先頭に追加されます。
「sh -c」の引数。
-h、-help
使用情報を印刷します。
-v、-verbose
詳細レベルを上げます。
-i、--interactive
常にパスフレーズの入力を求めるプロンプトが表示されます (-p と環境変数は無視されます)。
-a、--ask-XNUMX 回
パスフレーズの入力を求めるプロンプトが表示される場合は、XNUMX 回尋ねます。
-c、--チェック終了コード
ファイルから gpg コマンドを読み取っているときに、 gpgwrap デフォルトでは終了コードを無視します
その子プロセスの。 このオプションは、終了コードのチェックを有効にします。 子供なら
異常終了、または終了コードが 0 に等しくない場合は終了します。 gpgwrap すぐに止まり、
この終了コードを返します。 セクションも参照してください バグ.
-p 、 --パスフレーズファイル
からパスフレーズを読み取ります 。 場合 は - 標準入力から読み取られます。 パスフレーズ
プレーンテキストであることが期待されます。 このオプションが指定されていない場合、パスフレーズは
環境変数から取得されます GPGWRAP_PASSPHRASE またはそれは
環境変数が設定されていない場合は、制御 tty でプロンプトが表示されます。
-o , --オプション名
プログラムが認識できる「--passphrase-fd」オプションの名前を指定します。
実行されました。 を使用したい場合に便利です。 gpgwrap 他と組み合わせて
プログラムよりも gpg.
制限
指定されたパスフレーズには、渡された方法に応じていくつかの制限が適用されます。
〜へ gpgwrap:
* サイズ制限があります。パスフレーズは一定のサイズを超えてはなりません。
キロバイト (正確な制限についてはソース コードを調べてください)。
* gpgwrap \000 であってもパスフレーズ内のすべての文字を使用できますが、これは
それを意味するのではありません gpg それを受け入れます。 gpg パスフレーズを拒否するか、読み取りだけを行う可能性があります
\012 (C では \n とも呼ばれる) のような文字が含まれている場合は、その一部。
※環境変数を設定した場合 GPGWRAP_PASSPHRASE 特別に摂取する必要があります
バックスラッシュ文字に注意してください。 gpgwrap バックスラッシュを使用して XNUMX 進数をエスケープします
数値 (オプション -F を参照)。 したがって、バックスラッシュ自体を 134 進数の \XNUMX として記述します。
例
1.
gpgwrap -p /パス/to/a/secret/file \
gpg -c -z 0 --batch --no-tty \
--cipher-algo bugfish < infile > outfile
/path/to/a/secret/file からパスフレーズを読み取り、実行します gpg 対称にする
infile を暗号化して outfile に書き込みます。
2.
gpgwrap -i -a \
gpg -c -z 0 --batch --no-tty \
--cipher-algo bugfish < infile > outfile
以外は上記と同じ gpgwrap パスフレーズの入力を XNUMX 回要求されます。
3.
gpgwrap -F -i - <
gpg --decrypt --batch --no-tty < "$HOME/infile1" > "$HOME/outfile1"
gpg --decrypt --batch --no-tty < "$HOME/infile2" > "$HOME/outfile2"
gpg --decrypt --batch --no-tty < "$HOME/infile3" > "$HOME/outfile3"
gpg --decrypt --batch --no-tty < "$HOME/infile4" > "$HOME/outfile4"
EOL
gpgwrap パスフレーズの入力を求められ、次の XNUMX つのインスタンスが実行されます。 gpg 復号化する
指定されたファイル。
4.
GPGWRAP_PASSPHRASE="私の秘密のパスフレーズ"
export GPGWRAP_PASSPHRASE
gpgwrap -F -c -v /tmp/cmdfile1 - /tmp/cmdfile2 <
gpg --decrypt --batch --no-tty < "$HOME/infile1" > "$HOME/outfile1"
gpg --decrypt --batch --no-tty < "$HOME/infile2" > "$HOME/outfile2"
gpg --decrypt --batch --no-tty < "$HOME/infile3" > "$HOME/outfile3"
gpg --decrypt --batch --no-tty < "$HOME/infile4" > "$HOME/outfile4"
EOL
以外は上記と同じ gpgwrap 環境経由でパスフレーズを取得します
変数を使用して、他のファイルから追加でコマンドを読み取り、その終了コードをチェックします。
あらゆる gpg 実例。 これは、XNUMX つある場合を意味します。 gpg コマンドにゼロ以外の終了コードが含まれています。
さらにコマンドが実行されます。 さらに gpgwrap 詳細な出力を生成します。
5.
GPGWRAP_PASSPHRASE="$(gpgwrap -P-i-a)」
export GPGWRAP_PASSPHRASE
find 。 -max Depth 1 -type f |
ファイルの読み取り中。 する
FILE2="$FILE.bz2.gpg"
bzip2 -c "$ファイル" |
gpgwrap gpg -c -z 0 --batch --no-tty \
--cipher-algo フグ > "$FILE2" &&
touch -r "$FILE" "$FILE2" &&
rm -f "$FILE"
行われ
パスフレーズを読み取り、現在のディレクトリ内のすべてのファイルを圧縮し、暗号化して、
元のファイルの日付を保持します。
6.
find 。 -max Depth 1 -type f -name '*.bz2.gpg' |
awk '{
printf("gpg --decrypt --batch --no-tty --quiet ");
printf("--no-secmem-warning < %s\n", $0);
}' |
gpgwrap -F -i -c - |
bzip2 -d -c - |
grep -i 'データ'
現在のディレクトリ内のすべての *.bz2.gpg ファイルを復号化し、解凍して印刷します。
データのすべての発生を除外します。 結果をパイプすると less あなたはトラブルに巻き込まれます
なぜなら gpgwrap & less 同時に TTY からの読み取りを試みます。 このような場合には
環境変数を使用してパスフレーズを指定することをお勧めします (例
上記はこれを行う方法を示しています)。
7.
GPGWRAP_PASSPHRASE="$(gpgwrap -P-i-a)」
export GPGWRAP_PASSPHRASE
gpgwrap -P |
ssh -C -x -P -l ユーザーホスト "
GPGWRAP_PASSPHRASE=\"\$(cat)\"
...
"
パスフレーズの入力を XNUMX 回要求し、パスフレーズを GPGWRAP_PASSPHRASE 環境
変数に保存します.
8.
echo -n "パスフレーズ: "
スティ -エコー
read GPGWRAP_PASSPHRASE
echo
スティ echo
export GPGWRAP_PASSPHRASE
手動でパスフレーズの入力を求めるもう XNUMX つの方法。 組み合わせて必要でした
の古いバージョンでは gpgwrap、彼らは -P をサポートしなかったためです。 注意してください
この方法では、バックスラッシュでエスケープされた XNUMX 進数への自動変換は行われません。
場所。
9.
echo "私の秘密のパスフレーズ" |
gpg --batch --no-tty --passphrase-fd 0 \
--output 出力ファイル --decrypt infile
パスフレーズを与える安価な方法 gpg 無し gpgwrap。 は使用できませんのでご注意ください
ファイルを渡す標準入力 gpgstdin がすでにパスフレーズに使用されているためです。
10.
gpg --batch --no-tty \
--passphrase-fd 3 3< /path/to/a/secret/file \
< インファイル > アウトファイル
これはパスフレーズを与えるためのより高度な方法であり、オプションと同等です。
-pの gpgwrap。 この例は少なくとも bash で動作するはずです。
11.
gpg --batch --no-tty --passphrase-fd 3 \
3< <(echo "mysecretpassphrase") \
< インファイル > アウトファイル
上記と同様ですが、パスフレーズは直接指定されます。 この例では少なくとも
bash を操作します。
onworks.net サービスを使用してオンラインで gpgwrap を使用する