Linux下的shell脚本用途广泛,经常包含IP、Pwd等关键信息,可读可写的特点很容易造成信息泄露,导致严重后果。基于这些原因,对脚本实施加密便变得很有必要。本文介绍的shc便是这样的一款加密工具。
1,下载安装
下载地址: http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.6.tgz
安装说明:
1)首先读一下README,但是作者并没介绍什么,又大致的看了一下Makefile。
2) tar vxf shc-3.8.6.tgz && cd shc-3.8.6
3) sudo mkdir -p /usr/local/man/man1/
4)make test
5)make strings
6)sudo make install
7)查看是否安装完成——which shc
/usr/local/bin/shc 说明安装成功。
2, 使用说明Usage
1) shc -r -f update.sh , -f 指定要解密的文件,-r 指定一种安全的加密方式。之后,生成两个文件update.sh.x和update.sh.x.c,前者是动态链接的二进制可执行文件,后者相应的是C程序。这儿便产生了一个问题:因为动态链接属性,前者update.sh.x运行时需要对应的库的链接的 支持,也就是说,目标运行环境也需要安装shc或者安装shc的库,这无疑很是麻烦,应用起来不方便。具体解决办法见下——生成静态链接的二进制文件。
2) shc -v -f update.sh , -v 输出详细的编译日志。其他与上 相同。
3) 生成静态链接的二进制可执行文件
~ CFLAGs=-static shc -r -f run.sh
~ file run.sh.x
4) 设置脚本的过期时间
~ shc -e 01/01/2019 -f run.sh (-e表示脚本将在2019年1月1日前失效)
5) 自定义返回信息
~ shc -m "hello world " -f run.sh (-m指定的信息在执行完后返回给终端用户)
3,其他事项
1) 安全问题:总体来说,相对安全。对于一般的应用场景来说是够用的。但是也可以通过gdb等其它的调试工具获得源码。如果安全系数要求更高, 可以考虑使用wzshSDK。
2) 跨平台运行:在编译shc的时候就要修改相应的Makefile,修改成交叉编译工具链。完成后,生成的加密的二进制文件就可以在目标平台运行了。