无需 vi(m) 显示河豚加密文件

问题描述 投票:0回答:1

我有一个在

vi
(
vi -x myfile
) 中使用 Blowfish2 加密 (
:setlocal cm=blowfish2
) 加密的文件。我可以毫无问题地提供密码并编辑文件。

如果我只想查看文件,是否有一个

cat
等效项可以获取密码并简单地显示内容?

vim cat blowfish
1个回答
0
投票

首先,我们谈论 Vim,因为 Vi 没有加密功能。

我没有一个“没有 Vim”的答案,但我确实有一个看起来和感觉有点像

cat
的答案。可以从 Pipe Vim buffer to stdout

的答案中得到一些灵感

总体思路是以批处理模式运行 Vim(参见

:help -s-ex
),
:print
所有作为参数传递的文件并随后立即退出。

基本上,这就是以下别名的作用:

alias vimcat="vim -es -c'argdo %print' -c'qa!'"

主要需要注意的是,Vim 处于静默模式,因此当遇到加密文件时,它会要求输入密钥,但提示符会被吞掉,因此看起来会卡住。如果您记住这一点,您可以输入密钥并继续。

有两种缓解方法,您可以添加

-x
选项并在启动时立即输入密钥(也无需提示并输入两次)。另一种方法是传递一个包含
-u key.vim
的配置文件
set key=<your secret key>
。当然,这意味着将密钥以纯文本形式保存在文件中,从安全角度来看,这可能是不可接受的。


我深入挖掘以找到更优雅的解决方案(但没有成功)。 Vim 在加密文件前添加魔术字符串

VimCrypt~03!
,其中
03
代表
blowfish2
加密。接下来是我认为是盐的内容,加密的文件内容排在最后。因此,难怪 OpenSSL 无法处理由 Vim 加密的文件(正如用户 phd 已经评论的那样)。我尝试了简单的方法,例如用 OpenSSL 可能消化的内容替换神奇的 VimCrypt 字符串,但这没有成功。

下一步是深入研究 Vim 的 Blowfish 算法的源代码,我在此之前就停止了。

© www.soinside.com 2019 - 2024. All rights reserved.