打印(解密)vim加密文件


10

-x在vim中使用该选项来加密文件。我读取此文件的次数比写入它的次数多,所以我总是使用cat,然后记住它由于显示的内容而被加密了。因此,我必须使用vim,输入密码,然后使用:q.. 退出。

有什么方法可以使用cat(或其他命令,当然要在其他地方输入密码)并仅打印/获取内容?或者也许只有vim选项仅打印内容而不进入编辑器?


有一个与Vim捆绑在一起的shell脚本,可将其设置为与较少的寻呼机类似。它位于“ $ VIMRUNTIME / macros / less.sh”中,并使用“ $ VIMRUNTIME / macros / less.vim”脚本。见:help less。不幸的是,它仍然需要按q:不需要)退出。
8bittree

2
试试开源vimdecrypt
harrymc '16

Answers:


5

看看开源的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标头来恢复对其他平台的支持应该很简单。


我已经尝试过,但是它使我“输入的内容应该是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而不是河豚变种,可以构建类似的内容。我几乎想自己做这个。
ssnobody

2
您使用的是旧的基于pkzip的加密(已破解,但出于兼容性原因仍为默认设置),而不是基于新的(自Vim 7.3起)基于河豚的系统。我知道河豚是VimCrypt〜02,我想河豚是VimCrypt〜03。您可以将加密转换为更强大的河豚或河豚2,如此处所述,然后vimdecrypt可能会为您工作。
harrymc '16

@harrymc谢谢!它工作得很好。这是您的赏金。
Pablo Matias Gomez

5

这不是一个很好的解决方案-它既快速又肮脏-但它确实适用于单个文件,您可以将其用作Shell脚本。

它是三个命令的序列,它们执行以下操作:

  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

其中第一个参数是文件名,第二个参数是密码。

当然,您应牢记以下几点:

  • 确保您不会覆盖恰好具有该名称的现有文件${filename}.plain
  • 密码将出现在命令行中并保存在历史记录中。如果希望每次都提示您输入密码,请删除该<<< $password部件。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.