本来一开始是打算用python的,但一想python写保存路径,到最后还是放弃了,因为python的目录写法,终究逃不掉 Windows c:/xxx/、Mac  ~/xxxx/ ,这就造成了平台上的不适配,那我还不如索性写两份体验体验。

谈谈这次遇到的小问题,主要问题其实在注释上已经说明了,不过还是单拿出了,方便观看与讨论:

  • 发现 brew install p7zip > /dev/null 2>&1 运行效率较低,也算是个无心之举。跑代码测试的时候,我发现这种写法,明显感觉比if慢好多,所以就pass掉了。

  • 在Mac上,7z并不支持验证rar压缩包密码;Mac下面的rar,也不支持zip的密码验证。这个是p7zip与rar(两者都是 brew 安装)的实验结论。

  • 密码暴破没成功,没有输出echo,主要是自己逻辑上出现了问题:break之后又执行了常规的输出,定位代码处# echo "$?",需要外部使用变量来固化状态值,再做判断(类似批处理的延迟变量)。

细节方面就是:dos2unix,关于LF格式和CRLF格式的TXT文件了,统一处理,问题不大。

代码本地测试效果

在线测试效果图,顺带还发现了个有趣的现象:特权提升的$username,由自己的本地用户名,变成了“root”

与Windows版本的效果

整体来说,由于系统的差异明显,以及batch、shell的实现各有差异,殊途同归了,算是。可以粗糙理解为类似《富士山下》、《爱情转移》粤语歌与普通话的两种唱法。

下面是 7z_rar_sensei.sh 文件代码

