linux shc shell脚本_详解shell脚本加密解密软件—gzese和shc
概述
以我个人的需求为例,有时写一个脚本需要传密码,如果直接把密码写在脚本里会存在安全问题,一般是把密码写在脚本里,作为参数传给脚本,而保存密码的脚本,使用某种手段加密,令其不可读但是可执行。而常用的shell加密方法有两种,一种是通过gzexe加密,另一种是通过shc加密。
一、gzexe
1、概念
Linux gzexe命令用于压缩执行文件。
gzexe是用来压缩执行文件的程序。当执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。
gzexe加密很简单,并且gzexe是系统自带,所以不需要安装任何东西,只要在SSH中输入gzexe 加密的脚本。
2、gzexe加密
gzexe 脚本名
其中hwb.sh~ 是原文件 , hwb.sh 是压缩后的二进制文件
3、gzexe解密
gzexe但是通过gzexe加密的shell脚本并不是很安全,观察脚本可以看到内容中有一行叫skip=44,这一行非常重要,它告诉我们从第44行起才是原来压缩之前文件的内容,前面都是压缩软件附加上去的内容。虽然从44行往后面也全部都是乱码,我们也读不懂这些内容,但是gzip程序会告诉我们的。
首先我们把第44行以后的内容过滤出来生成一个.gz结尾文件,然后解压,文件内容就都出来了。
tail -n +44 hwb.sh > hwb.gz # 我们把第44行以后的文件写成一个.gz结尾的压缩文件gunzip hwb.gz # 解压生成的文件cat hwb # 解压后的文件和压缩文件同名--第二种方式gzexe -d hwb.sh
二、shc
1、安装shc
SHC官网地址:http://www.datsi.fi.upm.es/~frosal/sources/
--推荐编译指定版本wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.9.tgztar vxf shc-3.8.9.tgzcd shc-3.8.9make testmake stringsmkdir -p /usr/local/man/man1/make install
2、shc加密
shc -r -f 脚本名
--运行后会生成两个文件,script-name.x 和 script-name.x.c
script-name.x是加密后的可执行的二进制文件,可重命名后运行.
script-name.x.c是生成script-name.x的原文件(c语言),基本没有作用,可以删除。
注意:如果脚本只需要在当前服务器上执行,可以不加参数-r,如果需要在别的系统下也能执行,这里就需要加-r
3、shc解密
项目地址:https://github.com/yanncam/UnSHc
git clone https://github.com/yanncam/UnSHc.git./UnSHc/latest/unshc.sh 脚本名
4、实例
4.1、加密
shc -r -f log_clean.sh
4.2、测试加密效果
可以发现已完成加密
4.3、解密
将unshc.sh文件和需要解密的shell脚本放在同一目录,然后终端在当前目录运行./unshc.sh shell文件名,如果可以解密的话就可以了
/home/scripts/UnSHc/latest/unshc.sh log_clean.sh.x
后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!
linux shc shell脚本_详解shell脚本加密解密软件—gzese和shc相关推荐
- sh执行文件 参数传递_详解shell中脚本参数传递的两种方式
方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...
- linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容
概述 有时我们在处理Linux终端中的文件时,可能要去清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么才能实现呢?下面通过几种不同的方式教大家清空文件内容. 1.通过重定向到空来清空文 ...
- 常用的python测试脚本_详解Python的单元测试
如果你听说过"测试驱动开发"(TDD:Test-Driven Development),单元测试就不陌生. 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. ...
- linux打开文件命令_详解Linux中3个文件查找相关命令
来自:民工哥技术之路 1.which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. ...
- linux pscp 上传_详解使用pscp命令Linux文件上传与下载
(一)上传 2.开始运行cmd进入到dos模式输入以下命令以下是代码片段:pscp D:\java\apache-tomcat-5.5.27\webapps\szfdc.rardev@192.168. ...
- Linux - CPU性能评估_详解查看CPU性能的命令
文章目录 vmstat命令 sar命令 统计单个CPU的使用情况 iostat -c 命令 uptime命令 小结 vmstat命令 vmstat命令可以显示关于系统各种资源之间相关性能的简要信息,这 ...
- linux mysql 查看缓存_详解MySQL查询缓存
查询缓存是指存储使用SELECT语法查询到的返回到客户端的文本.当相同的请求再次发生时,会从查询缓存中获取数据,而非再执行一遍查询.查询缓存是共享Session会话的,所以一个客户端的请求可能与另一个 ...
- python3.6打包成exe文件_详解如何将python3.6软件的py文件打包成exe程序
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Linux Shell脚本入门教程系列之(八)Shell printf命令详解
本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...
最新文章
- python 查看 nvida 驱动、 cuda、pytorch、tensorflow的版本
- koa 接口返回数据_一文搞定 Koa 中间件实现原理
- 电脑反应慢卡怎么解决_电脑开不了机怎么解决?
- 那些我曾经犯过的低级编程错误
- LeetCode 65. 有效数字(逻辑题,难)
- mui 组件:“div下拉导航”【scroll固定位置】- 案例篇
- 怎样在DOS下查看屏蔽和开启端口了
- 推荐三个实用的开源项目
- Linux下如何从mysql数据库里导出导入数据
- 华为scp快充协议详解_1A1C多协议快充,倍思30W PD PPS双口充电器(BS-CH905)评测...
- TSAP(2) : 时区切换
- PHP mysql_connect() 函数
- 不能错过的linux驱动开发的经典书籍推荐
- 利用MATLAB绘制阶梯图(stairs函数)并获取所绘制的阶梯图的横纵坐标值
- 用浏览器访问防火墙提示建立连接失败的有点总结
- World Streamer学习1
- Android BitmapFactory.decodeResource()方法参数代表什么意思
- uni-app 实现瀑布流 最简洁方案
- 关于Git中fetch和pull区别为
- Linux下PCI转串口卡驱动安装方法
热门文章
- spring 事物合并_Spring系列合并
- jOOQ API设计缺陷的奇怪发生
- junit:junit_JUnit和Hamcrest:在assertEquals上进行改进
- TIBCO产品的微服务和DevOps
- 书评:精通Lambda:多核世界中的Java编程
- Spring WebApplicationInitializer和ApplicationContextInitializer的混淆
- IntelliJ中的键盘快捷键
- Java EE 6 Web配置文件。 在云上。 简单。
- JSTL/EL表达式/Struts2标签/OGNL表达式
- Servlet 运行原理