@echo off
:: wangwei qq 251485609
set/p file= 输入要解密的十六进制文件:
for %%i in (%file%) do (
set "jkz=%%~ni"
set "jz=%%~nxi"
set "jz1=%%~nxi"
set /a "size=%%~zi")
for /f "tokens=3 delims= " %%i in ('find /v /c "" %file%') do set m=%%i
@echo.
@echo 当前文件共 %m% 行, 长度: 0%size:~0,-3%.%size:~-3,3% kb
@echo.
echo.
echo 正在准备十六进制解码
echo.
echo 按空格分开为行即横列转化为纵列(计算原始文件字节)。
cd.>wb.txt
::批处理单行处理极限长度8192字节
for /f "delims=" %%i in (%file%) do (
for %%a in (%%i) do echo %%a>>wb.txt
)
setlocal EnableDelayedExpansion
echo.
echo 检测行数并产生同等字节文件(这里行数就是原始文件字节)
set line=0
for /f "delims=" %%i in (wb.txt) do set /a line+=1
fsutil file createnew $$$ %line% >nul
echo %line%>line.txt
echo.
echo 正在用debug(用纯批处理较慢)快速产生标准地址码
set/a qwe=%line%+255
call :duon %qwe%
(echo d100,%cdm%^&echo q)|debug $$$>ymdb.txt
graftabl 936>nul
cd.>db.txt
for /f "eol=- skip=1 tokens=*" %%i in (ymdb.txt) do (
set bj=%%i
echo e !bj:~5,5!>>db.txt)
del $$$
del ymdb.txt
set a=wb.txt
@echo.
@echo 正在分割文件按48字节排列
set "r=48"
(for /f "usebackq delims=" %%i in (%a%) do (
set "s=!s1!%%i "
set /a "m=%size%+%r%,x=0,k=0"
for /l %%a in (1,1,14) do (
set /a "k=(m+x)/2"
for %%i in (!k!) do if "!s:~%%i!" equ "" (set /a m=k) else set /a x=k
)
for /l %%a in (0,%r%,!k!) do (
if !k! geq !r! echo !s:~%%a,%r%!
set/a "k-=r"&set "s1=!s:~%%a!"
)
)
if "!s1!" neq "" echo !s1!
)>m1.txt
del wb.txt
echo.
@echo 标准地址码与编码正在合并
cd.>a.txt
set n=-1
for /f "delims=" %%a in (db.txt) do (
set/a n+=1
call :mp1 "%%a" )
del db.txt
goto :ef
:mp1
if !n! equ 0 for /f "delims=" %%i in (m1.txt) do echo %%a%%i>>a.txt&goto:eof
if not !n! equ 0 for /f "skip=%n% delims=" %%i in (m1.txt) do echo %%a%%i>>a.txt&goto:eof
:duon
set /a y= qwe%%16
set /a ya=qwe/16%%16
set /a yb=qwe/256%%16
set /a yc=qwe/4096%%16
set m=0123456789ABCDEF
set cdm=!m:~%yc%,1!!m:~%yb%,1!!m:~%ya%,1!!m:~%y%,1!
goto:eof
:ef
echo @echo off>m.txt
echo more +5 "%%~0"^|debug^&graftabl 936^>nul>>m.txt
echo copy/b/y $tmp$ new-"%jkz%"^>nul>>m.txt
echo del/a/f/q $tmp$>>m.txt
echo del %%0>>m.txt
more a.txt>>m.txt
del a.txt
del m1.txt
for /f "delims=" %%a in (line.txt) do set line=%%a
set/a qwe=%line%
call :duon %qwe%
echo rcx>>m.txt
echo %cdm%>>m.txt
echo n$tmp$>>m.txt
echo w>>m.txt
echo q>>m.txt
copy /b m.txt new-"%jz%".cmd
del m.txt
del line.txt
Last edited by ZJHJ on 2010-8-19 at 16:29 ]