许多Shell脚本中设置了重要的数据和密码,又想让这些数据和密码不会让别人轻易看到,我们可以通过gzexe、Shc两种加密方法对脚本加密。
使用gzexe加密
gzexe加密很简单,并且gzexe是系统自带,所以我们不需要安装任何东西,只要在SSH中输入gzexe 加密的脚本。
这里需要注意,需要把加密的脚本放在root目录下
例如我们需要对“2019.sh”这个脚本进行加密,那么代码是这样的gzexe 2019.sh
加密以后2019.sh为加密后的文件,2019.sh~为加密前的文件
gzexe解密
命令为gzexe -d 2019.sh
代码为gzexe -d 2019.sh
解密以后2019.sh为解密后的文件,2019.sh~为解密前的文件
SHC加密
首先先安装SHCwget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
tar -zvxf shc-3.8.9.tgz
mkdir -p /usr/local/man/man1
cd shc-3.8.9
make test
rpm -q gcc gcc-4.4.7-3.el6.x86_64
cp -av shc-3.8.9.c shc.c
make
make install//如果出现you want to continue? 请输入y
chmod +x /bin/shc
shc
cd
注意在上面的make install后面//注释部分删除掉
在SSH中输入需要加密的脚本命令(需要把加密文件放在root目录下)
命令:shc -r -f 2019.shshc -r -f 2019.sh
执行后生成两个文件,其中2019.sh为原文件,2019.sh.x为加密后的文件,2019.sh.c为C语言可执行的文件
时效性加密
SHC可以设置时效性加密方法
以2019.sh为例shc -e 09/07/2019 -m -f 2019.sh
选项“-e”指定过期时间,格式为“日/月/年”;选项“-m”指定过期后执行此Shell程序的提示信息。
如果在过期后执行,则会有如下提示./abc.sh.x
./abc.sh.x: has expired!(文件已经过期)
使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题。
SHC解密
先下载安装unshcyum -y install git
git clone https://github.com/yanncam/UnSHc.git
下载后使用命令进入解密的文件夹cd UnSHc/latest
同时我们需要把SHC加密后的文件上传到root/UnSHc/latest目录下,上传以后以2019.sh.x为例./unshc.sh 2019.sh.x
解密以后也会生成两个文件,其中2019.sh为解密后的文件,2019.sh.x为解密前的文件
因为shc加密后并不是可执行的二进制文件,所以shc加密后还需要进行gzexe加密。同理,解密过程也是先解密gzexe后再解密shc