Centos7&8下shell脚本加密

时间:2021-10-18    作者:冰城心无泪    分类: Linux应用


测试系统版本:Centos7.9、Centos8.2

方法一:gzexe方式加密

gzexe:系统自带,无需另外安装,加密解密简单,适用于安全性不高的文件加密,支持除shell脚本外的其他文本加密。

gzexe加密/解密用法:
加密:gzexe Script-name.sh
解密:gzexe -d Script-name.sh

下面进行测试,Centos7与Centos8方法相同

首先,编写一个测试脚本名为test.sh,写入执行命令并保存如下:

#!/bin/bash
echo "This is a test script"

加密:

gzexe test.sh

此时,会生成一个名为test.sh的加密文件,一个名为test.sh~的备份文件,用cat命令查看下两个文件内容,test.sh内是加密内容,原内容不可见,备份文件test.sh~正常显示原内容,加密成功。
建议删除备份文件

解密,命令如下

gzexe -d test.sh
此时,会生成一个名为test.sh的解密文件 一个名为test.sh~的备份文件,用cat命令查看下两个文件内容,test.sh正常显示原内容,备份文件test.sh~内是加密内容,解密成功。

方法二:shc-4.0.3进行加密

shc-4.0.3:shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,SHC基于C语言编译而成,make是gcc的编译器,因此,我们在编译安装的时候,首先要确定主机是否安装gcc及make

下面进行测试,Centos7与Centos8方法相同

1 安装gcc及make,已安装的可略过,命令如下

yum -y install gcc make

2 下载并编译安装shc-4.0.3

因为是在GitHub上下载,所以你懂得,需要你用科学方法下来后,再传到需要安装的主机上,已附下载地址。
shc-4.0.3下载地址:https://github.com/neurobin/shc/archive/refs/tags/4.0.3.tar.gz

3 进入shc压缩包所在目录,并解压包

tar -xzvf shc-4.0.3.tar.gz

4 进入已解压目录并进行编译安装,编译安装全默认即可,并不需要创建任何目录,命令如下

cd shc-4.0.3
./configure && make install && ln -sf /usr/local/bin/shc /usr/local/sbin/

5 安装完成后就可以直接使用了,下面进行测试

我为了测试方便,删除了shc包及解压目录,创建个文件做测试,文件shc.sh内容如下
#!/bin/bash
echo "This is a test for shc"

常用参数说明,使用命令 shc -help可查看帮助
-e date (指定过期日期 格式为 月/日/年 如 02/25/2020)
-m message (指定过期提示的信息)
-f script_name(指定要编译的shell的路径及文件名)
-r Relax security. (可在相同操作系统的不同主机上执行)
-v Verbose compilation(编译的详细情况,一般没必要加)

shc -e Expiration_date -m "Prompt information" -v -r -f Script-name.sh
如:
shc -e 03/28/2022 -m "It's too late" -v -r -f shc.sh
命令解析:加密文件为shc.sh,过期日期为2022年3月28日,过期前可正常执行,过期后无法执行并提示信息:It's too late
参数 -r -f 是必须要有的,其他根据需要添加
如:
shc -r -f shc.sh
加密后有三个文件
shc.sh 源文件
shc.sh.x 加密后二进制文件,可随意改名直接执行,不可用“sh shc.sh.x”或“/bin/bash shc.sh”执行,要用“./shc.sh.x”执行
shc.sh.x.c 脚本对应的C语言版本源码

重要说明

网上有很多说用unshc来解密shc加密文件,但是在GitHub上,unshc作者有这么一段话:
Due to the many problems since shc 4.0.3, there seems to be a need for clarification. In shc 4.0.3 many structural changes have been incorporated, so that shc now makes use of various security mechanisms provided by the linux-kernel itself. Therefore, it is now almost impossible to extract the original shell script at all with current UnSHc version, if the new shc version was used. This requires a more in-depth approach, which means that a modified bash or a modified linux-kernel is needed to bypass the security measures.

翻译:
由于自SHC4.0.3以来存在许多问题,因此似乎需要澄清。在SHC4.0.3中,许多结构上的变化已经被合并,因此shc现在利用了linux内核本身提供的各种安全机制。因此,如果使用新的shc版本,现在几乎不可能用当前的unshc版本提取原始shell脚本。这需要更深入的方法,这意味着需要修改bash或修改linux内核来绕过安全措施。

总结起来就三个字:难---搞---定!所以,SHC4.0.3版本加密还是比较安全的。各位大佬可以抄起碗筷,放心食用!