对shell脚本进行加密
用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.
但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.
同样,在shell脚本运行时会也泄露敏感信息.
请问如何不影响脚本运行的前提下,对脚本进行加密?
一、shc方法
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这就很好的解决了上述问题.
yum安装:
yum -y install shc
编译安装:
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
tar xvfz shc-3.8.7.tgz
cd shc-3.8.7
make
[root@martin shc-3.8.7]# ./shc -v
shc parse(-f): No source file specified shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script
创建一个示例Shell脚本
[root@martin shc-3.8.7]# vi random.sh
#!/bin/bash
read -p "How many random numbers do you want to generate?" max
for (( start = 1; start <= $max; start++ ))
do
echo -e $RANDOM
done
给脚本增加可执行权限
[root@martin shc-3.8.7]# chmod u+x random.sh
执行示例脚本
[root@martin shc-3.8.7]# ./random.sh
How many random numbers do you want to generate?3
14235
9555
7671
使用shc加密Shell脚本
[root@martin shc-3.8.7]# ./shc -v -r -T -f random.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc random.sh.x.c -o random.sh.x
shc: strip random.sh.x
shc: chmod go-r random.sh.x
运行后会生成两个文件,script-name.x 和 script-name.x.c
script-name.x是加密后的可执行的二进制文件
script-name.x.c是生成script-name.x的原文件(c语言)
[root@martin shc-3.8.7]# ll random.sh*
-rwxr-xr-x 1 root root 146 Aug 2 10:26 random.sh
-rwx--x--x 1 root root 9424 Aug 2 10:30 random.sh.x
-rw-r--r-- 1 root root 10080 Aug 2 10:30 random.sh.x.c
执行加密后的脚本
[root@martin shc-3.8.7]# ./random.sh.x
How many random numbers do you want to generate?3
28955
21487
29513
还不完善,只能全路径执行shc命令或者进入目录内,加入全局环境变量/etc/profile未生效
二、gzexe
它是使用系统自带的gzexe程序,它不但加密,同时压缩文件
这种加密方式不是非常保险的方法,但是能够满足一般的加密用途,可以隐蔽脚本中的密码等信息。
使用方法:
[root@martin home]# gzexe random.sh
random.sh: 20.5%
[root@martin home]# ll random.sh*
-rwxr-xr-x 1 root root 953 Aug 2 10:45 random.sh
-rwxr-xr-x 1 root root 146 Aug 2 10:45 random.sh~
它会把原来没有加密的文件备份为 file.sh~ ,同时 file.sh 即被变成加密文件
参考地址:
http://lidao.blog.51cto.com/3388056/1914205
https://yq.aliyun.com/ziliao/65848
对shell脚本进行加密的更多相关文章
- shell 脚本加密
日常编写shell脚本时会写一些账号和密码写入脚本内,但是不希望泄露账号密码,所以对shell脚本进行加密变成可执行文件. 主要使用 shc 对 Linux shell 脚本加密,shc是一个专业的加 ...
- shell脚本加密方式
--作者:飞翔的小胖猪 --创建时间:2021年5月17日 --修改时间:2021年5月17日 说明 shell作为Linux操作系统中原生的语言环境,由于其简单.便捷.可以移植等特性常被运维人员作为 ...
- shell脚本中添加用户并设置密码
有时候在初始化shell脚本中希望能顺便创建用户并指定密码,使用useradd命令可以达到该效果: useradd -m -p encryptedPassword username 参数说明: -m ...
- shell脚本加密
如何保护自己编写的shell程序要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1.加密 2.设定过期时间,下面以shc工具为例说明: 一.下载安装shc工具shc是一个加密s ...
- 转载:Shell 脚本加密 - 略有修改
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件. shc 安装 yum -y install shc 如果yum不能安装,请移步官方下载rpm包 http ...
- Linux之Shell 脚本加密工具-shc
Much effort, much prosperity. 为什么要加密Shell脚本呢?当然是为了安全! 可能脚本里面涉及到密码之类的就需要进行加密了 一.下载安装shc工具 要保护自己编写的she ...
- linxu下的shell脚本加密,shell生成二机制可执行文件
再安全的加密也抵不过逆向,斗智斗勇吧,持续加密持续破解 1.简单的加密:gzexe file.sh 2.使用shc加密:下载地址:http://www.datsi.fi.upm.es/~frosal/ ...
- 优化对称加密的 shell 脚本
前言 之前一篇文章<shell 脚本实现文件对称加密>中,讲述了如何用 shell 脚本实现对称加密. 之后写管理密码脚本时,发觉该脚本的处理速度非常慢,而其原因就在 shell 的处理命 ...
- CentOS 下运维自动化 Shell 脚本之 expect
CentOS 下运维自动化 Shell脚本之expect 一.预备知识: 1.在 Terminal 中反斜杠,即 "" 代表转义符,或称逃脱符.("echo -e与pri ...
随机推荐
- Qtcreator中常用快捷键总结(有必要牢记,提高编程效率)
F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 ...
- 西门子S7报文解析
1.报文的基本格式 1.1 第1和第2个字节是:固定报文头03 00,这里我们就用到三种报文: a.初始化 b. 读 c.写,都是这种格式: 1.2 第3和第4个字节是:整个报文的长度: 其它部分就是 ...
- PHP中的加密方式有如下几种
1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str -- 原始字符串. raw_output -- ...
- 堆(stack) 之 c 和 c++模板实现(空类默认成员函数 初谈引用 内联函数)
//stack 的基本操作 #include <iostream> using namespace std; const int maxn = 3; typedef struct Stac ...
- Spring RestTemplate 专题
相同的参数(接口的入参json打印在日志了)在PostMan中返回预期的数据,但使用RestTemplate时去提示信息错误(参数中汉字).这种情况,搞得怀疑对RestTemplate的理解了使用Re ...
- Windows安装Linux子系统--安装GUI界面
原文:Windows安装Linux子系统--安装GUI界面 前段时间发现Windows可以安装Linux子系统了,恰逢电脑换了固态,还没装Linux,不如趁机体验一番! 1.准备工作 1.1.打开 ...
- 向西项目管理工具Git一片
前言 Git 这个词相信大家并不陌生,做开发的童鞋们每天都离不开它.当然,假设你的项目中没实用到分布式,那么,你可能从未用过 Git,当然也可能没听过.只是,这不是重点,重点是这一篇文章,我们将一起谈 ...
- OpenGl(二)点线设置、多边形镂空
1. 改变点的大小 OpenGL中默认点的大小是1个像素,使用函数glPointSIze可以调整点的大小,入参是GLfloat,相当于是浮点数. 相关代码: void myDisplay(void) ...
- python 教程 第五章、 函数
第五章. 函数 定义语句后面要加冒号 1) 定义函数 def sayHello(): print 'Hello World!' sayHello() 2) 变量作用域 LEGB原则 L本地 ...
- java堆 (转)
Java栈和堆 ----这两个概念未知很长一段时间,终于找到了一个很好的文本.使用和共享 1. 堆(stack)堆(heap)他们是Java使用Ram本地存储的数据. 与C++不同,Java主动管理 ...