广告
返回顶部
首页 > 资讯 > 精选 >隐藏shell脚本内容的工具shc分析
  • 740
分享到

隐藏shell脚本内容的工具shc分析

2023-06-21 20:06:29 740人浏览 八月长安
摘要

本篇内容主要讲解“隐藏shell脚本内容的工具shc分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“隐藏shell脚本内容的工具shc分析”吧!从事 linux 开发的同学,经常需要编写 sh

本篇内容主要讲解“隐藏shell脚本内容的工具shc分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“隐藏shell脚本内容的工具shc分析”吧!

从事 linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到一些敏感内容,比如一些 IP 地址,用户名以及密码等,或者脚本中有一些关键的代码, 所有这些内容你都不想别人阅读或者修改,更进一步,你希望对脚本设置过期时间,超过指定时间时间之后,脚本就无法使用

在不改变脚本内容、功能以及执行方式的情况下,有没有办法实现上面的需求呢?

答案是:有的, 在Linux下,我们可以使用 shc 这个工具来实现隐藏shell脚本内容以及设置过期时间的目的

简介

shc 是一个通用shell脚本编译器,它将 shell 脚本编译 可执行的二进制文件,它的功能以及执行方式和原始脚本没有区别

GCc 编译器不同的是,shc 并没有把脚本源代码转化成机器码,它只是生成了一份 C 语言代码,这份 C 语言代码中包含了加密的原始shell脚本,并为它添加了过期功能,然后,通过gcc编译器将C代码编译成可执行的二进制文件

安装

目前,大多数的 Linux 发行版的仓库中都已经包含了 shc, 只需要使用默认的包管理器就可以安装,具体的安装命令如下:

yum install shc

输入 shc -v 命令,下面的输出表示安装成功

[root@ecs-Centos-7 shc_test]# shc -vshc parse(-f): No source file specifiedshc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script

常用选项

下面是 shc 常用的一些选项以及选项的描述




选项描述
-f待编译的shell脚本文件
-o指定编译生成的二进制文件
-e设置过期时间,格式 日/月/年
-m过期之后,执行脚本时的提示信息
-v输出编译shell脚本的过程
-r编译生成可再发行的二进制

编译脚本

sehll 脚本编译成可执行的二进制文件之后,只需要把二进制文件提供给执行者即可,这样执行者就无法知道原始脚本代码了,从而实现别人无法阅读和修改代码的目的

新建 func.sh 脚本,往其中添加如下内容:

#!/bin/bash#是否是有效的密码valid_passwd(){   if [ "$1" == "123" ]; then        echo 1   else        echo 0   fi}#获取最大数量max_num(){  echo 100}#登录到远程机器login(){  sshpass -p '123456' ssh test@192.168.70.20}#版本号ver(){   echo "1.0"}if [ $# -ne 0 ]; then        name="$1"        shift 1        ${name} "$@"fi

执行下面的命令,编译 func.sh 脚本

shc -rf func.sh -o func.bin

编译完之后,当前目录下会出现三个文件

[root@ecs-centos-7 shc_test]# ll-rwxrwxr-x 1 root root 11640 7月   1 00:24 func.bin-rw-r--r-- 1 root root   373 7月   1 00:19 func.sh-rw-r--r-- 1 root root 19811 7月   1 00:24 func.sh.x.c

func.sh 是原始的脚本文件,func.sh.x.c 是生成的 c语言代码, func.bin 是生成可执行的二进制文件,它的使用方法和原始脚本是一样的

注意: 编译出来的二进制文件func.bin,如果想让它在其他机器也能运行的话,一定要指定 -r 选项

使用 file 命令分别查看 func.bin 、func.sh.x.c,结果如下:

隐藏shell脚本内容的工具shc分析

脚本对外提供 valid_passwd、 max_num、 login、 ver 这四个接口,脚本中已经注明了每个接口的作用,使用方法是 ./func.bin 接口名 接口参数列表,下面的两个实例说明了如何使用脚本

实例1

分别执行 ./func.bin ver./func.sh ver 命令,结果如下

隐藏shell脚本内容的工具shc分析

从上图可以看出,无论是用脚本还是二进制,最终的结果都是一样的

实例2

执行 ./func.bin login 命令,结果如下

隐藏shell脚本内容的工具shc分析

