Total Pageviews

Wednesday, 14 December 2011

使用shc加密shell脚本

安装:
# wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz
# tar zvxf shc-3.8.6.tgz
# cd shc-3.8.6
# make test
# make strings
# make install

应用:
下面以mysql数据库备份(备份文件通过ftp上传到一台远程的服务器)脚本为例:
############################### mysql_backup.sh ##############################
#!/bin/sh

newtime=`date +%m-%d-%y_%I%M%p`
mysqldump -u ****** -p ****** dbname | gzip > /Users/****/Documents/dbName_$newtime.sql.gz
echo “backup of dbname”
curl –upload-file dbname$newtime.sql.gz –url “ftp://*****:*****@host/”
echo “ftp of dbname done”

############################### mysql_backup.sh ##############################

1). 加密脚本.
# shc -v -r -f mysql_backup.sh

-v: 是verbose模式,输出更详细编译日志. -f: 指定脚本的名称.

上面命令在屏幕上的输出:
shc shll=sh
shc [-i]=-c
shc [-x]=exec ‘%s’ “$@”
shc [-l]=
shc opts=
shc: cc mysql_backup.sh.x.c -o mysql_backup.sh.x
shc: strip mysql_backup.sh.x
shc: chmod go-r mysql_backup.sh.x

我们可以看到生成了动态链接可执行二进制文件mysql_back.sh.x和C源文件mysql_backup.sh.x.c, 注意生成的二进制文件因为是动态链接形式, 所以在其它平台上不能运行:
mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

2). 生成静态链接的二进制可执行文件.

不过, 我们可以通过下面的方法生成一个静态链接的二进制可执行文件:

# CFLAGS=-static shc -r -f mysql_backup.sh
# file mysql_backup.sh.x
mysql_backup.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
statically linked, for GNU/Linux 2.6.9, stripped

提示: 通过sch加密后的脚本文件很安全吗?
一般来说是安全的, 不过可以使用gdb和其它的调试工具获得最初的源代码. 如果你需要更加安全的方法, 可以考虑使用wzshSDK.

另外, sch还可以设置脚本的运行期限和自定义返回信息:
shc -e 03/31/2007 -m “the mysql backup script is now out of date.” -f mysql_back.sh

-e表示脚本将在2007年3月31日前失效, 并根据-m定义的信息返回给终端用户。
----------

shell加密工具shc的安装和使用


下载: http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.6.tgz

安装:

# tar vxf shc-3.8.6.tgz && cd shc-3.8.6

# make test

# make strings

# make install
# which shc

/usr/local/bin/shc
 

3) 加密脚本

# shc -v -f test.sh

-v是verbose模式 输出更详细编译日志;

-f 指定脚本的名称.

$ file test.sh.x

test.sh.x: ELF 32-bit LSB executable Intel 80386 version 1 (SYSV) for GNU/Linux 2.2.5 dynamically linked (uses shared libs) stripped

可以看到生成了动态链接可执行二进制文件test.sh.x和C源文件testup.sh.x.c 注意生成的二进制文件因为是动态链接形式 所以在其它平台上不能运行.

4) 生成静态链接的二进制可执行文件

可以通过下面的方法生成一个静态链接的二进制可执行文件:

$ CFLAGS=-static shc -r -f test.sh

$ file testup.sh.x

------------

related post: https://briteming.blogspot.com/2018/09/how-to-decrypt-shc-shx-encrypted-file.html

No comments:

Post a Comment