使用shc简单加密后的脚本文件恢复🌱
#!/bin/sh
##############################################################
# Used to unzip script files generated by shc #
##############################################################
shcd_help()
{
echo " Used to unzip script file generated by shc."
echo " Usage:"
echo " 0. shcd -h|?|-help ---- Current you see"
echo " 1. shcd inputfile ---- 解压单个文件(输出文件inpfile.bat)"
echo " 2. shcd inpfile outpfile ---- 解压单个文件(输出文件outpfile)"
echo " 3. shcd -d ---- 深层目录遍历解压(输出文件*.bat)"
echo " 4. shcd -a ---- 当前目录遍历解压(输出文件*.bat)"
exit 0
}
get_skip()
{
skip=0
while read skip_line
do
let "skip -= 1"
skl_f="none"
skipstrlist=$(echo $skip_line|tr "=" "\n")
for xs in $skipstrlist; do
if [ "$skl_f" = "none" ]; then
if [ "$xs" = "skip" ]; then
skl_f="found"
else
break;
fi
elif [ "$skl_f" = "found" ]; then
skip=$xs;
break
else
break
fi
done
if [ "$skl_f" = "found" ] || [ $skip -le -2 ]; then
break
fi
done < "$1"
echo $skip
}
ucount=0
uncomp_shc()
{
skipline=$(get_skip $1)
if [ "$skipline" = "" ] || [ $skipline -le 1 ]; then
echo "%>_<% Skip flag not found: $1"
else
if tail -n +"$skipline" "$1" | gzip -cd > "$2"; then
let "ucount += 1"
echo "^_^ $ucount. Unzip $1<skip=$skipline> to $2"
else
echo "%>_<% Unzip $1<skip=$skipline> failed"
fi
fi
}
uncshc_dir()
{
echo "......Enter dir '$1' ......"
for file in $1/*
do
if [ -f $file ]; then
uncomp_shc "$file" "$file.bat"
elif [ -d $file ] && [ "$2" = "-d" ]; then
uncshc_dir "$file" "$2"
fi
done
echo "......Leave dir '$1' ......"
}
# now start to work
if [ "$#" = "0" ] || [ "$1" = "-?" ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
shcd_help
elif [ -f $1 ]; then
if [ "$#" = "2" ]; then
uncomp_shc "$1" "$2"
else
uncomp_shc "$1" "$1.bat"
fi
elif [ "$1" = "-d" ] || [ "$1" = "-a" ]; then
uncshc_dir . $1
else
echo "File $1 is not exist."
fi
echo "$ucount files are unzipped."
exit
# end of job