前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell脚本加密经验分享

Shell脚本加密经验分享

作者头像
院长技术
发布2020-09-09 16:57:01
2.2K0
发布2020-09-09 16:57:01
举报
文章被收录于专栏:院长运维开发院长运维开发

为啥要加密shell脚本 以我个人的需求为例,我要做一个自动远程登录的脚本,每次手动输密码太慢,而且输的多了密码也容易泄露;直接把密码写在脚本里,快确实是快,但是安全性让人无法忍受,写脚本的时候都有可能被过路的不小心看到密码,这就太蛋疼了。

shell脚本加密常用的有三种方法:gzexe,shc,upx

第一种,gzexe 特点是不用安装,加解密极其简单,我个人的操作环境是macOS,直接就可以用,命令简单粗暴

代码语言:javascript
复制
加密
gzexe l.sh
解密
gzexe -d l.sh

结论:gzexe其实就是个压缩工具,能起到隐藏文件内容的效果,执行速度几乎和脚本一样(在脚本不太大的情况下),但是如果加密文件本身被偷走,那就凉凉,轻松可以破解,当然高手也可以二段加密,比如手动修改加密后的文件什么的,但是这就是一个道高一尺魔高一丈的事了。

第二种,shc 安装方法略过,大家可以自行百度,这里直接实战。 shc加密以后,原文件不会变,会生成一个原文件名.x的加密后的文件,我这里就是l.sh.x了 加密命令

代码语言:javascript
复制
shc -r -f l.sh

但是shc有个问题,对于我来说是很严重的,就是加密后的脚本执行非常慢 vim test.sh

代码语言:javascript
复制
#!/bin/bash
# 加密前
start=$(date "+%s")
for i in {1..100}
{
    ./l.sh
}
end=$(date "+%s")
echo 加密前执行用时:$[$end-$start]"秒"
# 加密后
start=$(date "+%s")
./l.sh.x
end=$(date "+%s")
echo 加密后执行用时:$[$end-$start]"秒"

原始脚本执行100遍,用时不到1秒,shc加密后执行一次用时3秒,这tm慢如狗哇,如果每次执行脚本都是这个速度,完全不能忍! 总结:shc安全性稍好,至少解密起来不太容易,但是加密后执行速度太慢,无法忍受。

第三种,upx upx是一个加壳工具,主要用来给可执行文件加密用的,但是网上也有文章说可以给shell脚本加密,所以我们就来试试。 upx安装不废话了,大家可以自行百度,这里直接操练。

代码语言:javascript
复制
upx加密命令
# 最快压缩
upx -1 l.sh
# 最强压缩
upx -9 l.sh

出师不利,upx不能压缩太小文件,而脚本众所周知一般都不大,upx对shell脚本价值减少90%。

我后来又给脚本加了一堆注释,强行增大了脚本,upx加密是能加密了,但是执行不了有毛用啊!怀疑是脚本不算可执行文件,用gzexe把脚本搞成了可执行文件,又压缩了一遍,这回确定了,upx加密后的脚本就是没法执行,upx对shell脚本价值减小为0。 有不信邪的朋友可以自己试试,我在macOS上尝试的结果是这样的,或许其他平台会有不一样的表现呢。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档