当传入 login 参数时,就会执行func.sh脚本中的 login 函数,该函数的作用是使用 SSH 登录到远程机器, 函数体中的 sshpass 是一个自动填充SSH登录密码的工具

从结果可以知道,执行 ./func.bin login 命令之后,就登录到 ip 为 192.168.70.20 机器的 /home/test 目录,后面再输入 exit 从远程机器退回到当前机器的目录

我们把 func.sh 脚本编译成 func.bin 二进制文件的目的就是要隐藏脚本文件中一些敏感信息,比如:脚本中的SSH用户 test , IP地址 192.168.70.20 以及密码 123456

设置过期时间

shc 除了将把脚本编译成二进制,还能为二进制设置过期时间,下面还是以 func.sh 脚本为例来说明

执行 shc -e 25/6/2021 -m "The script is expired, Please contact test@qq.com" -rf func.sh -o func.bin 命令把脚本的过期时间设置为 2021年6月25日,执行过期后的脚本提示语设置为 "The script is expired, Please contact test@qq.com"

然后,执行 ./func.bin ver 命令进行测试,结果如下

从上图可以看出,脚本设置过期时间之后,再次执行脚本会提示已经过期了

如何引用二进制脚本

func.sh 编译成了二进制后,其他脚本引用它的方式也要调整下,原来以 source ./func.sh 的使用方式都需要修改,因为 fun.sh 已经由原来的 ASICII 文件变成了 二进制文件了,下面给出一个shell脚本引用二进制脚本 func.bin 的实例

新建 test_func.sh 脚本,脚本内容如下:

#!/bin/bash#调用 valid_passwd 函数ret=$(./func.bin valid_passwd 123)if [ $ret -eq 1 ]; then   echo "passwd ok"fi#调用 valid_passwd 函数ret=$(./func.bin valid_passwd 124)if [ $ret -eq 1 ]; then   echo "passwd ok"else   echo "passwd fail"fi#调用 max_num 函数ret=$(./func.bin max_num)echo "max_num:"$ret#调用 ver 函数ret=$(./func.bin ver)echo "version:"$ret

执行 ./test_func.sh 命令,结果如下

隐藏shell脚本内容的工具shc分析

从上图可以看出,test_func.sh 脚本分别调用了二进制文件 fun.bin 中的 valid_passwd、max_num、 ver 函数,根据 func.sh 脚本内容,可以确定结果输出都是正确的

从这个实例可以得出,普通脚本也可以正常使用二进制的脚本

安全

shc 使用的加密类型是叫做 RC4流密码的一个变体,目前它已经被证实存在弱点,存在被破解的可能,
尤其在 shc 中,密钥被携带到加密脚本本身中,所以,是存在 通过反汇编破解出密钥,进而通过密钥还原原始脚本的可能性

因此,我们不应该依赖 shc 加密的安全性,而是更多的把它当作是shell脚本内容的隐藏或者混淆工具

到此,相信大家对“隐藏shell脚本内容的工具shc分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 隐藏shell脚本内容的工具shc分析

本文链接: https://www.lsjlt.com/news/300704.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 隐藏shell脚本内容的工具shc分析
    本篇内容主要讲解“隐藏shell脚本内容的工具shc分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“隐藏shell脚本内容的工具shc分析”吧!从事 Linux 开发的同学,经常需要编写 sh...
    99+
    2023-06-21
  • 隐藏shell脚本内容的工具 shc详解
    目录简介安装常用选项编译脚本实例1实例2设置过期时间如何引用二进制脚本安全性小结从事 linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到一些敏感内容,比如一些 IP 地址,用户名以及密码等,或者脚...
    99+
    2022-06-04
    shell脚本隐藏 shell脚本隐藏内容
  • Linux中Shell文本处理工具的示例分析
    这篇文章给大家分享的是有关Linux中Shell文本处理工具的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过...
    99+
    2023-06-13
  • 10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些
    本篇文章为大家展示了10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有些误解认为 shell 脚本仅用于 CLI 环境。实际上在 KD...
    99+
    2023-06-16
  • shell脚本测试某网段内主机连通性的示例分析
    这篇文章主要介绍shell脚本测试某网段内主机连通性的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 测试192.168.4.0/24整个网段的连通性(while版本)#!/bin/bash#Author:丁...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作