`

shc gzexe 将shell脚本转换为二进制的可执行文件

 
阅读更多

第一种方法(gzexe):
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。
它是使用系统自带的gzexe程序,它不但加密,同时压缩文件。
使用方法:
gzexe file.sh
它会把原来没有加密的文件备份为 file.sh~ ,同时 file.sh 即被变成加密文件;

第二种方法(shc):
使用 shc 对 Linux shell 脚本加密.
shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP、密码等不希望公开的问题.
shc的下载地址:              
http://download.chinaunix.net/download/0010000/9479.shtml
安装:
tar zxvf shc-3.8.tgz
cd shc-3.8
make test
make
make test
make strings
make install
使用方法:
shc -r -f script-name
运 行后会生成两个文件,script-name.x 和 script-name.x.c.   其中script-name.x是加密后的可执行的二进制文件;用./script-name即可运行,script-name.x.c是生成 script-name.x的原文件(c语言).

 

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

 

如果你的shell脚本包含了敏感的口令或者其它重要信息, 而且你不希望用户通过ps -ef(查看系统每个进程的状态)捕获敏感信息. 你可以使用shc工具来给shell脚本增加一层额外的安全保护. shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接). 该工具能够很好的支持: 需要加密, 解密, 或者通过命令参数传递口令的环境.

shc主页: 
http://www.datsi.fi.upm.es/%7Efrosal/

现在的版本是3.8.6(shc-3.8.6.tgz), 以此为例介绍shc的安装及应用:

准备: 
首先你需要检查系统是否安装了gcc编译器, 以Fedora Core 6为例介绍gcc的检查和安装: 
# rpm -qa|grep compat-gcc 
compat-gcc-34-3.4.6-4 
如果没有安装, 按下面步骤安装gcc 
# wget ftp://mirrors.kernel.org/fedora/core/6/i386/os/Fedora/RPMS/compat-gcc-34-3.4.6-4.i386.rpm 
然后 
# ln -s /usr/bin/gcc34 /usr/bin/cc

安装: 
# wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz 
# tar vxf 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 -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定义的信息返回给终端用户.

3). 二进制文件的剖析 
有兴趣的朋友可以参阅下面的文章: 
Paranoid Penguin - Limitations of shc, a Shell Encryption Utility

你好 shc 能不能在64位的机子上运行我有台64位的服务器 OS 为64位的rhel4up2 执行加密后的脚本出错 
test.sh.x: has expired! 
Please contact your provider 
是什么问题 估计在运行命令的时候-e选项指定的日期已经失效, 注意看一下服务器的时间是否正确.

在64(OS为64位)位的机子加-e 和不加 -e 还是报那样的错误,服务器的时间没有问题,我在32位的机子上测试完全正常,你可以在64位测试以下

 

 

 

下面就说明一下shc的安装,参数,以及使用示例:
下载安装:
(官网下载地址: http://www.datsi.fi.upm.es/~frosal/sources/)
# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
# cd shc-3.8.7
# make
# make install
(仅用make就可以完成安装,运行shc时要指出绝对路径;用make install,将shc安装到/usr/local/bin下,可以直接运行)

常用参数:
-e date 
Expiration date in dd/mm/yyyy format [none](指定过期日期)

-m message
message to display upon expiration ["Please contact your provider"](指定过期提示的信息)

-f script_name
File name of the script to compile(指定要编译的shell的路径及文件名)

-r Relax security. 
Make a redistributable binary which executes on different systems running the same operat-ing system.(可以相同操作系统的不同系统中执行)

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

使用示例:
[root@centos54 tmp]# /usr/local/src/shc-3.8.7/shc -e 20/10/2010 -m "contact xxx@163.com" -v -r -f ./ex.sh
-e:指定过期时间为2010年10月20日
-m:过期后打印出的信息;
-v: verbose
-r: 可在相同操作系统的不同主机上执行
-f: 指定源shell

 

分享到:
评论

相关推荐

    采用shc工具加密Shell脚本1

    `shc`工具就是为了解决这个问题而设计的,它允许我们将Shell脚本转换为加密的二进制可执行文件,从而增强脚本的安全性。`shc`这个名字代表了"Shell Script Compiler",它实际上并不是一个真正的编译器,而是一个将...

    shell-perl-python等脚本文件加密工具

    shc(Shell Script Compiler)是一款开源工具,它能够将Shell脚本转换成二进制可执行文件,从而达到加密和保护脚本源码的目的。shc的工作原理是读取Shell脚本,对其进行编译,并生成一个加密的二进制文件。这个二...

    如何使用 SHC 加密 Shell 脚本.doc

    使用 SHC,可以将 Shell 脚本编译成二进制格式的加密文件,从而防止未经授权的人查看或访问。 在 Linux 环境中,安装 SHC 工具可以使用 yum安装命令:`yum -y install shc`。安装完成后,可以使用 SHC 加密 Shell ...

    Shell转换成C

    这个过程主要是利用一种工具,例如`shc`(Shell to C Compiler),它能够将Bash或其它Shell脚本转化为C源代码,从而使得原始的Shell命令和变量在最终的二进制文件中不以明文形式存在,达到一定的加密效果。本文将...

    shc.rar_shc

    "shc"通常指的是一个Linux和Unix环境下的工具,用于将Shell脚本转化为二进制可执行文件或者C语言源代码。这个工具对于那些希望保护Shell脚本的源代码、提高执行效率或在不支持解释器的环境中运行脚本的人来说非常...

    shc加密shell脚本用

    `shc` 的全称是 "Shell Crypt",由Rolf Backe开发,它通过将shell脚本转换为C源代码,然后编译成可执行文件,实现了对脚本内容的加密。 1. **shc的工作原理** `shc` 将shell脚本转化为C语言源代码,这个过程涉及到...

    shell加密工具shc.zip

    它通过将Shell脚本编译成C代码,然后用gcc或其他C编译器将其编译为可执行的二进制文件。这样,原始的Shell脚本内容就被隐藏在了编译后的二进制程序中,增加了脚本的安全性。 **shc的工作原理** 1. **预处理**:shc...

    shc-3.8.6.tgz

    然后,你可以使用`shc -f your_script.sh`命令将你的Shell脚本转换为C源代码,再编译成二进制文件。最后,你可以运行生成的二进制文件,而无需使用shell来执行原始脚本。 5. **注意事项**:虽然shc提供了额外的安全...

    使用shc工具加密shell脚本详解

    Shc可以用来对shell脚本进行加密,可以将shell脚本转换为一个可执行的二进制文件。经过shc对shell脚本进行加密后,会同时生成两种个新的文件,一个是加密后的可执行的二进制文件(文件名以.x结束),另一个是C语言的...

    给linux的shell脚本加密(ZT).rar_Linux shell_shell 脚本_shell加密_shell脚本

    shc将Shell脚本转换为一个可执行的C程序,这个程序包含了加密后的脚本内容。 2. **使用加密容器**:可以将Shell脚本放入加密的ZIP或RAR文件中,并在运行时解密。这样,只有拥有正确密码的人才能访问和执行脚本。这...

    linux 脚本加密文件

    "Linux 脚本加密文件"涉及到一个名为`shc`的实用程序,它允许我们将bash shell脚本转换为加密的可执行二进制文件,从而增加了一层安全防护。 `shc`(Shell Script Compiler)是一个用于将shell脚本转换为加密二进制...

    shc-3.8.9.rar

    shc(Shell Script Compiler)是一款用于Linux或Unix系统的开源工具,它能够将bash shell脚本转换为可执行的二进制文件,从而增加脚本的安全性和隐私性。这种加密方式对于那些不希望源代码被轻易查看或修改的系统...

    shc-3.8.9.tgz

    它通过将shell脚本转换为C语言源代码,然后编译成可执行文件,从而实现对shell脚本的保护。这样做的好处在于,原始的shell脚本代码不会以明文形式存在,增加了代码的保密性,防止了未经授权的修改和滥用。 在shc-...

    CentOS下对shell脚本加密的二种方法

    它将Shell脚本转换成可执行的二进制文件,提供更高的安全性。`shc` 特别适合那些包含敏感信息,如IP地址和密码的脚本。 **安装shc**: 首先,从官方网站(http://www.datsi.fi.upm.es/~frosal/sources/)下载最新...

    shc:Shell脚本编译器

    标题"shc:Shell脚本编译器"指的是一个工具,它允许用户将通常的Shell脚本(如bash、sh等)转换为可执行的二进制文件。这样的编译过程可以增加脚本的安全性,因为源代码不会在执行时暴露给用户。 描述中同样提到...

    对Shell 脚本加密的方法

    它的作用是把shell脚本转换为一个可执行的二进制文件. 这就很好的解决了上述问题. shc 安装 yum -y install shc 使用方法: shc -r -f script-name 注意:要有-r选项, -f 后跟要加密的脚本名. 运行后会生成两个文件,...

    shc-3.8.7.tgz

    Shell 在Linux 系统中的强大有目共睹,每个管理员都是自己写的一组shell 来简化自己的工作,有时我们会把自己写的shell 让别人用,但这时有一个麻烦的地方,就是shell 里包含...可转化SHELL脚本到二进制可执行程序。

    linkme.sh.zip

    "shc"是一个C语言源代码的外壳程序编译器,它可以将shell脚本转换为二进制可执行文件,以此来提供一定的保护。在描述中提到,由于shc的保护机制有其局限性,整体安全性相比其他方法(如使用openssl加密)可能较低。...

Global site tag (gtag.js) - Google Analytics