shell实现加密压缩文件自动解压
自动化批量解压缩加密文件脚本
1. 软件功能介绍
支持压缩格式:zip、rar、gzip、bzip(挖个坑,后续计划加入7z)
运行过程:自动读取目录下所有支持的压缩格式进行自动解压缩
从文件文本读取密码,自动遍历密码解压缩
自动部署安装解压缩所需要的软件和环境
2.运行结果展示
3. 实现代码
#!/bin/bash
#初始化变量
RID=0 #ROOT账户ID
pwd=$PWD #保存当前路径
key_db=$1 #初始化秘钥文件
E_ERROR=65 #错误退出码
Num=1
#检测运行账号
if [ $UDI -ne "$RID" ];then
echo "请使用root账号运行" && exit E_ERROR
fi
#传参检测
if [ $# -ne 1 ]
then
echo -e "Usage:$0 password_file "
exit E_ERROR
fi
#清屏
clear
#打印脚本介绍信息
cat <>>\n"
echo "-------------------------------------"
#环境部署及安装相关解压软件
#zip软件检测
if [ `rpm -qa | grep -E "^zip.*" &> /dev/null;echo $?` -ne 0 ];then
echo "zip解压环境正在部署中,请稍等..."
yum install -y zip 2&>1 /dev/null || ( echo ">bzip2安装失败,请尝试手动安装" && exit E_ERROR ) && echo -e ">zip解压环境已部署!"
else
echo -e ">zip解压环境已部署!"
fi
#unzip软件检测
if [ `rpm -qa | grep -E "^unzip.*" &> /dev/null;echo $?` -ne 0 ];then
echo "unzip解压环境正在部署中,请稍等..."
yum install -y unzip 2&>1 /dev/null || ( echo ">unzip安装失败,请尝试手动安装" && exit E_ERROR ) && echo -e ">unzip解压环境已部署!"
else
echo -e ">unzip解压环境已部署!"
fi
#rar软件检测
rar &> /dev/null
if ! [ $? -eq 0 ];then
#Linux版本判断,安装rar-linux
echo "rar解压环境正在部署中,请稍等...(提示:根据网络情况,一般最快需要等待1分钟~)"
#检测OS版本
os=`uname -p | awk -F "_" '{print $2}'`
#安装对应版本的rar
if [ $os -eq "64" ]
then
cd /tmp/
wget --no-check-certificate &> /dev/null
tar -zxf rarlinux-x64-612.tar.gz &> /dev/null
cd rar &> /dev/null
( cp -v rar unrar /usr/local/bin/ &> /dev/null && echo -e ">rar解压环境已部署!" ) || ( cd $pwd && echo ">rar安装失败,请尝试手动安装" && exit E_ERROR )
#切回原始路径
cd $pwd
elif [ $os -eq "32" ]
then
cd /tmp/
wget --no-check-certificate &> /dev/null
tar -zxf rarlinux-x32-612.tar.gz &> /dev/null
cd rar &> /dev/null
( cp -v rar unrar /usr/local/bin/ &> /dev/null && echo -e ">rar解压环境已部署!" ) || ( cd $pwd && echo ">rar安装失败,请尝试手动安装" && exit E_ERROR )
#切回原始路径
cd $pwd
fi
else
echo -e ">rar解压环境已部署!"
fi
#bzip安装
bzip2 -h &> /dev/null
if ! [ $? -eq 0 ];then
echo "bzip解压环境正在部署中,请稍等..."
yum -y install bzip2 2&>1 /dev/null || ( echo ">bzip2安装失败,请尝试手动安装" && exit E_ERROR ) && echo -e ">bzip解压环境已部署!"
else
echo -e ">bzip解压环境已部署!"
fi
echo -e "-------------------------------------\n"
echo -e "开始解压加密文件>>>"
#ZIP压缩文件处理块
for i in `find . -name "*.zip"`
do
I="${i#./}"
echo "==============================="
echo -e "\033[1;32m>>>开始解压缩[$I]文件>>>\033[0m"
echo -e "-------------------------------"
cat $key_db | while read key
do
echo -e "尝试解压缩密码:$key"
unzip -q -o -P $key $i -d ./zip_result/ && echo -e "\033[41m已成功解压$PWD/$I压缩文件,解压缩文件存放在rar_result目录下!!! \033[0m" && break
done
done
#RAR压缩文件处理块
for i in `find . -name "*.rar"`
do
I="${i#./}"
echo "============================="
echo -e "\033[1;32m>>>开始解压缩[$I]文件>>>\033[0m"
echo -e "-----------------------------"
cat $key_db | while read key
do
echo -e "尝试解压缩密码:$key"
expect<<-EOF >>result_txt
spawn unrar x -r -o+ -p $i ./rar_result/
expect "Enter password*"
send "$key\r"
expect "Reenter password*"
send "$key\r"
expect eof
EOF
cat result_txt | awk 'END{print $NF}' | grep -q OK
if [ $? -eq "0" ]
then
#删除expect交互结果记录文件
rm -rf result_txt
echo -e "\033[41m已成功解压$PWD/$I压缩文件,解压缩文件存放在$PWD/rar_result目录下!!! \033[0m" && break
fi
#删除expect交互结果记录文件
rm -rf result_txt
done
done
#GZIP压缩文件处理块
for i in `find . -name "*.tar.gz"`
do
I="${i#./}"
echo "============================="
echo -e "\033[1;32m>>>开始解压缩[$I]文件>>>\033[0m"
echo -e "-----------------------------"
#创建解压缩目录
if [ ! -d ./gzip_result/ ]
then
echo -e "开始创建用于保存解压缩文件的目录"
mkdir ./gzip_result && echo "gzip_result目录创建成功"
fi
while read key
do
echo -e "尝试解压缩密码:$key"
( openssl des3 -d -k $key -salt -in $i 2>/dev/null | tar xzf - -C ./gzip_result/ 2>/dev/null && echo -e "\033[41m已成功解压$PWD/$I压缩文件,解压缩文件存放在$PWD/rar_result目录下!!! \033[0m") && break
done < $key_db
done
#BZIP压缩文件处理块
for i in `find . -name "*.tar.bz2"`
do
I="${i#./}"
echo "============================="
echo -e "\033[1;32m>>>开始解压缩[$I]文件>>>\033[0m"
echo -e "-----------------------------"
#创建解压缩目录
if [ ! -d ./bzip_result/ ]
then
echo -e "开始创建用于保存解压缩文件的目录"
mkdir ./bzip_result/ && echo -e "bzip_result目录创建成功"
fi
#密码暴力尝试
while read key
do
echo -e "尝试解压缩密码:$key"
( openssl des3 -d -k $key -salt -in $i 2>/dev/null | tar xjf - -C ./bzip_result/ 2>/dev/null && echo -e "\033[41m已成功解压$PWD/$I压缩文件,解压缩文件存放在$PWD/rar_result目录下!!! \033[0m" ) && break
done < $key_db
done
echo -e "\n脚本执行完毕,感谢使用~" && exit 0
4. 运行前准备
5. 脚本使用案例
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~