自动化批量解压缩加密文件脚本


1. 软件功能介绍

  1. 支持压缩格式:zip、rar、gzip、bzip(挖个坑,后续计划加入7z)
  2. 运行过程:自动读取目录下所有支持的压缩格式进行自动解压缩
  3. 从文件文本读取密码,自动遍历密码解压缩
  4. 自动部署安装解压缩所需要的软件和环境

2.运行结果展示

  • 当前目录的压缩文件

  • 脚本执行结果


∗∗解压出来的文件保存在对应类型的文件夹下∗∗\color{#FF3030}**解压出来的文件保存在对应类型的文件夹下**∗∗解压出来的文件保存在对应类型的文件夹下∗∗

  • rar > rar_result
  • zip > zip_result
  • bzip > bzip_result
  • gzip > gzip_result

3. 实现代码

#!/bin/bash#初始化变量
RID=0           #ROOT账户ID
pwd=$PWD        #保存当前路径
key_db=$1       #初始化秘钥文件
E_ERROR=65      #错误退出码
Num=1#检测运行账号
if [ $UDI -ne "$RID" ];thenecho "请使用root账号运行" && exit E_ERROR
fi#传参检测
if [ $# -ne 1 ]
then echo -e "Usage:$0 password_file "exit E_ERROR
fi#清屏
clear   #打印脚本介绍信息
cat <<EOF####################################################################### ================================================================== ## 《 Welcome to the automated decryption and decompression script 》 ## ================================================================== ## 1.Author:Cosann                                                    ## 2.Create Time:20220804                                             ## 3.Function:uncompress.sh                                           ## 3.Version:1.0                                                      ## 4.Description:自动化批量解压缩加密文件(从文本读取密码)           ##                                                                    #######################################################################
EOF#打印软件安转提示信息
echo -e "\n开始检查该脚本运行需要的解压缩环境依赖>>>\n"
echo "-------------------------------------"#环境部署及安装相关解压软件
#zip软件检测
if [ `rpm -qa | grep -E "^zip.*" &> /dev/null;echo $?` -ne 0  ];thenecho "zip解压环境正在部署中,请稍等..."yum install -y zip 2&>1 /dev/null || ( echo ">bzip2安装失败,请尝试手动安装" && exit E_ERROR ) && echo -e ">zip解压环境已部署!"
elseecho -e ">zip解压环境已部署!"
fi#unzip软件检测
if [ `rpm -qa | grep -E "^unzip.*" &> /dev/null;echo $?` -ne 0  ];thenecho "unzip解压环境正在部署中,请稍等..."yum install -y unzip 2&>1 /dev/null || ( echo ">unzip安装失败,请尝试手动安装" && exit E_ERROR ) && echo -e ">unzip解压环境已部署!"
elseecho -e ">unzip解压环境已部署!"
fi#rar软件检测
rar &> /dev/null
if ! [ $? -eq 0  ];then#Linux版本判断,安装rar-linuxecho "rar解压环境正在部署中,请稍等...(提示:根据网络情况,一般最快需要等待1分钟~)"#检测OS版本os=`uname -p | awk -F "_" '{print $2}'`#安装对应版本的rarif [ $os -eq "64" ]thencd /tmp/wget --no-check-certificate https://www.rarlab.com/rar/rarlinux-x64-612.tar.gz &> /dev/nulltar -zxf rarlinux-x64-612.tar.gz &> /dev/nullcd rar &> /dev/null( cp -v rar unrar /usr/local/bin/ &> /dev/null && echo -e ">rar解压环境已部署!" ) || ( cd $pwd && echo ">rar安装失败,请尝试手动安装" && exit E_ERROR )#切回原始路径cd $pwdelif [ $os -eq "32" ]thencd /tmp/wget --no-check-certificate https://www.rarlab.com/rar/rarlinux-x32-612.tar.gz  &> /dev/nulltar -zxf rarlinux-x32-612.tar.gz &> /dev/nullcd rar &> /dev/null( cp -v rar unrar /usr/local/bin/ &> /dev/null && echo -e ">rar解压环境已部署!" ) || ( cd $pwd && echo ">rar安装失败,请尝试手动安装" && exit E_ERROR )#切回原始路径cd $pwdfi
elseecho -e ">rar解压环境已部署!"
fi#bzip安装
bzip2 -h  &> /dev/null
if ! [ $? -eq 0 ];thenecho "bzip解压环境正在部署中,请稍等..."yum -y install bzip2 2&>1 /dev/null  || ( echo ">bzip2安装失败,请尝试手动安装" && exit E_ERROR ) && echo -e ">bzip解压环境已部署!"
elseecho -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 doecho -e "尝试解压缩密码:$key"unzip -q -o -P $key $i -d ./zip_result/ && echo -e "\033[41m已成功解压$PWD/$I压缩文件,解压缩文件存放在rar_result目录下!!! \033[0m" && breakdone
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 doecho -e "尝试解压缩密码:$key"expect<<-EOF >>result_txtspawn unrar  x -r -o+ -p $i ./rar_result/ expect "Enter password*"send "$key\r" expect "Reenter password*"send "$key\r"expect eof
EOFcat result_txt | awk 'END{print $NF}' | grep -q OK if [ $? -eq "0" ]then#删除expect交互结果记录文件rm -rf result_txtecho -e "\033[41m已成功解压$PWD/$I压缩文件,解压缩文件存放在$PWD/rar_result目录下!!! \033[0m" && breakfi#删除expect交互结果记录文件rm -rf result_txtdone
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/ ]thenecho -e "开始创建用于保存解压缩文件的目录"mkdir ./gzip_result && echo "gzip_result目录创建成功"fiwhile read keydoecho -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/ ]thenecho -e "开始创建用于保存解压缩文件的目录"mkdir ./bzip_result/ && echo -e "bzip_result目录创建成功"fi#密码暴力尝试while read keydoecho -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
doneecho -e "\n脚本执行完毕,感谢使用~" && exit 0

