转自:http://www.cnblogs.com/dba001/archive/2011/01/17/1937768.html

采用shc工具加密Shell脚本,以提高shell脚本文件的安全性。
介绍:当我们写的shell脚本,存在有敏感信息如账号密码,于是想加强脚本的安全性;还有不想让别人查看/修改您的shell核心代码等等情况。都可使用以下工具进行加密。
shc是一个脚本编译工具, 使用RC4加密算法, 它能够把shell程序转换成二进制可执行文件(支持静态链接和动态链接)。
shc官网:http://www.datsi.fi.upm.es/%7Efrosal/

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

若报错:
***     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 abc.sh
-v 是现实加密过程
-f 后面跟需要加密的文件 
运行后会生成两个文件:
abc.sh.x 和 abc.sh.x.c
abc.sh.x为二进制文件,赋予执行权限后,可直接执行。更改名字mv abc.sh.x a.sh
abc.sh.x.c 是c源文件。基本没用,可以删除

另shc还提供了一种设定有效执行期限的方法,过期时间,如:
# shc -e 28/01/2012 -m "过期了" -f abc.sh
选项“-e”指定过期时间,格式为“日/月/年”;选项“-m”指定过期后执行此shell程序的提示信息。
如果在过期后执行,则会有如下提示:
# ./abc.sh.x 
./abc.sh.x: has expired!
过期了

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定义的信息返回给终端用户.

使用该工具有时会遇到生成的脚本无法执行的情况,提示“Operation not permitted”。这时需要对生成的*.c文件进行修改,再重新编译。比如有test.sh脚本需要加密:

1、./shc -v -r -f test.sh,生成test.x、test.x.c文件

2、修改test.x.c文件,删除图中所示部分。

3、gcc -o test.x test.x.c 重新编译生成test.x文件。

使用shc加密shell脚本相关推荐

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

    如何在Linux环境中加密shell脚本?shell脚本包含密码,不希望其他具有执行权限的人查看shell脚本并获取密码.可以安装使用shc工具,普通用户无法读取shc创建的加密Shell脚本.SHC ...

  2. linux shc shell脚本_使用shc工具加密shell脚本详解

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

  3. shell实例第18讲:利用gzexe加密shell脚本

    利用gzexe加密shell脚本 gzexe_test.sh内容如下: #!/bin/bashecho "gzexe test!" 结果: 使用gzexe加密shell脚本命令:g ...

  4. c语言加密shell脚本,shell脚本加密

    如何保护自己编写的shell程序 要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1.加密 2.设定过期时间,下面以shc工具为例说明: 一.下载安装shc工具 shc是一个加密s ...

  5. shc将shell脚本转成二进制文件

    最近在做一个项目,需要把shell脚本自定拷贝到目标客户端中执行,但是并不想让用户知道脚本的源码,于是采用shc对shell脚本进行处理 首先装个wget工具 yum -y install wget ...

  6. shc加密shell原理

    有人想加密自己的perl脚本,有人想加密自己的php,有人认为bash编程并不是真正的编程,因为它们的源代码都是可见的,不像c程序那样,一旦经过编译就再也不可读了...其实这是一种误区,其一就是c语言 ...

  7. linux 脚本加密,Shell脚本的4种加密详细教程

    这篇文章上次修改于 1159 天前,可能其部分内容已经发生变化,如有疑问可询问作者. 普及,shell脚本是什么? Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就 ...

  8. shc加密(仅仅对shell脚本加密)

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

  9. linux shc shell脚本_CentOS 下使用 shc 加密你的 linux shell 脚本

    说明: shc(generic shell script compiler)是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这样可以很好地隐藏脚本中IP. ...

最新文章

  1. java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
  2. 极客新闻——10、Java工程师应该如何成长?
  3. 【数理知识】《矩阵论》方保镕老师-第4章-赋范线性空间与矩阵范数
  4. Fix “Windows cannot access the specified device path or file” Error
  5. c语言初始化字符数组为空,怎么把已经初始化的字符数组设置为空?
  6. Java实现XSS防御
  7. Dagoin之modelform组件
  8. 详说sizeof与strlen的区别与联系
  9. 零基础使用小米球ngrok来快速实现内网穿透
  10. wp手机开发之获取汉字拼音的首字母
  11. 产品定位,什么是产品?什么是产品定位?
  12. 算法——递归与递推[蓝桥杯]
  13. 微服务架构与开源框架
  14. 我来讲述计算机的知识,计算机基础知识讲述.doc
  15. 秒的换算:皮秒、纳秒、微秒、毫秒
  16. java 图片 word文档_【Java】用Freemarker完美导出word文档(带图片)
  17. 洛克王国服务器维护费用,洛克王国变成充钱王国,年费宠物太坑人,不买就要被淘汰?...
  18. 腾讯广点通广告投放-转化归因API回传接口对接踩坑指南
  19. Distortion Correction
  20. 移动通信网络频段大全

热门文章

  1. 关于使用Restlet的升级
  2. 无水印的电脑录屏软件,推荐这3款软件,2023年新版
  3. Alter对话框处理
  4. Java面试宝典简洁篇(持续更新中,从入门到放弃)
  5. Java 防SQL注入方法
  6. XML介绍与使用及简单注解
  7. centos7 安装rtl8821ce教程
  8. 在Google地图中显示行政区边界
  9. 零基础自学应用近世代数 第1章 引言和预备知识 1.1 几类实际问题 1.1.1 一些计数问题
  10. 《嵌入式 – GD32开发实战指南》第18章 CRC