Linux下对shell脚本加密解密的方法

第一种方法(gzexe):


这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。

使用方法:

加密:

gzexe test.sh

它会把原来没有加密的文件备份为 test.sh~ ,同时 test.sh 即被变成加密文件;

解密:

gzexe -d test.sh

 

第二种方法(shc):

shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、密码等不希望公开的问题.

shc的官网下载地址:

http://www.datsi.fi.upm.es/~frosal/sources/

安装方法:

wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
tar zxf shc-3.8.9.tgz 
cd shc-3.8.9
mkdir -p /usr/local/man/man1
make install

这是要回答yes或者y,不能直接回车,否则会报错

发现报错的情况比较严重,如果报错内容如下:

*** Installing shc and shc.1 on /usr/local *** ?Do you want to continue? y install -c -s shc /usr/local/bin/ install -c -m 644 shc.1 /usr/local/man/man1/ install: target `/usr/local/man/man1/' is not a directory: No such file or directory make: *** [install] Error 1

请创建 mkdir -p /usr/local/man/man1/  ,然后运行make install

也可以直接无视,一般没什么影响,只是少了对应的帮助文档。

常用参数:

-e date (指定过期日期)

-m message (指定过期提示的信息)

-f script_name(指定要编译的shell的路径及文件名)

-r   Relax security. (可以相同操作系统的不同系统中执行)

-v   Verbose compilation(编译的详细情况)

加密:

shc -v -f test.sh

-v 是现实加密过程

-f 后面跟需要加密的文件

运行后会生成两个文件,test.sh.x 和 test.sh.x.c.

test.sh.x为二进制文件,赋予执行权限后,可直接执行。更改名字mv test.sh.x test.sh

test.sh.x.c 是c源文件。基本没用,可以删除

过期加密法:

另shc还提供了一种设定有效执行期限的方法,过期时间,如:

# shc -e 18/10/2018 -m " It's too late to run this script " -f test.sh

选项“-e”指定过期时间,格式为“日/月/年”;选项“-m”指定过期后执行此shell程序的提示信息。

如果在过期后执行,则会有如下提示:

# ./abc.sh.x

./abc.sh.x: has expired!(文件已经过期)

使用以上方法要注意,需防止用户更改系统时间,可以通过在程序中加入自动更新系统时间的命令来解决此问题。

测试都已通过,请放心使用!

解密:

git地址:https://github.com/yanncam/UnSHc

将unshc wget或者上传到任意目录

wget down.osuu.net/File_sh/unshc.sh

然后可执行如下命令查看帮助

./unshc.sh -h

执行下面的命令进行解密(此过程可能耗时有点长,需耐心等待)

chmod +x unshc.sh
./unshc.sh test.sh.x -o test_decrypted.sh

test.sh.x文件为经过加密的二进制文件

test_decrypted.sh文件为解密后shell脚本

© 版权声明
THE END
喜欢就支持一下吧
点赞18 分享
抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容