SHELL脚本加密
一、背景介绍
DBA日常更新insert|update较多,耽误很多时间。开发出工具虽然对脚本内用户密码进行了加密加严操作,但是仔细查询内部逻辑还是可能泄露密码的,今天用gzexe方式对shell脚本加密。
二、开始测试
1.找一个测试脚本执行。(线上脚本内容不便公布,自行编写测试脚本。)

2.进行加密操作 [root@]#gzexe Automatic_update.sh Automatic_update.sh: 63.0% [root@]#ls Automatic_update.sh Automatic_update.sh~ bak conf SelectDBname.sh sh_lib
3.加密后的脚本内容
[root@ ]#cat Automatic_update.sh
#!/bin/sh
skip=44
tab=' '
nl='
'
IFS=" $tab$nl"
umask=`umask`
umask 77
gztmpdir=
trap 'res=$?
test -n "$gztmpdir" && rm -fr "$gztmpdir"
(exit $res); exit $res
' 0 1 2 3 5 10 13 15
if type mktemp >/dev/null 2>&1; then
gztmpdir=`mktemp -dt`
else
gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir
fi || { (exit 127); exit 127; }
gztmp=$gztmpdir/$0
case $0 in
-* | */*'
') mkdir -p "$gztmp" && rm -r "$gztmp";;
*/*) gztmp=$gztmpdir/`basename "$0"`;;
esac || { (exit 127); exit 127; }
case `echo X | tail -n +1 2>/dev/null` in
X) tail_n=-n;;
*) tail_n=;;
esac
if tail $tail_n +$skip <"$0" | gzip -cd > "$gztmp"; then
umask $umask
chmod 700 "$gztmp"
(sleep 5; rm -fr "$gztmpdir") 2>/dev/null &
"$gztmp" ${1+"$@"}; res=$?
else
echo >&2 "Cannot decompress $0"
(exit 127); res=127
fi; exit $res ~1±Automatic_update.shԖ[O~߽ScRem¯
ֻm҈RڄRZ5R!Q£^͟)»§Lܔj#YZϙfN֫ɂ¬%
~𦽷ؼµ#®ƚ®n¸ګ髜{n�ꬬSu¶q𐋨ᐻ¿׆IJ!ȖUVĉǐ$¬2¨«l´d]>b٢£6¼ݳh±¬G ¹9©+De"NCUwL0±mDz±r2ª
읾鞝ˢ¦]
<\¼]&Z#¦-Q%E-d配P05Ϥ¸毼1:쮟<ݼ�¼®̻�°p·þ̮鱐³½5x¼¬k4G-3Ƨ²w?m={)5ƲWٮuaª⡜xp
±vņr#¹\
Ϻ$$½5Gtڱ@
#¶˗惸eَS䛢¤£e¨v³¤▯G%=PD¡Gz:Q¥誎þ(¼ғǂ>>ȵ%̐5LNQ¦E٨✒EޑlZHJOV¤T ªO*r!)陑.QbȚ5畒Z%!K1©TʓR| _R!e
߫알®N%\¹7a=¹y XБ v*;ן²ʨKeª·k¤5²ـK§*،¿2#텗%3%
ª(§e5avº¯¦¬¡¿ٝs4¹5R2
ݝº\
tі=g轺gL8ÿ¢ɾ岙X𐨠 Zºc¦7
¥Aٔ듊ҵ[mޢ<𐍂¿Dz~®YFL\T¥>ʑɷ¾2
@,
S(Ywﺙ𐑕I½/y̛º£
ȴ Ύ]>©¦/ɷfrþ
Ǡڃ ¯ۂHBVZHϛˡ¦īoC(
²";£(mҳƷ*ğ쑿
ǽþl0½똸윴¡½9˵¯B¡ Dφ
ߪ»ÿy³¾岨Chιٿ¡o¾
4.再次执行内容不变,并确认加参数一样可以执行。

5.进行解密 gzexe -d Automatic_update.sh 查看确认脚本内容无误
6.再次执行确认,发现完全没问题。 #另外一种shell加密方式shc,自行研究。

浙公网安备 33010602011771号