概述

以我个人的需求为例,有时写一个脚本需要传密码,如果直接把密码写在脚本里会存在安全问题,一般是把密码写在脚本里,作为参数传给脚本,而保存密码的脚本,使用某种手段加密,令其不可读但是可执行。而常用的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相关推荐

  1. sh执行文件 参数传递_详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...

  2. linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容

    概述 有时我们在处理Linux终端中的文件时,可能要去清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么才能实现呢?下面通过几种不同的方式教大家清空文件内容. 1.通过重定向到空来清空文 ...

  3. 常用的python测试脚本_详解Python的单元测试

    如果你听说过"测试驱动开发"(TDD:Test-Driven Development),单元测试就不陌生. 单元测试是用来对一个模块.一个函数或者一个类来进行正确性检验的测试工作. ...

  4. linux打开文件命令_详解Linux中3个文件查找相关命令

    来自:民工哥技术之路 1.which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which  查看可执行文件的位置. whereis 查看文件的位置. ...

  5. linux pscp 上传_详解使用pscp命令Linux文件上传与下载

    (一)上传 2.开始运行cmd进入到dos模式输入以下命令以下是代码片段:pscp D:\java\apache-tomcat-5.5.27\webapps\szfdc.rardev@192.168. ...

  6. Linux - CPU性能评估_详解查看CPU性能的命令

    文章目录 vmstat命令 sar命令 统计单个CPU的使用情况 iostat -c 命令 uptime命令 小结 vmstat命令 vmstat命令可以显示关于系统各种资源之间相关性能的简要信息,这 ...

  7. linux mysql 查看缓存_详解MySQL查询缓存

    查询缓存是指存储使用SELECT语法查询到的返回到客户端的文本.当相同的请求再次发生时,会从查询缓存中获取数据,而非再执行一遍查询.查询缓存是共享Session会话的,所以一个客户端的请求可能与另一个 ...

  8. python3.6打包成exe文件_详解如何将python3.6软件的py文件打包成exe程序

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. Linux Shell脚本入门教程系列之(八)Shell printf命令详解

    本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...

最新文章

  1. python 查看 nvida 驱动、 cuda、pytorch、tensorflow的版本
  2. koa 接口返回数据_一文搞定 Koa 中间件实现原理
  3. 电脑反应慢卡怎么解决_电脑开不了机怎么解决?
  4. 那些我曾经犯过的低级编程错误
  5. LeetCode 65. 有效数字(逻辑题,难)
  6. mui 组件:“div下拉导航”【scroll固定位置】- 案例篇
  7. 怎样在DOS下查看屏蔽和开启端口了
  8. 推荐三个实用的开源项目
  9. Linux下如何从mysql数据库里导出导入数据
  10. 华为scp快充协议详解_1A1C多协议快充,倍思30W PD PPS双口充电器(BS-CH905)评测...
  11. TSAP(2) : 时区切换
  12. PHP mysql_connect() 函数
  13. 不能错过的linux驱动开发的经典书籍推荐
  14. 利用MATLAB绘制阶梯图(stairs函数)并获取所绘制的阶梯图的横纵坐标值
  15. 用浏览器访问防火墙提示建立连接失败的有点总结
  16. World Streamer学习1
  17. Android BitmapFactory.decodeResource()方法参数代表什么意思
  18. uni-app 实现瀑布流 最简洁方案
  19. 关于Git中fetch和pull区别为
  20. Linux下PCI转串口卡驱动安装方法

热门文章

  1. spring 事物合并_Spring系列合并
  2. jOOQ API设计缺陷的奇怪发生
  3. junit:junit_JUnit和Hamcrest:在assertEquals上进行改进
  4. TIBCO产品的微服务和DevOps
  5. 书评:精通Lambda:多核世界中的Java编程
  6. Spring WebApplicationInitializer和ApplicationContextInitializer的混淆
  7. IntelliJ中的键盘快捷键
  8. Java EE 6 Web配置文件。 在云上。 简单。
  9. JSTL/EL表达式/Struts2标签/OGNL表达式
  10. Servlet 运行原理