Board logo

标题: [文件操作] [已解决]批处理如何将32位MD5码作为RAR密码并批量压缩为RAR文件? [打印本页]

作者: xp3000    时间: 2018-10-19 13:00     标题: [已解决]批处理如何将32位MD5码作为RAR密码并批量压缩为RAR文件?

本帖最后由 xp3000 于 2018-10-30 18:58 编辑

比如目录有JPG 01、JPG 02、JPG 03……文件夹,
需要将文件夹转换为MD5,然后作为压缩密码,然后将"说明.txt"不加密添加进去,再将其设为注释。
每个文件夹一个RAR,并将压缩文件和密码导出为"密码.txt"

本站有MD5工具,MD5怎么解码?根据MD5码反向解密获得原始数据
  1. @CD /D "%~dp0"
  2. @echo off
  3. setlocal EnableDelayedExpansion
  4. ::指定WinRAR安装路径和程序
  5. set "rarpath=C:\Program Files\WinRAR\Rar.exe"
  6. set a=1
  7. for /d %%a in (*) do (
  8. if not "%%~ni"=="%~n0" (
  9.     if exist 说明.txt (
  10.     @"%rarpath%" a "压缩文件!a!.rar" 说明.txt|@"%rarpath%" c "压缩文件!a!.rar"<说明.txt
  11.     echo 说明.txt内容添加为RAR注释) else (echo 说明.txt不存在
  12.         )
  13. ::判断C:\Windows\System32 目录是否存在MD5.exe
  14. if exist C:\Windows\System32\md5.exe (
  15. ::生成32位MD5码作为RAR密码
  16.     for /f %%i in ('set /p"=%%a" ^< nul ^| md5') do (
  17.     @"%rarpath%" a -k -p"%%i" -r -x*.bak -xThumbs.db -s -m1 "压缩文件!a!.rar" "%%a"
  18.     for /f "tokens=1 delims=* " %%j in ('md5 "压缩文件!a!.rar"') do (set "md5=%%j")
  19.     echo !md5! 密码:%%i>>密码.TXT
  20.     )
  21.         ) else (
  22.     @"%rarpath%" a -k -p"%%~na" -r -x*.bak -xThumbs.db -s -m1 "压缩文件!a!.rar" "%%a"
  23.     echo 压缩文件!a!.rar 密码:%%~na>>密码.TXT
  24.     ))
  25. set/a a+=1
  26. )
  27. pause
复制代码
基本上可以了,不管有没有MD5.EXE在C:\Windows\System32\文件夹都可以用了,
防止二次点击,意外停电也只需要根据时间排列,删除最后一个压缩文件重新压缩就行了。


解压格式1:压缩解压时候需要MD5.EXE,
下载地址:http://www.bathome.net/thread-2142-1-1.html
  1. @CD /D "%~dp0"
  2. @echo off
  3. setlocal EnableDelayedExpansion
  4. ::密码.TXT结构
  5. ::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 密码:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  6. @for /f "delims=" %%a in ('dir /b *.rar') do (
  7.     @for /f "tokens=1 delims= " %%b in ('md5 "%%a"') do (
  8.     @for /f "tokens=2 delims==:" %%i in ('find "%%b" "密码.txt"') do (
  9.     "C:\Program Files\WinRAR\Rar.exe"  x -p"%%i" -y "%%a"
  10.     ))
  11. )
  12. pause
复制代码
解压格式2:不需要MD5.EXE就能解压,不过压缩时候也不能有MD5.EXE,
如果需要对两种加密压缩方法解压都有效,将压缩工具的echo !md5!改为echo 压缩文件!a!.rar就可以,还有删除它上一行的内容。
  1. /*&cls
  2. @echo off
  3. setlocal EnableDelayedExpansion
  4. ::密码.TXT结构
  5. ::xxx.rar 密码:xxx
  6. for /f "delims=" %%a in ('type 密码.txt^|cscript -nologo -e:jscript "%~f0"') do (
  7. "C:\Program Files\WinRAR\Rar.exe" %%a
  8. )
  9. pause&exit
  10. */
  11. var t='', map={}, files = WScript.StdIn.ReadAll().split('\r\n');
  12. for (var i=0; i<files.length; i++){
  13.     var str = files[i].replace(/(.+(rar|zip)) 密码:(.+)$/,' x -p"$3" -y "$1"')
  14.     if(!map[str]){map[str] = true;t+=str+'\r\n';}
  15. }
  16. WSH.echo(t);
