我们写的shell脚本里面通常会包含帐号密码等信息或者你不想让别人看到的信息,那么把写好的shell脚本进行简单的加密显得有些必要了。

常用的shell加密方法有两种,一种是通过gzexe加密,另一种是通过shc加密。

我们先给一个简单的脚本,然后用它来进行加密解密演示,脚本abc.sh内容如下

#!/bin/bash

echo "hello world!"

gzexe加密与解密shell脚本

shell > bash abc.sh     # 执行后显示内容

hello world!

shell > gzexe abc.sh     # 压缩

abc.sh:  18.8%

shell > ls -l           # 压缩完成后, abc.sh~ 是原文件 , abc.sh 是压缩后的二进制文件

abc.sh

abc.sh~

shell > mv abc.sh abc

shell > sh abc       # 压缩后再执行正常

hello world!

我们只需要把abc这个二进制文件传到机器上执行就可以了,并不需要关心它的源码,别人也不能通过这个文件看到shell代码,我们cat显示一下这个文件发现内容全部乱码,如图(乱码内容未全部截图出来)。

gzexe但是通过gzexe加密的shell脚本并不是很安全,细看我们如何通过abc这个乱码的执行文件还原成原来的shell脚本。

我们看到内容中有一行叫skip=44,这一行非常重要,它告诉我们从第44行起才是原来压缩之前文件的内容,前面都是压缩软件附加上去的内容。虽然从44行往后面也全部都是乱码,我们也读不懂这些内容,但是gzip程序会告诉我们的。

首先我们把第44行以后的内容过滤出来生成一个.gz结尾文件,然后解压,文件内容就都出来了。

shell > tail -n +44 abc > /tmp/a.gz    # 我们把第44行以后的文件写成一个.gz结尾的压缩文件

shell > cd /tmp

shell > gunzip a.gz      # 解压生成的文件

shell > cat a         # 解压后的文件和压缩文件同名

#!/bin/bash

echo "hello world!"

我们看到解压之后,文件里面的内容和原来压缩之前是一样的,成功完成解密。

shc加密shell脚本

shc是比gzexe安全的多的加密软件,不过网络说通过gdb调试也是可以显示内容的,不过我没有尝试,网上也没啥资料。

shc官方网站:http://www.datsi.fi.upm.es/~frosal/sources/

shc安装过程

wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz

tar zxvf shc-3.8.9.tgz

cd shc-3.8.9

mkdir -p /usr/local/man/man1/       # 这个是必须的,帮助文件会写到这里,没这个目录会报错

make install

安装完成后,我们再创建个文件做测试,文件123.sh内容如下

#!/bin/bash

echo "hello ITDHZ.COM"

还是只有一行echo命令,简单就好,哈哈~~ , 下面是测试

shell > shc -r -f 123.sh

shell > ls

123.sh  123.sh.x  123.sh.x.c

通过shc加密后,原文件123.sh还在,又另外生成两个文件,123.sh.x是加密后可执行的二进制文件,123.sh.x.c 是 123.sh.x 的源文件(注意是C语言版本的源文件)

文件加密是成功了,但是加密后的文件执行时啥也不显示,郁闷鸟。还好shc有比较好的帮助文件,通过shc -h看了下,发现编译的时候少了个参数-T,这样才能回显echo的内容。

shc -r -T -f 123.sh

另外shc在加密的过程中还可以设置生成二进制执行文件的过期时间和过期说明,例如

shell > shc -r -T -e "31/10/2004" -m "this file is expiration date." -f 123.sh

shell > ./123.sh.x

./123.sh.x: has expired!

this file is expiration date.

更多shc的用法,请大家自行研究shc的帮助文件。

另外要注意的一点是:

gzexe生成的二进制文件 可以通过 /bin/bash  xxx 命令来执行。

shc生成的二进制文件只能通过 ./xxx 命令来执行,不能通过 /bin/bash xxx 来执行。

转载:http://www.itdhz.com/archives/144

