今天在LInux了接触到一个命令:“shc”,以前还真没遇到过,这个也不是内置的 ,不过挺有意思的 记录一下
这个是一个专门给shell脚本进行二进制加密的一个小程序,安装的话
直接
代码语言:javascript复制yum install shc
当然也可以源码安装
https://github.com/neurobin/shc
代码语言:javascript复制./configure
make
sudo make install
下面看下一些命令
代码语言:javascript复制shc Version 4.0.3, Generic Shell Script Compiler
shc GNU GPL Version 3 Md Jahidul Hamid <jahidulhamid@yahoo.com>
shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-o outfile] [-rvDSUHCABh] -f script
-e %s Expiration date in dd/mm/yyyy format [none]
-m %s Message to display upon expiration ["Please contact your provider"]
-f %s File name of the script to compile
-i %s Inline option for the shell interpreter i.e: -e
-x %s eXec command, as a printf format i.e: exec('%s',@ARGV);
-l %s Last shell option i.e: --
-o %s output filename
-r Relax security. Make a redistributable binary
-v Verbose compilation
-S Switch ON setuid for root callable programs [OFF]
-D Switch ON debug exec calls [OFF]
-U Make binary untraceable [no]
-H Hardening : extra security protection [no]
Require bourne shell (sh) and parameters are not supported
-C Display license and exit
-A Display abstract and exit
-B Compile for busybox
-h Display help and exit
Environment variables used:
Name Default Usage
CC cc C compiler command
CFLAGS <none> C compiler flags
LDFLAGS <none> Linker flags
Please consult the shc man page.
举个例子:
编写一个hello.sh
代码语言:javascript复制#!/bin/bash
echo "helloWorld"
加密:
代码语言:javascript复制shc -r -f hello.sh
会生成几个文件
代码语言:javascript复制[root@VM-88-103-centos ~/tmp/shc]# ls
hello.sh hello.sh.x hello.sh.x.c
其中hello.sh.x 是可执行二进制文件,直接复制给其他人就可以直接使用了
代码语言:javascript复制[root@VM-88-103-centos ~/tmp/shc]# ./hello.sh.x
helloWorld
而hello.sh.x.c 是c源码 这里就不贴了
二进制文件是不可查看的,所以有些脚本要给别人用,但是不想源码开放的话可以用这个工具