复制代码

作者: Batcher    时间: 2018-10-19 14:44

报错信息是啥?
作者: Batcher    时间: 2018-10-19 14:51

  1. setlocal EnableDelayedExpansion
  2. for /d %%a in (*) do (
  3.     for /f "delims=" %%b in ('echo %%a^|md5') do (
  4.         set "md5=%%b"
  5.         echo !md5!
  6.     )
  7. )
复制代码
这样能取到正确的值吗?
作者: xp3000    时间: 2018-10-19 15:04

第一次弄的发现原来MD5那里后面要加两个空格和-才能解密,密码长度35位,我这里找到个MD5工具MD5后面无附加数据
作者: Batcher    时间: 2018-10-19 15:39

回复 4# xp3000


    不可以,因为MD5在算法上是不可逆的。
作者: xp3000    时间: 2018-10-19 15:41

谢谢了,在论坛管理员帮助下解决了问题,目前没找到读取MD5码转换原始数据的方法
作者: WHY    时间: 2018-10-19 15:59

本帖最后由 WHY 于 2018-10-19 16:03 编辑
  1. @echo off
  2. path %ProgramFiles%\WinRAR;%path%
  3. (for /d %%a in (*) do (
  4.     for /f %%b in ('set /p"=%%a" ^< nul ^| md5') do (
  5.         @rar a "%%a.rar" 说明.txt
  6.         @rar c -z"说明.txt" "%%a.rar"
  7.         @rar a -k -p%%b -r -x*.bak -xThumbs.db -s -m1 "%%~na.rar" "%%a"
  8.         echo;%%a %%b
  9.     )
  10. ))>密码.txt
  11. pause
复制代码

作者: WHY    时间: 2018-10-19 16:02

md5算法是不可逆的,暴破倒是可以。
作者: xp3000    时间: 2018-10-19 17:00

谢谢各位帮忙,基本可以了,以现在i3 3450CPU+GTX1050ti电脑水平得几天才能解开32位密码?
作者: 523066680    时间: 2018-10-19 17:46

本帖最后由 523066680 于 2018-10-19 17:58 编辑

逆向解码是不容易的,就算你有Nvidia最新的燃气灶GTX2080,能操纵显卡写这种算法的人也不多。
但是(暗)网上有种叫彩虹表的东西,就是他有海量 “源文件” 和对应的MD5值,如果你的MD5值刚好上面也有,就可以把“源”取出来。

我搜索了一下,
某个CSDN博客给出的网址
http://www.cmd5.com/ 基本收费
https://crackstation.net/ 免费 解英文字符串
http://md5decrypt.net/en/ 免费
http://www.md5online.org/ 免费 解数字字符串

其中第三个网址,测试某个随机字符串的MD5:
Sorry, this hash is not in our database



如果源数据比较短,只有七八个字节,还是有希望跑CPU实现的。
作者: xp3000    时间: 2018-10-19 20:24

我电脑连个显卡也没不知道要跑什么时候,我一个6位密码忘记了,暴力破解大半天没解开
作者: flashercs    时间: 2018-10-19 20:40

本帖最后由 flashercs 于 2018-10-19 20:42 编辑

回复 11# xp3000


  MD5是什么东西啊?wifi密码设了63位,这也能爆破?
作者: xp3000    时间: 2018-10-19 20:56

MD5.exe啊,用于生成32位特征值,要暴力破解的话,每多1位密码要花N倍前面的时间总和,目前的处理器估计几百年或许可以破63位的
作者: xp3000    时间: 2018-10-20 08:13

说的少了,别人说几万年能解开密码




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2