【shell】压缩包密码暴破脚本
共计 2234 个字符,预计需要花费 6 分钟才能阅读完成。
本来一开始是打算用 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
# 实验 | |
## 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 |
下载说明:
1、本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2、如果源码下载地址失效请/联系站长QQ进行补发。
3、本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4、本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【源码源码ui网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5、请您认真阅读上述内容,购买即以为着您同意上述内容。
一站网 » 【shell】压缩包密码暴破脚本
1、本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。
2、如果源码下载地址失效请/联系站长QQ进行补发。
3、本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!
4、本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【源码源码ui网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。
5、请您认真阅读上述内容,购买即以为着您同意上述内容。
一站网 » 【shell】压缩包密码暴破脚本