hoochanlon 发表于 2023-4-18 12:14

一步步手撸一个压缩包密码爆破的批处理脚本

如题,原因主要是嫌各网站有时附带压缩密码,需要额外记忆,以及事后再找压缩包解压又想不起来密码,找起密码太费劲。

草稿 v0.0.1 如下,慢慢打磨。

@rem 解压,带密码与不带密码,此外解压密码不正确是无法输出正常内容的。
@REM "%ProgramFiles%"\7-Zip\7z x C:\Users\nice\Desktop\问题管理.rar-o"C:\Users\nice\Desktop\"
@REM "%ProgramFiles%"\7-Zip\7z x C:\Users\nice\Desktop\问题管理.rar-o"C:\Users\nice\Desktop\" -p1234

@REM 7z只能实现7z、zip之类的打包加密
@REM "%ProgramFiles%"\7-Zip\7z a "C:\Users\nice\Desktop\问题管理.rar" C:\Users\nice\Desktop\问题管理.pdf -p1234

@REM 验证压缩包密码
@REM "%ProgramFiles%"\7-Zip\7z t -p1234 C:\Users\nice\Desktop\wifi密码本.rar


@REM 启用延迟变量
setlocal EnableDelayedExpansion

@REM 设置7z为常用变量
set used7z="%ProgramFiles%"\7-Zip\7z.exe

@REM 看返回值验证密码对错
"%ProgramFiles%"\7-Zip\7z t -p12345 C:\Users\nice\Desktop\wifi密码本.rar
if %errorlevel% EQU 0 (
    echo 对。
) else (
    echo 错。
)
endlocal

jidesheng6 发表于 2023-4-18 13:43

你也许需要这个,不过都是本地存储的,有丢失的风险

hoochanlon 发表于 2023-4-18 14:24

草稿 v0.0.2

新增:加入密码本测试,网络上常见的密码,以及个人常用密码