linux脚本解密,shell脚本加密与解密相关推荐

  1. Linux中执行shell脚本的4种方法

    这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写 ...

  2. Linux下的shell脚本实战之用户创建

    Linux下的shell脚本实战之用户创建 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.该脚本提示用户创建用户名和密码 2.判断输入的用户名是 ...

  3. Linux 中启用 Shell 脚本的调试模式

    shell 脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 概述 脚本是存储在一个文件的一系列命令. ...

  4. 如何在 Linux 中启用 Shell 脚本的调试模式

    脚本是存储在一个文件的一系列命令.在终端上输入一个个命令,按顺序执行的方法太弱了,使用脚本,系统中的用户可以在一个文件中存储所有命令,反复调用该文件多次重新执行命令. 在学习脚本或写脚本的初期阶段,我 ...

  5. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件

    搜索热词 以下实例本人在Centos6.5 64位操作系统中使用 一.定时复制文件 a.在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件 #将tomcat中 ...

  6. Linux 定时执行shell 脚本

    2019年第 85 篇文章,总第 109 篇文章 本文大约2000字,阅读大约需要6分钟 crontab 可以在指定的时间执行一个shell脚本以及执行一系列 Linux 命令. 定时执行shell ...

  7. linux 定时执行搅拌,Linux上定时shell脚本

    本文主要介绍在Linux系统上部署定时器,定时执行shell脚本,通过脚本执行sql文件 sql文件 -- 创建表 create table if not exists iot_test.iot_ta ...

  8. linux脚本是什么语言,Linux学习之Shell脚本语言的优势是什么?

    当我们学习Linux技术的时候,会涉及各种各样的知识和内容,比如说shell脚本语言,我想很多人都会疑惑shell脚本语言有什么优势?为何学习Linux的时候必须学习呢?我们来看看吧. 当命令和程序语 ...

  9. Linux中执行shell脚本的5种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  10. Linux篇:Shell脚本实现Gitlab双备份

    01 前言 最近成功从架构组拿到了Gitlab的管理权限,第一件事就是想着如何备份,以防数据丢失背大锅,于是在网上搜索一番,发现一段非常赞的备份脚本,记录照着操作一下: 参考文章:https://bl ...

最新文章

  1. 如何选择数据分析可视化工具?Excel, Tableau还是Power BI?
  2. 4道Python装饰器练习题
  3. HTML5 Web SQL
  4. ECMAScript5.1的运算符、类型转换总结
  5. 实现Redis用户会话 - 2
  6. 3003 基于二叉链表的二叉树左右节点的交换 附思路
  7. js处理倒计时,日期可以是当前日期也可以传1个时间点
  8. Java集合的ConcurrentModificationException
  9. 上海地图全图可放大_中国地图高清版可放大图片 山地高原和丘陵约占陆地面积的...
  10. 安卓游戏等待服务器响应时间,电竞显示器响应时间原理及最佳游戏设置方法
  11. 通过SMART法则进行网站策划
  12. Advanced Installer Architect创作工具
  13. 四季清果·体内净化三部曲
  14. kalilinux生成安卓木马(仅供学习使用)
  15. RabbitMq消息中心_延迟发送消息
  16. 中国 Open Source Summit 演讲提案征集
  17. 告别电子小白,8个优选DS1302数字时钟方案大合辑
  18. 多线程面试题之【三线程按顺序交替打印ABC的方法】
  19. LeetCode 1710. 卡车上的最大单元数
  20. LMD DesignPack的使用技巧:如何设置典型的设计环境?

热门文章

  1. Leetcode 781 森林中的兔子
  2. 更改iterm2命令行从$到%
  3. 移动端webscoket连接失败---code1006
  4. hdoj2154跳舞毯
  5. 如何解决安装佳能LBP2900驱动时总是提示无法识别USB连接(附带驱动程序下载地址)
  6. 启明云端分享|IDO-SOM3022-V1.0:可适用于物联网等多个领域
  7. Servlet三大作用域
  8. 电子信息一班上传文件教程
  9. ChromeCast Device Emulator的使用
  10. ASP.net和ASP的区别