0.背景
各位朋友,好久不见!这阵子终于忙过了!
作为一名运维工程师,在实现一些Shell脚本的时候,往往会希望自己的脚本内容不被他人查看,但实际上作为解释型语言,并不能像编译型语言那样被转换为二进制,因此内容安装得不到保障。
下面介绍两种脚本的编译和加密方法,供大家参考使用:
1.shc加密(编译加密)
shc是shell编译器(Shell Compiler)的缩写,它能够将shell脚本编译为可执行的二进制文件,以实现隐藏代码的功能,推荐在安全性要求高的场景中使用。安装也非常简单,仅需以下一条命令:
yum -y install shc
shc是一个开源项目,也可以通过官方网站下载手动编译安装,地址为:
http://www.datsi.fi.upm.es/~frosal/sources/
还可在https://pkgs.org/ 中查到shc包文件后下载安装使用。
基本用法:
参数 参数说明
-h 显示帮助信息并退出
-f 指定需要加密的shell脚本
-v 参数-v表示verbose模式,输出更详细的编译日志
-r 可以在相同操作系统的不同系统中执行,也就是放宽安全限制,生成可再分发的二进制文件
-o 输出文件名,也可以不指定
-f 指定shell脚本名称
-e 指定过期日期
-m 指定过期后的提示信息
-U 使二进制无法被追踪,默认不开启
-H 强化:额外的安全保护,默认不开启,它需要shell不支持参数
常用举例:
xxx.sh是需要进行加密的脚本。
shc -f xxx.sh
使用shell脚本和二进制运行的结果一致。
查看编译后的C语言源代码:
cat hello.sh.x.c
也可以指定过期时间和过期后的提示,如:
shc -e 01/10/2025 -v -f hello.sh
或
shc -e 01/10/2025 -v -m “the script has expired, please contact xxx@xxx.com” -f hello.sh
过期后脚本将不再能够被执行。
另外,此编译的脚本只能在本机被执行,如果希望在其它同jiag架构的机器上运行,还需要指定-r选项,如:
shc -r -f xxx.sh
将生成后的二进制文件传输到其它平台,也能够被正常运行了。
2.gzexe加密(混淆加密)
gzexe无需安装任何软件,是linux自带的功能。通过gzexe命令,可以对脚本进行混淆,在加密要求度不高的场景下使用。如对hello.sh脚本进行加密,源文件为:
!/bin/sh
echo “hello world”
加密脚本:
gzexe hello.sh
加密后,源文件会被移动为hello.sh~,加密的文件为hello.sh
解密也很简单,执行:
gzexe -d sshrc.sh
结尾:为大家介绍了两种常用的shell脚本加密方式,赶紧使用起来吧~
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/423891.html