如何将sh脚本encryption到Linux环境中?

我有一个简单的问题,我怎么隐藏我的脚本? 我的意思是,例如,有时候我有一些sh脚本(由像VMWare这样的公司提供),当我VI的时候,他们只是给我看一个encryption的文件,而不是一个普通的文本文件。

如何将我的平面文本脚本转换为encryption的脚本?

这个网站似乎有一个脚本,将做你想要的:

http://megastep.org/makeself/

来自网站:

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

请参阅关于通过gpg支持encryption的v2.1.5的评论。

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

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

如果你的目的是阻止某人看到脚本的内容(例如代码和它的工作原理)并且能够运行它,那么没有办法做到这一点。 您可以使用自解压缩和代码混淆,但最终只有一些额外的努力才能够看到脚本。

还有其他一些原因使用encryption可能有一些实用性,但是你没有说你想要做什么或者为什么很难提出一个包含限制和漏洞信息的build议。

当我的VI,它只是给我一个encryption的文件,而不是一个平原的文本文件。

不,您正在查看压缩文件,而不是encryption文件。

这个问题有点不清楚。 如果您实际上想要encryption文件,则可以使用encryption实用程序(如bcrypt) 。 它将不再作为shell脚本运行,直到解密为止。

这可能是你在vi中看到的是压缩数据(要自解压和运行)。 有方法可以用这种方式打包shell脚本。 或者..也许你只是从一个可执行文件(而不是一个shell脚本)来看二进制数据。

如果你想达到我认为你想达到的目标。你可能会更好的做到这一点用户权限(即允许人们执行一个给定的可执行文件,但不读取它或有一些setuid解释器)。

如果隐藏脚本的源代码是目标,那么您可能需要查看shc 。 请注意,我从来没有真正使用过这个,直到今天。 它工作,至less对于我简单的一行脚本/ bin / shtesting脚本。

否则,您可以尝试使用gpg来encryption脚本并为每个用户提供密码。 基本上,你把你的完成的shell脚本,然后encryption到装甲的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”。 encryption的脚本是:

 echo "foo!" 

虽然我告诉你我的脚本是安全的,但不要养成从陌生人那里运行脚本的习惯,因为你没有理由相信我,而且我可能会用我的encryption脚本来做一些迂回的事情。 🙂

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

简而言之,如果最终用户可以运行脚本,则可以(具有足够的动机和技能)对其进行反向工程。 不要在这些混淆的脚本中放置任何重要的东西(比如密码)。

要encryption您的脚本并确保没有人查看它,您有两个select:

第一select

  1. 使用openssl命令手动encryption它。 而在将来,当你想运行脚本时,你将不得不手动运行openssl,并提供解密密码。

用opensslencryption:

 cat yourscript.sh | openssl aes-128-cbc -a -salt -k yourpassword > yourscript.enc 

用openssl解密:

 cat yourscript.enc | openssl aes-128-cbc -a -d -salt -k yourpassword > yourscript.dec 

yourscript.dec将与原始脚本yourscript.sh相同

第二个选项

  1. 使用像http://www.Enscryption.com这样的站点来自动encryption您的脚本,并使脚本的encryption版本可执行。 这个站点同时使用openssl的encryptionfunction和一些其他的混淆方法,使得入侵者很难窥探你的脚本或揭示你想隐藏的秘密。 有了这个站点,你可以encryptionshell脚本和命令行perl,python,ruby脚本。 我也认为PHP。