原创

Shell脚本转换为二进制文件,shell脚本加密,shc最新版安装

温馨提示:
本文最后更新于 2021年12月29日,已超过 1,075 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

 
 

在Linux系统中写相关脚本,特别是运维类型的脚本,难免会在脚本中指定一个账户密码以及IP信息,处于安全考虑我们可能不希望其他人员登陆上来可以看到这些信息,这时候的办法就是进行打包编译成为二进制文件进行运行,这里使用到的工具就是网上说所的SHC工具,不过百度了一圈都是旧版本的文件,使用旧版本编译后发现不能正常运行,编译的脚本运行会成为僵尸进程

 
 

下面来看看最新版本的安装方法,最新版本的源码在GitHub上维护

 
 

首先下载源文件,如果服务器可以连接到Internet,我门需要在Linux上安装git工具,然后把代码克隆到本地

 
 

# yum install git gcc

 
 

#git clone https://github.com/neurobin/shc

 
 

如果是离线环境,我们首先需要安装本地gcc编译环境,访问访问GIThub项目地址进行下载

Shell脚本转换为二进制文件,shell脚本加密,shc最新版安装

安装非常的简单,前提是得有gcc编译环境

#./configure

#make

#make install

 
 

使用方法,很简单

[root@mail test]# shc -h

shc Version 3.9.6, Generic Shell Script Compiler

shc GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>

shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDUCABh] -f script

 
 

-e %s Expiration date in dd/mm/yyyy format [none]

-m %s Message to display upon expiration ["Please contact your provider"]

-f %s File name of the script to compile

-i %s Inline option for the shell interpreter i.e: -e

-x %s eXec command, as a printf format i.e: exec('%s',@ARGV);

-l %s Last shell option i.e: --

-o %s output filename

-r Relax security. Make a redistributable binary

-v Verbose compilation

-D Switch ON debug exec calls [OFF]

-U Make binary untraceable [no]

-C Display license and exit

-A Display abstract and exit

-B Compile for busybox

-h Display help and exit

 
 

Environment variables used:

Name Default Usage

CC cc C compiler command

CFLAGS <none> C compiler flags

 
 

Please consult the shc man page.

 
 

在文件夹下有一个test目录里面有各种sh的测试脚本我们可以来进行测试,或者我们自己写脚本

 
 

#cd test

#shc -f test.bash -o test

 
 

-o 重定向输出的文件

-f 指定脚本文件

 
 

然而还有个很强大的功能,如果公司老板惹你不高兴,把脚本添加一个有效期,过了有效期就无法执行了

例如:

[root@mail test]# shc -e "28/12/2017" -m "error code 0" -f test.bash -o qnjslm

 
 

-e 指定脚本失效日期,格式dd/mm/yyyy

-m 过期后显示的提示信息,哈哈做坏事千万不要留名了

 
 

执行效果如下

[root@mail test]# date

Fri Dec 29 06:09:17 UTC 2017

[root@mail test]# ./qnjslm

./qnjslm: has expired!

error code 0

[root@mail test]#

 
 

 
 

 
 

 
 

正文到此结束
本文目录