标题: [原创]向暴力破解宣战!
[打印本页]
作者: bat-zw
时间: 2008-4-20 19:20
标题: [原创]向暴力破解宣战!
说明:本批处理部分借鉴于26933026兄弟的方法,当运行本批处理后原文件移动或复制的文件都不能使用,同时批处理本身有密码转换、密码认证(限制输入三次)、密码修改功能,如利用到别的批处理里面并转为exe的话,想要暴力破解应该是很困难的,因时间关系没有优化,还请诸位高手加以完善了。(注:原始密码为wdmmcn-dos)
@rem dmndso-cmw
@echo off
set /p pass=<%~nx0
set pass=%pass:~5%
call :Return %%pass%%
for /f "tokens=1" %%i in (%~nx0) do if "%%i"=="::" goto Judges
for /f "delims=" %%i in ('cd') do echo.:: %%i\%~nx0>>%~nx0
:Judges
for /f "tokens=1* delims= " %%i in (%~nx0) do set puth=%%j
for /f "delims=" %%i in ('cd') do if "%%i\%~nx0"=="%puth%" goto pass
echo 错误!不是原文件。&del /q 复件>nul 2>nul&ping /n 2 127.1>nul&goto :eof
:pass
set /a n+=1
set /a m=4-%n%
if %m% equ 0 cls&echo 对不起,因没正确输入密码,本程序将自动结束。&ping /n 3 127.1>nul&goto :eof
cls&set /p pwd=请正确输入密码,你还有%m%次机会:
if not "%pwd%"=="%password%" goto pass
set password=&set a=&set b=&set n=0&set new=1
cls&echo 密码正确,直接回车继续使用原密码,如要更改请输入新密码。
set /p new=输入新密码:
if "%new%"=="1" goto run
call :change %%new%%
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('type %~nx0') do (
set /a n+=1
if !n! equ 1 (
echo @rem %password%>%~nx0
) else (
endlocal&echo %%i>>%~nx0
)
)
:run
cls&echo 程序开始运行...
pause>nul&goto :eof
:Return
set a=%pass:~-1,1%
if not "%pass:~1%"=="" (
set b=%pass:~,1%
) else (
set b=
)
set password=%password%%a%%b%&set pass=%pass:~1,-1%
if defined pass goto Return
goto :eof
:change
set a=%new:~,1%%a%&set b=%b%%new:~1,1%&set new=%new:~2%
if defined new goto change
set password=%b%%a%
[
Last edited by zw19750516 on 2008-4-21 at 01:03 AM ]
作者: bat-zw
时间: 2008-4-20 19:49
标题: 郁闷 :
不知道为什么在这个批处理里ping延时会报错(换成pause都没问题),测试了下应该是前面限制复制和移动的代码带来的问题(删除这些代码后就正常了),但就是不知道为什么会这样,脑壳都快想破了,还请达人指点迷津啊!
[
Last edited by zw19750516 on 2008-4-20 at 07:55 PM ]
作者: 26933062
时间: 2008-4-20 20:40
代码比较臃肿,但你说的错误原因应该是这句
for /f "tokens=1* delims= " %%i in (%~nx0) do set path=%%j
不能用 path 作变量名,path是系统默认的变量,
作者: bat-zw
时间: 2008-4-20 20:49
Quote: |
Originally posted by 26933062 at 2008-4-20 20:40:
代码比较臃肿,但你说的错误原因应该是这句
for /f "tokens=1* delims= " %%i in (%~nx0) do set path=%%j
不能用 path 作变量名,path是系统默认的变量, |
|
真的是粗心了,谢谢指教,这个问题解决了,至于代码说了是没来得及优化,只是测试了可用就发上来了,有时间我一定会修改,还请兄弟们继续测试和指教了。
作者: ZJHJ
时间: 2008-4-20 23:18
哈哈,经测试,有点意思!
确实运行后,‘不能复制,不能移动’。特点:修改密码后写入自身,并错位保存,读取
依然。2 初始运行写入原始地以及文件名,所以才不能复制,不能移动。
支持楼 主创意!
不过,有点小小的建议,存放地方有点太明显,用不着“暴力”... 就能.....
作者: bat-zw
时间: 2008-4-20 23:51
Quote: |
Originally posted by ZJHJ at 2008-4-20 23:18:
哈哈,经测试,有点意思!
确实运行后,‘不能复制,不能移动’。特点:修改密码后写入自身,并错位保存,读取
依然。2 初始运行写入原始地以及文 ... |
|
我所说的是转为exe文件后可达到反暴力破解的目的,请大家破解下面这个密码吧,谁第一个公布密码的,我给谁加8分!!!
http://upload.cn-dos.net/img/311.rar
[
Last edited by zw19750516 on 2008-4-20 at 11:57 PM ]
作者: plp626
时间: 2008-4-20 23:58
链接失效,打不开
作者: 26933062
时间: 2008-4-21 00:33
为何不直接给bat代码?
exe文件我束手无策。。
作者: zh159
时间: 2008-4-21 01:04
密码:
wdmmjsfblpj
这样就可以显示密码了:
Quote: |
@rem dmsbpjlfjmw
@echo off
set /p pass=<%~nx0
set pass=%pass:~5%
call :Return %%pass%%
echo %password%
pause
for /f "tokens=1" %%i in (%~nx0) do if "%%i"=="::" goto Judges
for /f "delims=" %%i in ('cd') do echo.:: %%i\%~nx0>>%~nx0
:Judges
for /f "tokens=1* delims= " %%i in (%~nx0) do set puth=%%j
for /f "delims=" %%i in ('cd') do if not "%%i\%~nx0"=="%puth%" echo 错误!不是原文件,请使用原文件运行。&del /q 复件>nul 2>nul&ping /n 2 127.1>nul&goto :eof
:pass
set /a n+=1
set /a m=4-%n%
if %m% equ 0 cls&echo 对不起,由于三次输入都不正确,程序将自动结束。&ping /n 2 127.1>nul&goto :eof
cls&set /p pwd=请正确输入密码,你还有%m%次机会:
if not "%pwd%"=="%password%" cls&echo 密码不正确!&ping /n 2 127.1>nul&goto pass
set password=&set a=&set b=&set n=0&set new=1
cls&echo 密码正确,直接回车则继续使用原密码,如要更改请输入新密码。
set /p new=请在此输入新密码:
if "%new%"=="1" goto run
call :change %%new%%
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('type %~nx0') do (
set /a n+=1
if !n! equ 1 (
echo @rem %password%>%~nx0
) else (
endlocal&echo %%i>>%~nx0
)
)
:run
echo 程序开始运行...
pause>nul&goto :eof
:Return
set a=%pass:~-1,1%
if not "%pass:~1%"=="" (set b=%pass:~,1%) else (set b=)
set password=%password%%a%%b%&set pass=%pass:~1,-1%
if defined pass goto Return
goto :eof
:change
set a=%new:~,1%%a%&set b=%b%%new:~1,1%&set new=%new:~2%
if defined new goto change
set password=%b%%a% |
|
作者: bat-zw
时间: 2008-4-21 01:09
Quote: |
Originally posted by zh159 at 2008-4-21 01:04:
密码:
wdmmjsfblpj 这样就可以显示密码了:
|
|
高手啊,五体投地!!!!
作者: PPdos
时间: 2008-4-21 01:11
zh159 脱的可真快!佩服一个~!
作者: zh159
时间: 2008-4-21 01:12
只要稍加了解这个exe的特性并稍稍看明白BAT流程就知道了
作者: bat-zw
时间: 2008-4-21 01:18
Quote: |
Originally posted by zh159 at 2008-4-21 01:12:
只要稍加了解这个exe的特性并稍稍看明白BAT流程就知道了 |
|
请教:这个exe我是加了反编辑密码的,请问你是怎么得到这个密码的啊?
作者: zh159
时间: 2008-4-21 01:21
不管怎么处理,在输入密码比较之前都必须要得到%password%,在合适的位置插入echo %password%&pause就知道了
作者: bat-zw
时间: 2008-4-21 01:26
Quote: |
Originally posted by zh159 at 2008-4-21 01:21:
不管怎么处理,在输入密码比较之前都必须要得到%password%,在合适的位置插入echo %password%&pause就知道了 |
|
我是说exe文件你是怎么破出来的?我加了反编辑密码的啊,不是说bat,懂批处理的人都知道在哪个位置显示出密码来。
PS:动了那么多脑筋,居然这样不堪一击,郁闷啊!!!
[
Last edited by zw19750516 on 2008-4-21 at 01:28 AM ]
作者: PPdos
时间: 2008-4-21 01:27
请高手 再破解一下这个伪装版的 写出密码 +4分
http://upload.cn-dos.net/img/312.rar
作者: bat-zw
时间: 2008-4-21 01:35
我只觉得里面有个字符转换的字典,还是拭目以待高人出手了。
作者: zh159
时间: 2008-4-21 01:39
伪装为BAT的exe文件
@echo off
setlocal enabledelayedexpansion
for /l %%i in (2 -1 0) do (
ping 127.0|set /p="请输入密码:"
set /p pwd=
if "!pwd!"=="dfgt7ek46" (goto main) else echo 密码错误!还有%%i次机会!
pause&cls
)
echo 超过三次限制!系统自动退出
ping 127.0>nul
exit
:main
cls
echo 破解成功!
pause
搜索一下论坛里介绍BAT加密和BAT转exe的就知道答案了
或者在打开显示系统、隐藏文件时,到%temp%目录看看
[
Last edited by zh159 on 2008-4-21 at 01:42 AM ]
作者: bat-zw
时间: 2008-4-21 01:50
哈哈,看到了,又学了一招,原来根本就不要反编辑,晕!!!
[
Last edited by zw19750516 on 2008-4-21 at 01:55 AM ]
作者: PPdos
时间: 2008-4-21 03:01
标题: zh159 冠军!
这个加密方法是我无意编辑出来的,不知道论坛有讨论过?
分别使用了转换工具和编译软件(写字板估计也可以) 如果再
融合非编译性加密帖的方法是否可行,还有待探讨
作者: ZJHJ
时间: 2008-4-21 08:15
我个人理解为防复制,防移动.不应该限制在本机使用,应该是移动到乙机受到限制.
否则会跟用户带来不便.
作者: plp626
时间: 2008-4-21 11:09
[原创][讨论]非编译型批处理加密方案与代码
http://www.cn-dos.net/forum/viewthread.php?tid=22254&fpage=1
看了这个精华帖你就知道zh159怎么能那么快的破解了
我就晕了,连你们的文件都弄不到
作者: plp626
时间: 2008-4-21 11:20
从zh159我学到不少东西,
大家搜下他的帖子,保证你不会失望!
作者: ZJHJ
时间: 2008-4-21 13:26
批处理加密,始终有一个不可逾越的问题,一般障眼法,用RAR用不着破解,转exe,或替换
法等,始终要释放原码才能运行.其实不管释放到什么地方,也只要几秒钟就能把他搜索
出来.
作者: fastslz
时间: 2008-4-21 13:58
批处理、exe捆绑都没有牢不可破的方案
我倒觉得加密没什么必要,一个好代码被众人所引用才是优秀作品。
作者: knoppix7
时间: 2008-4-21 16:52
另外..注意转义.
比如说
@echo off
set password=1hsdgfhgsjhvjsatdioufyaiudsyfhjkashdjfyhasdiufyhaksjhdkfjasydfiuaysdf
set /p test=test??
if %test%==1hsdgfhgsjhvjsatdioufyaiudsyfhjkashdjfyhasdiufyhaksjhdkfjasydfiuaysdf GOTO :end
pause
假设加密到不可反编译的程序.
set /p的时候直接输入
1 GEQ 1 echo 123&call echo password:%password%&rem
[
Last edited by knoppix7 on 2008-4-21 at 04:56 PM ]
作者: knoppix7
时间: 2008-4-21 16:55
set /p new=输入新密码:
if "%new%"=="1" goto run
call :change %%new%%
:change
set a=%new:~,1%%a%&set b=%b%%new:~1,1%&set new=%new:~2%
if defined new goto change
set password=%b%%a%
set /p的时候动下脑子。把set部分废掉.再把new设置成空,%b%%a%设置成需要的密码.就可以......
或者直接type "%~0"..
[
Last edited by knoppix7 on 2008-4-21 at 05:15 PM ]