【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文件了,统一处理,问题不大。

代码本地测试效果

【shell】压缩包密码暴破脚本

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

【shell】压缩包密码暴破脚本

【shell】压缩包密码暴破脚本

与Windows版本的效果

【shell】压缩包密码暴破脚本

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


下面是 7z_rar_sensei.sh 文件代码


code

  1. # 实验    
  2. ## brew install p7zip > /dev/null 2>&1 运行效率较低,大概有2~3秒不等,if算了    
  3. ## 在Mac上,7z并不支持验证rar压缩包密码;Mac下面的rar,也不支持zip的密码验证。    
  4. ## 网上txt为CRLF的问题,dos2unix搞定。    
  5. ## 密码没找到,没输出,排查问题如下:    
  6. ### $0 用于存储上一个命令的退出状态。当一个命令成功执行时,它的退出状态为 0,否则为非零值。    
  7. ### 直接不在外层初始化flag,容易算数异常,推测是作用域问题。    
  8. # 缺什么就安装什么    
  9. [ ! -e $(which rar) ] && brew install rar    
  10. [ ! -e $(which 7z) ] && brew install p7zip    
  11. [ ! -e $(which dos2unix) ] && brew install dos2unix    
  12. # 不存在就下载密码本    
  13. if [ ! -f ~/Downloads/rarpasswd.txt ]; then    
  14. curl -o ~/Downloads/rarpasswd.txt https://ghproxy.com/https://raw.GitHubusercontent.com/hoochanlon/ihs-simple/main/d-txt/rarpasswd.txt    
  15. fi    
  16. # 保存密码本为基本路径格式    
  17. # 无法输出用户名 // ,储存变量结果后,再输出 /Users/<用户名> 正常。    
  18. username=$USER    
  19. passwd_txt="/Users/$username/Downloads/rarpasswd.txt"    
  20. # CRLF文本换成LF文本    
  21. dos2unix $passwd_txt >/dev/null 2>&1    
  22. # has_passwd_rar="/Users/chanlonhoo/Desktop/BlackFell.zip"    
  23. echo -e "\n"    
  24. read -p "将压缩包文件拖入到终端: " has_passwd_rar    
  25. # 打上flag,保存break状态码,固化存储。    
  26. found_passwd_tag_num=0    
  27. unrar_passwd_find() {    
  28. # 遍历密码文件中的每一行密码    
  29. while read password; do    
  30. # 尝试使用当前密码解压缩压缩包    
  31. unrar t -p$password "$has_passwd_rar" >/dev/null 2>&1    
  32. # 检查解压缩命令的退出码    
  33. if [ $? -eq 0 ]; then    
  34. # 如果退出码为 0,说明密码正确,输出提示信息并退出循环    
  35. echo -e "\n密码是: $password \n"    
  36. # flag    
  37. found_passwd_tag_num=1    
  38. break    
  39. fi    
  40. done <$passwd_txt    
  41. # echo "$?"    
  42. if [ $found_passwd_tag_num -ne 1 ]; then    
  43. echo -e "\n没找到正确的密码。\n"    
  44. fi    
  45. }    
  46. 7z_passwd_find() {    
  47. # 遍历密码文件中的每一行密码    
  48. while read password; do    
  49. # 尝试使用当前密码解压缩压缩包    
  50. 7z t -p$password "$has_passwd_rar" >/dev/null 2>&1    
  51. # 检查解压缩命令的退出码    
  52. if [ $? -eq 0 ]; then    
  53. # 如果退出码为 0,说明密码正确,输出提示信息并退出循环    
  54. echo -e "\n密码是: $password \n"    
  55. # flag    
  56. found_passwd_tag_num=1    
  57. break    
  58. fi    
  59. done <"$passwd_txt"    
  60. if [ $found_passwd_tag_num -ne 1 ]; then    
  61. echo -e "\n没找到正确的密码。\n"    
  62. fi    
  63. }    
  64. # 判断文件名后缀是否包含rar    
  65. if [[ ${has_passwd_rar##*.} == "rar" ]]; then    
  66. unrar_passwd_find    
  67. else    
  68. 7z_passwd_find    
  69. fi    
  70. Give feedback

下载说明:

1.本站资源都是白菜价出售,同样的东西,我们不卖几百,也不卖几十,甚至才卖几块钱,一个永久会员能下载全站100%源码了,所以单独购买也好,会员也好均不提供相关技术服务。

2.如果源码下载地址失效请/联系站长QQ进行补发。

3.本站所有资源仅用于学习及研究使用,请必须在24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您权益请联系本站删除!

4.本站站内提供的所有可下载资源(软件等等)本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发);但本网站不能保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug;同时本站用户必须明白,【AGU极品网】对提供下载的软件等不拥有任何权利(本站原创和特约原创作者除外),其版权归该资源的合法拥有者所有。

5.请您认真阅读上述内容,购买即以为着您同意上述内容。

AGU极品网 » 【shell】压缩包解压密码暴力破解脚本工具源码

发表回复