前段时间公司项目中,需要给我们合作公司一个批量改数据的linux shell脚本,但是shell脚本是明文的代码,出于安全考虑(其实是不想让他们知道我们改的哪的数据),不能将明文脚本给合作公司,于是我找了两种给shell脚本加密的方法,现在分享给大家。
linux系统一般自带一款加密工具gzexe,但是这个工具可以还原出出加密后的shell脚本。(不建议使用)
我们先创建一个简单的测试脚本test.sh,输出1-5数字,内容如下:
使用gzexe对脚本加密,我们先看下gzexe的帮助
从帮助可以看出加【-d】参数可以解密,我们先对 test.sh脚本进行加密,在当前目录会自动备份原来的脚本为 filename.sh~
#gzexe test.sh
因为加密后的脚本会有乱码,我们用二进制对比下加密前和加密后的脚本,从打印看加密前后已经发生了变化,执行加密后的脚本可以顺利打印1-5数字。
我们再还原看下效果:
#gzexe -d test.sh
shc工具c写一个脚本加密工具,加密后的脚本会变成二进制可执行程序
首先我们进行下载,并进行编译安装
#wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz #tar -zxvf shc-3.8.9.tgz #cd shc-3.8.9 #make
我们可以看到编译后在当前目录生成了shc可执行程序,我们看下shc的帮助
shc的参数还挺多,拷贝shc到test.sh目录,使用参数显示shc加密的整个过程,
#cp ./shc-3.8.9 .. #mv .. #./shc ./shc -v -r -T -f test.sh
从加密的过程看到,shc先将test.sh脚本转换成C代码test.sh.x.c,然后调用linux的gcc 对test.sh.x.c进行编译,并生成了 test.sh.x 文件
shc: cc test.sh.x.c -o test.sh.x
我们来对比下原始脚本和编译后的二级制文件,并执行二进制文件
从上面的输出结果,可以看出编译后的test.sh.x程序完全变成二进制,在右侧看出跟脚本有关的字符串,执行结果也是正确的。
从以上的两个工具对比,我还是推荐使用shc来对脚本加密,加密后完全二进制字符,想破解也不是很简单的。
以上文章是个人原创,如果有不同的见解欢迎批评指正,喜欢我的文章可以关注我。