題 打印(解密)vim加密文件


我用 -x vim中的選項來加密文件。我讀這個文件的次數比我寫的要多得多,所以我總是使用cat然後記住它是加密的,因為它顯示了什麼..那麼我必須使用vim,輸入密碼然後退出使用 :q ..

有沒有辦法使用cat(或其他命令,當然在某處傳遞我的密碼)並打印/獲取內容?或者也許只有一個vim選項只打印內容而不進入編輯器?


9
2018-06-07 21:09


起源


有一個與Vim捆綁在一起的shell腳本,它將其設置為與較少的尋呼機類似。它位於“$ VIMRUNTIME / macros / less.sh”並使用“$ VIMRUNTIME / macros / less.vim”腳本。看到 :help less。不幸的是它仍然需要按壓 q (沒有 : 需要)退出。 - 8bittree
試試開源 vimdecrypt。 - harrymc


答案:


看看開源 vimdecrypt :

用於解密vim-blowfish加密文件的命令行工具。

從版本7.3開始,vim提供強大的內置河豚   加密/解密,這對於某些目的來說更方便   而不是通過gnupg過濾。不幸的是,結果文件可以   只能通過vim回讀,這使得很難批量使用它們   處理或編寫腳本。此外,加密數據的壽命也是一個問題   如果需要具有vim的依賴性和大小的程序   解鎖它。

Vimdecrypt從vim源提取兩個相關文件,blowfish.c   和sha256.c,並在一個簡單的命令行工具中接口它們。數據   從文件中讀取,解密的數據寫入stdout。

vimdecrypt path_to_data

密碼是通過GNU getpass獲得的,不會干擾   stdin / stdout重定向。

Vim的配置系統完全被剝離,可能有   它支持其他平台,而不是32位i386 linux   發展起來的。由於這兩個相關文件來自vim   未修改的項目應該是恢復對其他的支持是微不足道的   通過修復vim.h頭文件的平台。


3
2017-07-28 12:43



我已經嘗試過了,但它會讓我“輸入應該是一個vim加密的文件”。我認為可能不支持更新的版本或vim,或者可能是我的文件中使用的加密方法的問題? - Pablo Matias Gomez
我看到那個劇本中宣稱的魔法是 magics = None, b'VimCrypt~02!', b'VimCrypt~03!' 我檢查了我的文件,它開始於 VimCrypt~01! :( - Pablo Matias Gomez
VimCrypt 01是PZKIP地穴而不是河豚/河豚2。可以通過從vim發行版抓取crypt_zip.c並在vimdecrypt.c中添加支持來調用crypt_zip_init和crypt_zip_encode而不是blowfish變種來構建類似的東西。我幾乎總是試圖自己這樣做。 - ssnobody
您正在使用舊的基於pkzip的加密(由於兼容性原因而破壞,但仍然是默認設置)而不是新的(基於Vim 7.3)基於blowfish的系統。我知道河豚是VimCrypt~02我覺得blowfish2是VimCrypt~03。您可以將加密轉換為更強的河豚或blowfish2,如 這裡描述,然後vimdecrypt可能會對你有用。 - harrymc
@harrymc謝謝!它工作得很好。這是你的賞金。 - Pablo Matias Gomez


這不是一個優雅的解決方案 - 它快速而且臟 - 但它確實適用於單個文件,您可以將它用作shell腳本。

它是三個命令的序列,執行以下操作:

  1. 在vim中打開文件(只讀模式): vim -R
  2. 以純文本格式保存文件並退出: -c ":set key= | sav ${filename}.plain | q
  3. Cat明文文件: 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

其中第一個參數是文件名,第二個參數是密碼。

當然,你應該記住幾件事:

  • 確保您沒有覆蓋恰好具有該名稱的現有文件 ${filename}.plain
  • 密碼將顯示在命令行中並保存在歷史記錄中。如果您希望每次都提示輸入密碼,請刪除 <<< $password 部分。

5
2017-07-28 09:39