![](https://s2.xptou.com/2023/04/18/643e35a4251ff.png)

草稿 v0.0.2 源码

```
@REM 启用延迟变量
setlocal EnableDelayedExpansion

@REM 设置7z为常用变量
set used7z="%ProgramFiles%"\7-Zip\7z.exe
set "passwd_list=C:\Users\nice\Desktop\rarpasswd.txt"
set "has_passwd_rar=C:\Users\nice\Desktop\wifi密码本.rar"

rem 遍历密码列表并尝试打开文件
for /f "delims=" %%a in (%passwd_list%) do (
echo 测试 "%%a"...
"C:\Program Files\7-Zip\7z.exe" t -p"%%a" "%has_passwd_rar%" >nul 2>&1
if !errorlevel! equ 0 (
    echo 找到: "%%a"
    exit /b
)
)

echo 没找到。

pause

```

todo

* [ ]在线密码本测试
* [ ] 接收用户终端输入
* [ ] 写个简单的计时器

bamboowalker 发表于 2023-4-18 16:50

本帖最后由 bamboowalker 于 2023-4-18 16:55 编辑

先编个密码字典,
压缩文件的时候随便用一个字典中的密码,
然后就不用记着哪个压缩包用的什么密码了,
用这个脚本就可以了。
{:1_921:}

hoochanlon 发表于 2023-4-18 17:59

草稿 v0.0.3

* 新增curl远程调用密码本
* 发现301重定向错误(https写成http的原因,实际因素繁杂·,排错漏打字母)
* 终端接收字符串
* 美化格式

```
@echo off
IF NOT EXIST "C:\Users\%USERNAME%\Downloads\rarpasswd.txt" > nul (curl -o C:\Users\%USERNAME%\Downloads\rarpasswd.txt https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/main/d-txt/rarpasswd.txt)

@REM 启用延迟变量
setlocal EnableDelayedExpansion

echo/
@REM 设置7z为常用变量
set used7z="%ProgramFiles%"\7-Zip\7z.exe
set "passwd_list=C:\Users\%USERNAME%\Downloads\rarpasswd.txt"
@REM set "has_passwd_rar=C:\Users\nice\Desktop\wifi密码本.rar"
set /p input=请将文件路径复制到终端:

echo/
echo ---------开始爆破-------------
echo/

rem 遍历密码列表验证
for /f "delims=" %%a in (%passwd_list%) do (
echo 正在爆破中,密码正在快速校验:"%%a"
"C:\Program Files\7-Zip\7z.exe" t -p"%%a" "%input%" >nul 2>&1
if !errorlevel! equ 0 (
    echo/
    echo ---------最终结果-------------
    echo/
    echo 正确密码是: "%%a"
    @REM 找到即退出
    exit /b
)
)

echo 没找到。
```

hoochanlon 发表于 2023-4-18 18:07

debug_cat 发表于 2023-4-18 14:50
大佬应该分享一个密码本,这种暴力枚举都是看密码库和时间

我这有点卡,刚在半小时前在网上对比了下密码本,你可以参考下:

* 我的实验密码本: https://github.com/hoochanlon/ihs-simple/blob/main/d-txt/rarpasswd.txt
* https://enda.lanzoui.com/b00nfmolg    ( [出处:B站 Adnay-- - 一秒破解复杂密码压缩包? 通杀7z RAR ZIP 常见文档格式](https://www.bilibili.com/video/BV1k54y197A6/))

hoochanlon 发表于 2023-4-18 20:35

在线测试,效果图:

```
curl -Os https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/main/d-bat/seven_z_sensei.bat&&call seven_z_sensei.bat
```

![](https://s2.xptou.com/2023/04/18/643e8c1690205.png)

本地测试,效果图

![ ](https://s2.xptou.com/2023/04/18/643e869b26448.png)

附源码: https://github.com/hoochanlon/ihs-simple/blob/main/d-bat/seven_z_sensei.bat

```

@echo off
@REM 启用延迟变量
setlocal EnableDelayedExpansion
@REM 利用python获取时间,屏蔽报错信息
echo\
python -c "import datetime;now=datetime.datetime.now();print('起始时间是:', now)" 2>nul > rar_time_log.txt

@REM 判断是否存在密码本,没有则下载
IF NOT EXIST "C:\Users\%USERNAME%\Downloads\rarpasswd.txt" > nul (curl -o C:\Users\%USERNAME%\Downloads\rarpasswd.txt https://ghproxy.com/https://raw.githubusercontent.com/hoochanlon/ihs-simple/main/d-txt/rarpasswd.txt)

echo/
@REM 设置7z为常用变量
set used7z="%ProgramFiles%"\7-Zip\7z.exe
set "passwd_list=C:\Users\%USERNAME%\Downloads\rarpasswd.txt"
@REM set "has_passwd_rar=C:\Users\nice\Desktop\wifi密码本.rar"
set /p input=请将文件路径复制到终端:

echo/
echo ---------开始爆破-------------
echo/

rem 遍历密码列表验证
for /f "delims=" %%a in (%passwd_list%) do (
echo 正在爆破中,密码正在快速校验:"%%a"
"C:\Program Files\7-Zip\7z.exe" t -p"%%a" "%input%" >nul 2>&1
if !errorlevel! equ 0 (
    echo/
    echo ---------最终结果-------------
    echo/
    type rar_time_log.txt
    python -c "import datetime;other_time=datetime.datetime.now();print('现在时间为:', other_time)" 2>nul
    echo/
    @REM 找到即退出
    echo 正确密码是: "%%a"
    echo/
    exit /b
)
)

echo\
echo ---------------------------------------------
echo\
type rar_time_log.txt
python -c "import datetime;other_time=datetime.datetime.now();print('现在时间为:', other_time)" 2>nul
echo\
echo 没找到。
echo\


@REM ----------------------- 草稿 -----------------------------------------

@REM解压,带密码与不带密码,此外解压密码不正确是无法输出正常内容的。
@REM "%ProgramFiles%"\7-Zip\7z x C:\Users\nice\Desktop\问题管理.rar-o"C:\Users\nice\Desktop\"
@REM "%ProgramFiles%"\7-Zip\7z x C:\Users\nice\Desktop\问题管理.rar-o"C:\Users\nice\Desktop\" -p1234

@REM 7z只能实现7z、zip之类的打包加密
@REM "%ProgramFiles%"\7-Zip\7z a "C:\Users\nice\Desktop\问题管理.rar" C:\Users\nice\Desktop\问题管理.pdf -p1234

@REM 验证压缩包密码
@REM "%ProgramFiles%"\7-Zip\7z t -p1234 C:\Users\nice\Desktop\wifi密码本.rar


@REM 启用延迟变量
@REM setlocal EnableDelayedExpansion

@REM 设置7z为常用变量
@REM set used7z="%ProgramFiles%"\7-Zip\7z.exe

@REM 看返回值验证密码对错
@REM "%ProgramFiles%"\7-Zip\7z t -p12345 C:\Users\nice\Desktop\wifi密码本.rar
@REM if %errorlevel% EQU 0 (
@REM   echo 对。
@REM ) else (
@REM   echo 错。
@REM )

@REM 加载密码本
@REM https://github.com/hoochanlon/ihs-simple/raw/main/d-txt/rarpasswd.txt
@REM https://statically.io/convert/
@REM http 会成301状态码,注意是https
```

hoochanlon 发表于 2023-4-18 21:09

本帖最后由 hoochanlon 于 2023-4-18 21:23 编辑

#### 遇到的问题

* 选择7z,方便在公司用,有的公司会有正版检测软件、水印、禁网,措施很多的,这里就不展开了。
* 执行计时后,最后回显的问题 ;👉 `type xxx.txt`
* 301 重定向;👉 上回帖已说明
* 在线密码本调用;👉 GitHub repo raw ,   `curl`
* 针对没有python环境的朋友,忽略计时统计功能; 👉`2>nul`
* Windows 的 echo 如何打换行; 👉 `echo\`

#### 其他想说的

**为什么不用软件**

我个人习惯,压缩包基本不设密码,只有网站下载压缩包,经常遇到密码,找来找去很麻烦。

软件不方便我跨平台、麻烦,软件本地安装,密码字典也是本地的,那天一重装,又啥都没有了。额外保存到网盘,还是麻烦。

至于写个shell的问题,虽说自己的电脑是mac,但遇到压缩密码情况不多,后续随缘更新。


**时间统计**

没有选择 [批处理之家- [已解决]批处理怎样记录每次运行所需的时间?](http://www.bathome.net/thread-12081-1-1.html) 作为计时方案,是我觉得批处理这块不好实现。batch也没有shell         `time` 这样的语法执行后计时,那么用python显示执行前,执行后的时间就好了。

Rzzz820 发表于 2023-4-18 12:18

感谢分享

百年抉择 发表于 2023-4-18 12:28

我回头试试,正有一个忘记密码的压缩包呢

ThemanRonin 发表于 2023-4-18 12:29

这个就是暴力破解吗,速度咋样一秒能多少次

132rourou 发表于 2023-4-18 13:05

感谢分享,好多压缩包的密码早都忘了,不知道还有么有机会打开

yyb1813 发表于 2023-4-18 13:06

Rueng6009 发表于 2023-4-18 13:28

厉害,那么简单啊的代码就可以爆破密码!

lxw3254 发表于 2023-4-18 14:00

不懂就问,这个怎么使用

QingTianGG 发表于 2023-4-18 14:22

用 ARCHPR不是更好么
页: [1] 2 3 4
查看完整版本: 一步步手撸一个压缩包密码爆破的批处理脚本