vim暗号化ファイルを印刷(復号)する


10

-xvim のオプションを使用してファイルを暗号化します。私はこのファイルを書き込むよりも何度も読み取るので、常にcatを使用し、表示されているため暗号化されていることを覚えています。したがって、vimを使用し、パスワードを入力して、:q

cat(またはもちろん別のコマンド、もちろん私のパスワードをどこかに渡す)を使用してコンテンツを印刷または取得する方法はありますか?それとも、エディターに入らずにコンテンツのみを印刷するvimオプションがあるのでしょうか?


Vimにバンドルされているシェルスクリプトで、小ページャーと同様に動作するように設定します。「$ VIMRUNTIME / macros / less.sh」にあり、「$ VIMRUNTIME / macros / less.vim」スクリプトを使用します。を参照してください:help less。残念ながら、それでも終了するために押す必要はありqません(必要ありません:)。
8bittree

2
オープンソースのvimdecryptを試してください。
harrymc 2016

回答:


5

オープンソースのvimdecryptをご覧ください

vim-blowfishで暗号化されたファイルを復号化するためのコマンドラインツール。

バージョン7.3以降、vimは強力な組み込みのフグの暗号化/復号化を提供します。これは、特定の目的ではgnupgによるフィルタリングよりも便利です。残念ながら、結果のファイルはvimでしか読み戻すことができないため、バッチ処理やスクリプトでの使用は困難です。また、vimの依存関係とサイズを持つプログラムがロックを解除する必要がある場合、暗号化されたデータの寿命が問題になります。

Vimdecryptは、vimソースから2つの関連ファイル、blowfish.cとsha256.cを取り出し、単純なコマンドラインツールでそれらをインターフェイスします。データはファイルから読み取られ、復号化されたデータはstdoutに書き込まれます。

vimdecrypt path_to_data

パスワードは、stdin / stdoutリダイレクションを妨げないGNU getpassを介して取得されます。

Vimの構成システムは完全に取り除かれているため、開発された32ビットi386 linux以外のプラットフォームのサポートが壊れている可能性があります。2つの関連ファイルは変更されていないvimプロジェクトから取得されるため、vim.hヘッダーを修正して他のプラットフォームでサポートを復元することは簡単です。


試してみましたが、「入力はvim暗号化ファイルである必要があります」とスローされます。新しいバージョンやvimをサポートしていないのでしょうか、それともファイルで使用されている暗号化方法の問題でしょうか。
Pablo Matias Gomez

そのスクリプトで宣言された魔法がそうであることがわかりmagics = None, b'VimCrypt~02!', b'VimCrypt~03!'、ファイルをチェックしましたが、それはVimCrypt~01!:(
Pablo Matias Gomez

VimCrypt 01は、blowfish / blowfish2ではなくPZKIP cryptです。vimディストリビューションからcrypt_zip.cを取得して、blowfishバリアントの代わりにcrypt_zip_initとcrypt_zip_encodeを呼び出すためのサポートをvimdecrypt.cに追加することにより、同様のものを構築できます。私はこれを自分でやる気がほとんどです。
ssnobody

2
古いpkzipベースの暗号化(壊れていますが、互換性の理由からデフォルトです)を使用しており、新しい(Vim 7.3現在)ブローフィッシュベースのシステムではありません。私はふぐがVimCrypt〜02であることを知っており、blowfish2はVimCrypt〜03だと思います。ここ説明するように、暗号化をより強力なblowfishまたはblowfish2に変換すると、vimdecryptがおそらく機能します。
harrymc 2016

@harrymcありがとう!それは完全に機能しました。これがあなたの賞金です。
Pablo Matias Gomez

5

これは洗練された解決策ではありません-それは速くて汚いです-しかし、それは単一のファイルで動作し、シェルスクリプトとして使用できます。

これは、以下を実行する3つのコマンドのシーケンスです。

  1. vimでファイルを開く(読み取り専用モード): vim -R
  2. ファイルをプレーンテキストで保存して終了します。 -c ":set key= | sav ${filename}.plain | q
  3. 平文ファイルをキャットする: cat ${filename}.plain
  4. (オプション)プレーンテキストファイルを削除します。 rm ${filename}.plain

最後に、vimコマンドにパスワードも渡すスクリプトを作成できます。単純なスクリプトとしては、次のようになります。

filename=$1
password=$2

vim -R -c ":set key= | sav ${filename}.plain | q" -- ${filename} <<< $password && cat ${filename}.plain && rm ${filename}.plain

最初の引数はファイル名で、2番目の引数はパスワードです。

もちろん、覚えておくべきことがいくつかあります。

  • 名前が偶然に存在する既存のファイルを上書きしていないことを確認してください${filename}.plain
  • パスワードはコマンドラインに表示され、履歴に保存されます。毎回パスワードの入力を求められるようにするには、その<<< $password部分を削除します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.