当前位置:网站首页 > 技术博客 > 正文

sha1加密原理



*更新

ubuntu18.04直接可以 apt-get install shc

简单说下我的使用,刚开始什么参数都不加,最终生成的.x文件为动态链接,虽然没有什么依赖,但是需要动态链接glibc。由于我本地的
glibc版本远大于服务器上的,所以导致这个文件无法运行,提示找不到GLIBC 2.6找不到。查看了帮助文档之后,可以通过设置CFLAGS
环境变量,修改编译参数,再加上其他参数,最终的命令为:

这样原先脚本执行svn,只要直接改成svn.sh.x,去掉原先的用户名、密码,这样密码就被加密保存了。

shc采用arc4加密,在命令中,大致通过
– 处理输入参数
– 读取脚本
– 解析使用的shell
– 生成C源码文件
– 编译C源码文件
这几步完成。在生成源码文件的时候,会对内容进行arc4加密,C源码中重新进行arc4进行解密,最终通过execvp调用运行最终的脚本。

几个参数的大致实现:

如果不设置这个变量,生成的可执行文件将不能被trace

首先fock一个进程,试图去通过ptrace调用挂载到新fock出来的进程上,如果成功了,说明没有被其他进程trace,则发送SIGCONT信号继续执行,
否则直接发送SIGKILL信号终止进程继续执行。但是在实际使用过程中,不知道为什么,偶尔会让服务器上多出T状态的进程,看上是因为ptrace调用
向进程发送了SIGSTOP之后,再次发送SIGCONT没有成功。因此后面都加上了-T参数,跳过这个不能追踪设置。当前这样会大大降低安全性。

这样的判断,直接阻止程序的运行。

1) 工具说明

shell脚本是可读写的, 很有可能会泄露敏感信息, 如用户名/密码/路径/IP等. 同样在shell脚本运行时会也泄露敏感信息. shc是一个加密shell脚本的工具, 它的作用是把shell脚本转换为一个可执行的二进制文件. 这就很好的解决了上述问题.

2) 下载安装

下载: http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.6.tgz

安装:

# mkdir -p /orahome/wangnc/shc && cd /orahome/wangnc/shc

# rz  (上传安装包shc-3.8.6.tgz)

# mkdir /usr/local/man/man1/ (install时会把man文件放入该目录,如果该目录不存在需提前建好)

# tar vxf shc-3.8.6.tgz && cd shc-3.8.6

# make test

# make strings

# make install

*     Installing shc and shc.1 on /usr/local

*     Do you want to continue? <输入y>

install -c -s shc /usr/local/bin/

install -c -m 644 shc.1 /usr/local/man/man1/

用法:

# which shc

/usr/local/bin/shc

# shc

shc parse(-f): No source file specified

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

3) 加密脚本

# shc -v -f test.sh

-v是verbose模式, 输出更详细编译日志; 

-f 指定脚本的名称.

$ ll test*

-rwxr-xr-x  1 Oracle oinstall   1178 Aug 18 10:00 test.sh

-rwx--x--x  1 oracle oinstall   8984 Aug 18 18:01 test.sh.x

-rw-r--r--  1 oracle oinstall  14820 Aug 18 18:01 test.sh.x.c

$ file test.sh.x

test.sh.x: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

可以看到生成了动态链接可执行二进制文件test.sh.x和C源文件testup.sh.x.c, 注意生成的二进制文件因为是动态链接形式, 所以在其它平台上不能运行.

4) 生成静态链接的二进制可执行文件

可以通过下面的方法生成一个静态链接的二进制可执行文件:

$ CFLAGs=-static shc -r -f test.sh

$ file testup.sh.x

5) 通过sch加密后的脚本文件很安全吗?

一般来说是安全的, 不过可以使用gdb和其它的调试工具获得最初的源代码. 如果需要更加安全的方法, 可以考虑使用wzshSDK. 另外shc还可以设置脚本的运行期限和自定义返回信息:

$ shc -e 03/31/2007 -m "the MySQL backup scrīpt is now out of date." -f test.sh

-e表示脚本将在2007年3月31日前失效, 并根据-m定义的信息返回给终端用户.

版权声明


相关文章:

  • 五子棋对局视频2025-01-25 13:01:01
  • xml文件中的注释2025-01-25 13:01:01
  • http请求头信息有哪些2025-01-25 13:01:01
  • 电容并在电源上的作用2025-01-25 13:01:01
  • xml中如何注释2025-01-25 13:01:01
  • 超线程技术开启还是关闭2025-01-25 13:01:01
  • sql窗口函数和开窗函数2025-01-25 13:01:01
  • speex文件怎么转换成mp32025-01-25 13:01:01
  • ovs详解2025-01-25 13:01:01
  • 面向对象设计的7大原则2025-01-25 13:01:01