当前位置 : 主页 > 操作系统 > centos >

shell实现加密压缩文件自动解压

来源:互联网 收集:自由互联 发布时间:2022-08-10
自动化批量解压缩加密文件脚本 1. 软件功能介绍 支持压缩格式:zip、rar、gzip、bzip(挖个坑,后续计划加入7z) 运行过程:自动读取目录下所有支持的压缩格式进行自动解压缩 从文件文本

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


1. 软件功能介绍

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

    • 当前目录的压缩文件

      image.png

    • 脚本执行结果

      image.png$\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" ];then echo "请使用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 ];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 https://www.rarlab.com/rar/rarlinux-x64-612.tar.gz &> /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 https://www.rarlab.com/rar/rarlinux-x32-612.tar.gz &> /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. 运行前准备

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

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

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

      image.png

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

      image.png

    5. 脚本使用案例

    • 5.1 运行脚本

      image.png

    • 5.2 脚本自动部署环境

      image.png

    • 5.3 开始自动解密解压缩

      image.png

    • 5.4 脚本执行完毕

      image.png

    • 5.5 查看解压缩出来的文件

      image.png


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

    上一篇:五、kubeadm高可用
    下一篇:没有了
    网友评论