0
smaharbA
19.11.10
✎
01:22
|
Всего мнений: 0
Как то на досуге...
(вполне подвержен оптимизации)
echo off
setlocal enabledelayedexpansion
for /f "tokens=3" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v DigitalProductId') do (
set x=%%~i
)
for /l %%z in (0,2,1000) do (
if "!x:~%%z,2!"=="" goto break
set /a n=0x!x:~%%z,2!
set array=!array! !n!
)
:break
call :getkey "%array%"
echo Ключ виндуз: %getkey%
pause
exit /b
:getkey (p) {
setlocal enabledelayedexpansion
set opt=%~1
set out=%~0
set pc=BCDFGHJKMPQRTVWXY2346789
set x=0
for /l %%i in (0,1,28) do (
if !x! gtr 28 goto break_2
set a=0
for /l %%j in (0,1,14) do (
set /a n=66 - %%j
set e=0
set p=!opt!
set opt=
for %%z in (!p!) do (
set z=%%z
if !e! equ !n! (
set /a a=%%z + !a! * 256
set /a z="( !a! / 24 ) & 255"
set /a a%%=24
)
set opt=!opt! !z!
set /a e+=1
)
)
for %%z in (!a!) do set key=!pc:~%%z,1!!key!
set /a f="( !x! + 2 ) %% 6"
if !f! equ 0 if !x! lss 28 (
set /a x+=1
set key=-!key!
)
<nul set /p u=.
set /a x+=1
)
:break_2
echo.
endlocal & set %out:~1%=%key%
exit /b
}
|
|