小辉网络社区致力于优质软件,活动线报,游戏辅助,绿色工具等资源共享,好货不私藏!

shell脚本暴力破解压缩包密码

小辉工作室 网络技术教程
【shell】压缩包密码暴破脚本,本来一开始是打算用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的实现各有差异,殊途同归了。
附源码:https://github.com/hoochanlon/ihs-simple/blob/main/d-shell/7z_rar_sensei.sh
rl -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

温馨提示:如有转载或引用以上内容请将本文链接作为出处标注!百度已收录

免责声明:本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。侵删请致信E-mail:431228450@qq.com

标签 暂无标签
资源分享
评论列表