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,自行研究。