标题: [文件操作] [已解决]批处理如何将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码反向解密获得原始数据- @CD /D "%~dp0"
- @echo off
- setlocal EnableDelayedExpansion
- ::指定WinRAR安装路径和程序
- set "rarpath=C:\Program Files\WinRAR\Rar.exe"
- set a=1
- for /d %%a in (*) do (
- if not "%%~ni"=="%~n0" (
- if exist 说明.txt (
- @"%rarpath%" a "压缩文件!a!.rar" 说明.txt|@"%rarpath%" c "压缩文件!a!.rar"<说明.txt
- echo 说明.txt内容添加为RAR注释) else (echo 说明.txt不存在
- )
-
- ::判断C:\Windows\System32 目录是否存在MD5.exe
- if exist C:\Windows\System32\md5.exe (
-
- ::生成32位MD5码作为RAR密码
- for /f %%i in ('set /p"=%%a" ^< nul ^| md5') do (
- @"%rarpath%" a -k -p"%%i" -r -x*.bak -xThumbs.db -s -m1 "压缩文件!a!.rar" "%%a"
- for /f "tokens=1 delims=* " %%j in ('md5 "压缩文件!a!.rar"') do (set "md5=%%j")
- echo !md5! 密码:%%i>>密码.TXT
- )
- ) else (
- @"%rarpath%" a -k -p"%%~na" -r -x*.bak -xThumbs.db -s -m1 "压缩文件!a!.rar" "%%a"
- echo 压缩文件!a!.rar 密码:%%~na>>密码.TXT
- ))
- set/a a+=1
- )
- pause
复制代码
基本上可以了,不管有没有MD5.EXE在C:\Windows\System32\文件夹都可以用了,
防止二次点击,意外停电也只需要根据时间排列,删除最后一个压缩文件重新压缩就行了。
解压格式1:压缩解压时候需要MD5.EXE,
下载地址:http://www.bathome.net/thread-2142-1-1.html- @CD /D "%~dp0"
- @echo off
- setlocal EnableDelayedExpansion
- ::密码.TXT结构
- ::XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 密码:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-
- @for /f "delims=" %%a in ('dir /b *.rar') do (
- @for /f "tokens=1 delims= " %%b in ('md5 "%%a"') do (
- @for /f "tokens=2 delims==:" %%i in ('find "%%b" "密码.txt"') do (
- "C:\Program Files\WinRAR\Rar.exe" x -p"%%i" -y "%%a"
- ))
- )
- pause
复制代码
解压格式2:不需要MD5.EXE就能解压,不过压缩时候也不能有MD5.EXE,
如果需要对两种加密压缩方法解压都有效,将压缩工具的echo !md5!改为echo 压缩文件!a!.rar就可以,还有删除它上一行的内容。- /*&cls
- @echo off
- setlocal EnableDelayedExpansion
- ::密码.TXT结构
- ::xxx.rar 密码:xxx
- for /f "delims=" %%a in ('type 密码.txt^|cscript -nologo -e:jscript "%~f0"') do (
-
- "C:\Program Files\WinRAR\Rar.exe" %%a
- )
- pause&exit
- */
-
- var t='', map={}, files = WScript.StdIn.ReadAll().split('\r\n');
- for (var i=0; i<files.length; i++){
- var str = files[i].replace(/(.+(rar|zip)) 密码:(.+)$/,' x -p"$3" -y "$1"')
- if(!map[str]){map[str] = true;t+=str+'\r\n';}
- }
- WSH.echo(t);
复制代码
作者: Batcher 时间: 2018-10-19 14:44
报错信息是啥?
作者: Batcher 时间: 2018-10-19 14:51
- setlocal EnableDelayedExpansion
- for /d %%a in (*) do (
- for /f "delims=" %%b in ('echo %%a^|md5') do (
- set "md5=%%b"
- echo !md5!
- )
- )
复制代码
这样能取到正确的值吗?
作者: 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 编辑
- @echo off
- path %ProgramFiles%\WinRAR;%path%
- (for /d %%a in (*) do (
- for /f %%b in ('set /p"=%%a" ^< nul ^| md5') do (
- @rar a "%%a.rar" 说明.txt
- @rar c -z"说明.txt" "%%a.rar"
- @rar a -k -p%%b -r -x*.bak -xThumbs.db -s -m1 "%%~na.rar" "%%a"
- echo;%%a %%b
- )
- ))>密码.txt
- 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 |