如何将 sh 脚本加密到 Linux 环境?

如何将 sh 脚本加密到 Linux 环境?

我有个小问题,我该如何加密我的脚本?我的意思是,例如,有时我有一些 sh ​​脚本(由 VMWare 等公司提供),当我 VI 它时,他们只显示加密文件而不是纯文本文件。

如何将纯文本脚本转换为加密脚本?

答案1

这个站点似乎有一个脚本可以完成你想要做的事情:

http://megastep.org/makeself/

来自网站:

makeself.sh 是一个小型 shell 脚本,它从目录中生成一个可自解压的 tar.gz 存档。生成的文件显示为 shell 脚本(其中许多脚本带有 .run 后缀),可以按原样启动。然后,存档将自行解压到临时目录中,并执行可选的任意命令(例如安装脚本)。这与 Windows 世界中使用 WinZip Self-Extractor 生成的存档非常相似。Makeself 存档还包括用于完整性自验证的校验和(CRC 和/或 MD5 校验和)。

参见有关 v2.1.5 支持通过 gpg 加密的评论。

我认为它被称为 shell 档案,最初是由 James Gosling(Java 的发明者)编写的。

http://blogs.oracle.com/jag/entry/shar_a_blast_from_the

答案2

如果您的目的是阻止某人看到脚本的内容(例如代码及其工作原理)并能够运行它,那么实际上没有办法做到这一点。您可以使用自解压和代码混淆,但最终真正想要的人只需付出一点额外的努力就能看到脚本。

使用加密的其他原因可能具有一定的实用性,但您还没有说明您要做什么或为什么,因此很难提出包含有关限制和漏洞信息的建议。

答案3

当我 VI 它时,他们只向我显示一个加密文件,而不是纯文本文件。

不,您正在查看的是压缩文件,而不是加密文件。

答案4

如果目标是隐藏脚本的源代码,你可能需要查看韓國。注意,直到今天我才真正使用过它。它至少对我的简单一行脚本 /bin/sh 测试脚本有用。

否则,您可以尝试使用 gpg 加密脚本并为每个用户提供密码。基本上,您获取完成的 shell 脚本,然后将其加密为装甲 ASCII 格式:

gpg -ca foo.sh

然后获取生成的“foo.sh.asc”文件,然后将其包装在另一个脚本中:

cat <<EOF | gpg -d | /bin/sh                                                 
-----BEGIN PGP MESSAGE-----                                                     
Version: GnuPG v1.4.10 (FreeBSD)                                                

jA0EAwMCN7iZSx7u9fRgySY/QTWgnwhYs0fSdLhwR0xL0Z1VOk6Lm5Jil06U7XtJ                
Yl62Gab6kg==                                                                    
=Yalz                                                                           
-----END PGP MESSAGE-----                                                       
EOF

密码为“test1”。加密后的脚本为:

echo "foo!"

虽然我向你保证我的脚本是安全的,但不要养成运行陌生人的此类脚本的习惯,因为你没有理由相信我,而且我可能会用我的加密脚本做一些狡猾的事情。:-)

不幸的是,足够精明的用户只需从脚本中删除“| /bin/sh”部分即可恢复脚本纯文本,这将导致脚本被转储到标准输出。

简而言之,如果最终用户可以运行该脚本,那么就有可能(只要有足够的动机和技能)对其进行逆向工程。不要将任何至关重要的信息(例如密码)放入这些模糊的脚本中。

相关内容