code

  1. 
    # 实验
    ## brew install p7zip > /dev/null 2>&1 运行效率较低,大概有2~3秒不等,if算了
    ## 在Mac上,7z并不支持验证rar压缩包密码;Mac下面的rar,也不支持zip的密码验证。
    ## 网上txt为CRLF的问题,dos2unix搞定。
    ## 密码没找到,没输出,排查问题如下:
    ### $0 用于存储上一个命令的退出状态。当一个命令成功执行时,它的退出状态为 0,否则为非零值。
    ### 直接不在外层初始化flag,容易算数异常,推测是作用域问题。
    # 缺什么就安装什么
    [ ! -e $(which rar) ] && brew install rar
    [ ! -e $(which 7z) ] && brew install p7zip
    [ ! -e $(which dos2unix) ] && brew install dos2unix
    # 不存在就下载密码本
    if [ ! -f ~/Downloads/rarpasswd.txt ]; then
    curl -o ~/Downloads/rarpasswd.txt https://ghproxy.com/https://raw.GitHubusercontent.com/hoochanlon/ihs-simple/main/d-txt/rarpasswd.txt
    fi
    # 保存密码本为基本路径格式
    # 无法输出用户名 // ,储存变量结果后,再输出 /Users/<用户名> 正常。
    username=$USER
    passwd_txt="/Users/$username/Downloads/rarpasswd.txt"
    # CRLF文本换成LF文本
    dos2unix $passwd_txt >/dev/null 2>&1
    # has_passwd_rar="/Users/chanlonhoo/Desktop/BlackFell.zip"
    echo -e "\n"
    read -p "将压缩包文件拖入到终端: " has_passwd_rar
    # 打上flag,保存break状态码,固化存储。
    found_passwd_tag_num=0
    unrar_passwd_find() {
    # 遍历密码文件中的每一行密码
    while read password; do
    # 尝试使用当前密码解压缩压缩包
    unrar t -p$password "$has_passwd_rar" >/dev/null 2>&1
    # 检查解压缩命令的退出码
    if [ $? -eq 0 ]; then
    # 如果退出码为 0,说明密码正确,输出提示信息并退出循环
    echo -e "\n密码是: $password \n"
    # flag
    found_passwd_tag_num=1
    break
    fi
    done <$passwd_txt
    # echo "$?"
    if [ $found_passwd_tag_num -ne 1 ]; then
    echo -e "\n没找到正确的密码。\n"
    fi
    }
    7z_passwd_find() {
    # 遍历密码文件中的每一行密码
    while read password; do
    # 尝试使用当前密码解压缩压缩包
    7z t -p$password "$has_passwd_rar" >/dev/null 2>&1
    # 检查解压缩命令的退出码
    if [ $? -eq 0 ]; then
    # 如果退出码为 0,说明密码正确,输出提示信息并退出循环
    echo -e "\n密码是: $password \n"
    # flag
    found_passwd_tag_num=1
    break
    fi
    done <"$passwd_txt"
    if [ $found_passwd_tag_num -ne 1 ]; then
    echo -e "\n没找到正确的密码。\n"
    fi
    }
    # 判断文件名后缀是否包含rar
    if [[ ${has_passwd_rar##*.} == "rar" ]]; then
    unrar_passwd_find
    else
    7z_passwd_find
    fi
    Give feedback

【shell】压缩包解压密码暴力破解流程相关推荐

  1. 【shell】压缩包解压密码暴力破解脚本工具源码

    本来一开始是打算用python的,但一想python写保存路径,到最后还是放弃了,因为python的目录写法,终究逃不掉 Windows c:/xxx/.Mac  ~/xxxx/ ,这就造成了平台上的 ...

  2. 利用 ARCHPR 暴力破解 压缩包解压密码

    当你在互联网辛苦搜索到心仪的稀有资源,并且花了大量时间才下载完成后,欣喜若狂准备解压时→卧了个槽,勒了个去,尼玛,居然要解压密码,压缩包注释里又没有解压密码,此时不用急,来个暴力破解. 首先下载 AR ...

  3. 压缩包解压密码怎么破

    从网上下载的资源大多数都是以压缩包形式被下载下来,我们需要通过解压压缩包拿到我们想要的文件,但是有时候可能会遇到解压压缩包的时候需要密码的情况,那压缩包解压秘密该怎么破解呢?如果文件资源对你来说很重要 ...

  4. 压缩包解压密码找回密码

    压缩包密码忘记了该如何解压文件呢?目前没有办法绕过密码直接解压文件,只能通过软件找回密码,我们以奥凯丰 压缩包解密大师为例. [压缩包解密大师]快速找回密码_轻松移除使用限制-奥凯丰okfone压缩包 ...

  5. 压缩包文件如何删除解压密码

    我们给压缩包文件设置了密码,但是可能到后面就不需要加密了,可是每次解压文件还是需要输入密码才能够解压文件很麻烦,想要删除掉解压密码,除了解压在压缩还有其他方法吗? 或者是不知道密码,想要删除解压密码又 ...

  6. 借助7Z.exe 实现RAR压缩包密码暴力破解 C语言实现

    吐槽几句 rar压缩包暴力破解这种软件 , 原理上挺简单的其实 , 就是不断的用字符去碰 , 指不定啥时候能碰上 , 爆破破解不就是这么回事嘛 , 之前下载个学习资料 , 说好的童叟无欺, 结果却给我 ...

  7. 压缩包乱码解压密码错误||qq游戏游戏加载中,请稍后

    压缩包乱码解压密码错误||qq游戏游戏加载中,请稍后 前言 现象 ■ qq游戏-游戏加载中,请稍后 ■ 压缩包乱码解压密码错误 解决 最后 前言 Win系统必须使用GBK编码,否则会出现各种各样的问题 ...

  8. 压缩包文件的解压密码如何解除

    压缩包文件带有解压密码,想要解除解压密码,只能将压缩包文件解压出来之后,对文件再次进行加密,这次加密的时候就不要对文件进行加密就可以了,但如果你不知道压缩包文件的密码,就不能解压文件,也就不能解除解压 ...

  9. ZIP压缩包解密解压密码

    ZIP压缩包文件设置加密,每次此解压文件都需要输入解压密码才能够解压文件,但是有时候我们还可能会从其他地方得到压缩包并且带有密码,这种情况下,如果我们没有解压密码,是不能顺利解压出文件的. 想要解压这 ...

最新文章

  1. 【牛客】简单排序 (STL)
  2. BBI综述:在微生物组研究中使用宏转录组
  3. 基于Stripes框架进行Java Web开发
  4. 成功计算出文本类单词的概率
  5. efcore 更新关联表_如何在生产环境下用好EFCore
  6. eclipse dorado plugin
  7. 团队组成五个基本要素_【记录】综合分部宁波分队团队拓展活动
  8. 【Flask】Flask常用信号
  9. Machine Learning System Design的一道题
  10. Cocos2dx坐标转换
  11. 表格开源的数据集FUSD数据集、TableBank数据集、DocBank数据集
  12. 业界资讯: Flash Player Incubator 改进
  13. 逆radon变换matlab,Radon变换及其Matlab代码实现
  14. 芯烨打印机api密钥php,php连接芯烨云打印机 (php demo)
  15. python源文件改写
  16. 随机数生成器【欧拉常数】
  17. GNSS 周跳探测方法 之 TurboEdit
  18. Microsoft 环回适配器安装
  19. 2022高教杯思路合集!!全国大学生数学建模竞赛
  20. 王者荣耀的技术修炼之路

热门文章

  1. appinventor多个拓展导入导致编译出错:
  2. SpringBoot 集成 webSocket,实现后台向客户端推送消息
  3. 根据倾斜矩形中心点,长宽和倾斜角度,计算顶点,计算两直线交点
  4. Java:打印出所有的“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该数本身。
  5. Excel匹配关键词,返回指定结果(函数LOOKUP/FIND)
  6. 如何让python无限制输出,不受省略号的干扰
  7. 阿里确认布局自动驾驶,BAT再度聚首竞争白热化
  8. 【运动学】基于matlab脉冲多普勒测距测速【含Matlab源码 1947期】
  9. 图片在框内平行css,CSS行内垂直对齐
  10. 黑马——Bootstrap课程笔记