设为首页 收藏本站
查看: 971|回复: 0

加密shell脚本

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-8-30 09:06:37 | 显示全部楼层 |阅读模式
  第一种方法(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位测试以下
  如果要查看执行过程中详细信息,可以添加选项“-v”。执行完成后将产生两个文件:“script.s.x.c”和“script.s.x”,命令shc首先通过shell程序生成其C语言的源代码“script.s.x.c”,然后对它进行编译生成加密后的可执行的二进制文件“script.s.x”,运行“script.s.x”可以看到此程序执行结果:
  另shc还提供了一种设定有效执行期限的方法,可以首先使用shc将shell程序转化为二进制,并加上过期时间,如:  # shc -e 18/10/2006 -m " It’s too late to run this script " -f script.s
  shell 脚本调用C,在C目录里建立一个sh,里面执行当前路径的C程序 ./text.c


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-558728-1-1.html 上篇帖子: shell 控制运行次数(以日期为判断) 下篇帖子: Shell 脚本学习 — 简单的执行跟踪
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表