• {{ item.name }}
  • 1. 下载并安装shc
  • 2. 创建一个简单的测试shell脚本
  • 3. 加密random.sh脚本
  • 5.为这个shell脚本指定到期时间
  • 6.创建兼容性更好的shc加密Shell脚本
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

如何在linux中使用shc加密你的shell脚本

  • iansiu
  • 2016-03-13
  • 0

原文链接:http://www.thegeekstuff.com/2012/05/encrypt-bash-shell-script/

本文谷歌机翻

内容如下:

问:如何在Linux环境下加密我的bash shell脚本?这个shell脚本包含密码,我不希望别人有执行权限查看shell脚本,并获取密码。有没有一种方法来加密我的shell脚本?

答:首先,你不应该加密你的shell脚本。你真的应该正确记录你的shell脚本,以便任何人都能准确的理解它的作用。如果它包含密码等敏感信息,你应该找出一个不同的方法来编写shell脚本,而无需进行加密。
话虽这么说,如果你仍然坚持加密一个shell脚本,您可以使用SHC。

1. 下载并安装shc

wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
gzip -d xvfz shc-3.8.7.tgz
cd shc-3.8.7
mkdir -p /usr/local/man/man1
make
make install

shc的使用方法:

shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script

2. 创建一个简单的测试shell脚本

为了达到测试的目的,我们写一个产生随机数的random.sh shell脚本,运行的时候必须指定想生成多少随机数。

shell脚本内容如下:

vi random.sh

#!/bin/bash

echo -n "你想生成多少随机数字? "
read max

for (( start = 1; start <= $max; start++ ))
do
echo -e $RANDOM
done

3. 加密random.sh脚本

shc -f random.sh

将创建这两个文件

ls -l random.sh*

-rw-r--r--. 1 root root 139 Jul 9 16:16          random.sh
-rwx--x--x. 1 root root 8708 Jul 9 16:18     random.sh.x
-rw-r--r--. 1 root root 10022 Jul 9 16:18     random.sh.x.c

random.sh 是原来未加密的shell脚本文件
random.sh.x  是加密后的二进制文件
random.sh.x.c 是加密random.sh文件的C源代码。这个C源代码被编译之后会生成加密后random.sh.x文件

用file命令查看文件类型

file random.sh
random.sh: Bourne-Again shell script text executable
file random.sh.x
random.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
file random.sh.x.c
random.sh.x.c: ASCII C program text

4.执行加密后的二进制文件,确保可以正常工作。

./random.sh.x

请注意加密后的random.sh.x文件仍然依赖第一行的#!/usr/bin/bash

5.为这个shell脚本指定到期时间

使用SHC你可以指定一个到期时间。当有人试图在到期时间之后执行这个shell脚本,他们会得到一个错误信息。

比如说,你不希望任何人,在2016-3-12后执行random.sh.x。

可以使用:shc -e 选项指定有效期并加密shell脚本,格式:dd / mm / yyyy。

例子:

shc -e  12/3/2016 -f random.sh

在这个例子中,如果有人试图在2016-3-12之后执行random.sh.x,他们将会看见一个默认的过期信息。

./random.sh.x: has expired!
Please contact your provider

如果你想指定自己的自定义到期消息,可以使用 -m选项。

shc -e 12/3/2016 -m "联系[email protected]此脚本的新版本" -f random.sh

./random.sh.x
./random.sh.x:已过期!
联系[email protected]此脚本的新版本

6.创建兼容性更好的shc加密Shell脚本

除了-e和-m,也可以使用下列选项:

-r    兼容性更好,可在相同操作系统下执行。(不一定)
-T: 允许让ltrace, strace那样的程序追踪脚本运行
-v   详细信息

最后,值得再次重复:你不应该加密你的shell脚本。如果你决定使用SHC加密您的shell脚本,请记住,一个聪明的人仍然可以从shc生成的二进制文件获取到原来的shell脚本。

© 2025 laowang's blog
Theme by Wing