4. 运行前准备

  • 1. 需要两个文件,含有以上代码脚本文件,密码字典文件

例:以上shell脚本保存为uncompress.sh的脚本文件,创建一个密码字典文件为passwd.txt

  • 密码文件格式
  • 2. 赋予脚本执行权

  • 3. 将脚本文件和密码放在同一目录下(建议,使用绝对路径也可以)

5. 脚本使用案例

  • 5.1 运行脚本

  • 5.2 脚本自动部署环境

  • 5.3 开始自动解密解压缩

  • 5.4 脚本执行完毕

  • 5.5 压缩已解压缩至对应文件夹里


以上就是一个简单的自动解压缩脚本,欢迎交流学习~

shell实现加密压缩文件自动解压相关推荐

  1. java实现上传zip/rar压缩文件,自动解压

    在pom中添加解压jar依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...

  2. java上传rar文件_java实现上传zip/rar压缩文件,自动解压

    在pom中添加解压jar依赖 4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.2.RELEASE com.hf uncomp ...

  3. linux下tar gz bz2 tgz z等众多压缩文件的解压方法

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rar. ...

  4. 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(四)

    最近很火的在线文件预览txt.doc.ppt.pdf.excel.jpg.mp4.png.zip.tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写一个文件搜索引擎实现多关键词 ...

  5. Zip压缩文件没有解压密码怎么办?

    Zip压缩文件没有解压密码怎么办? 在平时,我们难免的需要到浏览器上面寻找一些需要的资源,可往往下载好了zip文件后,解压时却需要密码.真的让人很痛苦.那有没有什么办法可以破解zip解压时需要的密码呢 ...

  6. 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(五)

    最近很火的在线文件预览txt.doc.ppt.pdf.excel.jpg.mp4.png.zip.tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写一个文件搜索引擎实现多关键词 ...

  7. linux解压文件卡住,Linux系统下常见的压缩文件及解压方法

    如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包. 压缩解压 linux下怎么解后缀名是gzip的文件 ...

  8. Linux之zip加密压缩与解密解压(一百二十一)

    Linux之zip加密压缩与解密解压 1.zip加密压缩目录 # zip -rP Abc#123 tmp.zip test/2.unzip解密解压缩 # unzip -P Abc#123 tmp.zi ...

  9. Linux下各种压缩文件的解压方法

    对于刚刚接触Linux 的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows 下最常见的压缩文件就只有两种,一是,zip,另一个是.rar ...

  10. linux下tar gz bz2 tgz z等众多压缩文件的解压方法--转载

    感觉Android好热门,想自学一点,可是它的内核还是基于LINUX的,无奈,一切要从头学起,还是老规矩,一切从零开始,该转的转,该刊的看,该学的学,反正我现在是一张白纸,要做到脸皮要厚!欢迎大家指点 ...

最新文章

  1. np.unique 去重用法
  2. C++ 计算并输出三角形的面积
  3. 【Pygame小游戏】来了来了它来了——这款五子棋小游戏超A的,分享给你的小伙伴儿一起pk吧~
  4. ARM/THUMB汇编(补丁开发类)基础教程
  5. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析
  6. php代码编辑器6,优秀的PHP代码编辑器_Blumentals Rapid PHP V13.6 免费版
  7. HDU 4325 离散化+树状数组 或者 不使用树状数组
  8. 建立单独的解决方案来开发DNN模块
  9. 诺奖文章里面的动图绘制教程来了!!
  10. 继英伟达、三星后,育碧也遭攻击,员工密码重置
  11. 解决java环境变量配置不生效
  12. Apple’s Secret? It Tells Us What We Should Love
  13. 金蝶实现EXCEL复制粘贴功能
  14. 上市只是开端,库客音乐用版权打出组合拳
  15. html头像生成器,2020头像生成器
  16. Cisco2960交换机端口安全Port-Security
  17. 使用Kinect制作变身钢铁侠
  18. 电脑重启后 虚拟机不见了?
  19. 汽车免费WiFi的原理是什么?
  20. c语言字母圣诞树,如何用C语言画一个“圣诞树”.pdf

热门文章

  1. 沪深证券交易机制概述
  2. 英语学习回炉之绕口令
  3. IT大学生成长周报 | 第 8 期
  4. k-近邻算法的优缺点及拓展思考
  5. PHP地图规划骑行路径,规划结果 + 骑行路线绘制
  6. java seek_java中seek()的用法,seek和seekfor有什么区别
  7. 深夜给这个世界添加一点佐料
  8. EA enterprise architect 画类图
  9. 使用urllib发起请求- urlopen发起请求read/decode/getcode/info/geturl-post请求抽屉网
  10. python opencv截取视频