Zip Ripper
Zip Ripper
REM Begin dynamic alternate wordlist info - expected format is UTF-8 .txt file
inside a 7z archive -or- direct link to unarchived UTF-8 .txt file
SET WORDLISTNAME="Cyclone"
SET WORDLISTADDR="[Link]
REM End dynamic alternate wordlist info -> Click John's mouth on the GUI to access
this option <-
REM Resource Links - 7zr is used to extract 7za CLI from 7zExtra
SET
"DL_LOGO=[Link]
[Link]"
SET "DL_JTR=[Link]
winX64_1_JtR.7z"
SET "DL_7ZR=[Link]
SET "DL_7ZEXTRA=[Link]
SET "DL_PERLPORTABLE=[Link]
[Link]-[Link]"
REM Supported GPUs
SET NVIDIA_CARDS=GeForce,RTX,A800,T1000,Quadro
SET AMD_CARDS=RadeonRX,RadeonPro
SET INTEL_CARDS=ARC
REM Filenames and Folders - Tempfolders in %ProgramData%
SET "LOGO=%ProgramData%\[Link]"
SET "RESUMEDATAFOLDER=%AppData%\ZR-InProgress"
SET RESUMEDATAFILES=pwhash,[Link],[Link],john.*.rec,[Link],[Link]
SET TEMPFILES=zr-
[Link],7zExtra.7z,[Link],[Link],winX64_1_JtR.7z,[Link],launc
[Link]
SET TEMPFOLDERS=JtR,ztmp
REM Everything except resume data is cleaned up when ZipRipper is closed properly.
CALL :SINGLEINSTANCE
IF NOT "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
IF NOT "%PROCESSOR_ARCHITEW6432%"=="AMD64" (
ECHO FOR USE WITH x64 SYSTEMS ONLY
ECHO/
PAUSE
GOTO :EOF
) ELSE (
ECHO UNABLE TO LAUNCH IN x86 MODE
ECHO/
PAUSE
GOTO :EOF
)
)
IF NOT "%~2"=="" (
ECHO Multiple files are not supported. Double-click the script and use the
GUI to select a file...
ECHO/
PAUSE
GOTO :EOF
)
IF NOT EXIST "%~[Link]" (
SET OFFLINE=0
CALL :CHECKCONNECTION ONLINE
SETLOCAL ENABLEDELAYEDEXPANSION
IF !ONLINE! EQU 0 (
ENDLOCAL
CALL :CENTERWINDOW
ECHO Internet connection not detected...
ECHO/
ECHO ^[[Link]^] must be in the same folder as ZipRipper for
offline mode.
ECHO/
ECHO Click JtR on John's hat on an internet connected machine to create
a local
ECHO copy of ^[[Link]^]
ECHO/
PAUSE
GOTO :EOF
)
ENDLOCAL
) ELSE (
SET OFFLINE=1
)
>nul 2>&1 REG ADD HKCU\Software\classes\.ZipRipper\shell\runas\command /f /ve /d
"CMD /x /d /r SET \"f0=1\"&CALL \"%%2\" %%3"
IF /I NOT "%~dp0" == "%ProgramData%\" (
CALL :CLEANUP STARTUP
ECHO|(SET /p="%~dp0")>"%ProgramData%\[Link]"
>nul 2>&1 COPY /Y "%~f0" "%ProgramData%"
IF EXIST "%~[Link]" (
>nul 2>&1 COPY /Y "%~[Link]" "%ProgramData%"
)
>nul 2>&1 FLTMC && (
TITLE Re-Launching...
START "" /min "%ProgramData%\[Link]" "%ProgramData%\%~nx0"
EXIT /b
) || (
IF NOT "%f0%"=="1" (
TITLE Re-Launching...
START "" /min /high "%ProgramData%\[Link]"
"%ProgramData%\%~nx0"
EXIT /b
)
)
)
SET "NATIVE=ZIP,RAR"
SET "PERL=7z,PDF"
SET GPU=0
SET ALLOWSTART=0
CALL :CHECKWIN
CALL :CHECKGPU
IF EXIST "%ProgramData%\JtR" (
>nul 2>&1 RD "%ProgramData%\JtR" /S /Q
)
>nul 2>&1 ATTRIB -h "%ProgramData%\BIT*.tmp"
IF EXIST "%ProgramData%\BIT*.tmp" (
>nul 2>&1 DEL "%ProgramData%\BIT*.tmp" /F /Q
)
CALL :CENTERWINDOW
IF "%OFFLINE%"=="1" (
CALL :OFFLINEMODE
)
IF "%~1"=="" (
ECHO USE THE GUI TO PROCEED
:MAIN
SET "ACTION="
SET "WORDLIST="
CALL :MAINMENU ACTION WORDLIST
SETLOCAL ENABLEDELAYEDEXPANSION
IF "!ACTION!"=="Offline" (
ENDLOCAL
CALL :BUILD RELAUNCH
SET /p OFOLDER=<"%ProgramData%\[Link]"
SETLOCAL ENABLEDELAYEDEXPANSION
IF /I "!RELAUNCH!"=="Yes" (
TITLE Re-Launching...
START "" /min "%ProgramData%\[Link]" "!OFOLDER!%~nx0"
ENDLOCAL
EXIT /b
) ELSE (
ENDLOCAL
CALL :CLEANUP
GOTO :EOF
)
)
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!ACTION!"=="Start" (
ENDLOCAL
CALL :CLEANUP
)
IF !WORDLIST! EQU 1 (
CALL :CHECKCONNECTION ONLINE
IF !ONLINE! EQU 1 (
SET "LMSG=%WORDLISTNAME:"=% wordlist selected - The wordlist will
be included in the resume data"
CALL :LISTMESSAGE "!LMSG!" "Wordlist Information:"
) ELSE (
SET "LMSG=Internet connection unavailable - Automatic retrieval
of %WORDLISTNAME:"=% wordlist is not possible. Default and Custom wordlist options
are available."
CALL :LISTMESSAGE "!LMSG!" "Warning:"
CALL :RESETWORDLIST
GOTO :MAIN
)
)
IF !WORDLIST! EQU 2 (
SET "LMSG=Custom wordlist selected - The wordlist will be included in
the resume data - Please select a wordlist file"
CALL :LISTMESSAGE "!LMSG!" "Wordlist Information:"
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-
Type -AssemblyName [Link];$^=New-Object
[Link] -Property @{InitialDirectory='';Title='Select a
Custom wordlist - (A text file with UTF-8 encoding)';Filter='All Supported
(*.txt;*.lst)|*.txt;*.lst|TXT (*.txt)|*.txt|LST (*.lst)|*.lst'};
$null=$^.ShowDialog();$Quoted='"^""' + $^^.Filename + '"^""';$Quoted"`) DO (
SET LISTNAME=%%#
)
IF NOT !LISTNAME!=="" (
IF NOT EXIST !LISTNAME! (
CALL :RESETWORDLIST
GOTO :MAIN
)
CALL :GETSIZE !LISTNAME! LISTSIZE
IF !LISTSIZE! EQU 0 (
CALL :ENABLEBRUTE BRUTEENABLED
IF /I "!BRUTEENABLED!"=="Yes" (
SET LISTNAME=BRUTE
) ELSE (
CALL :RESETWORDLIST
GOTO :MAIN
)
)
) ELSE (
CALL :RESETWORDLIST
GOTO :MAIN
)
)
SET "LMSG=Please select a password protected ZIP, RAR, 7z, or PDF file"
CALL :LISTMESSAGE "!LMSG!" "Select a target file:"
SETLOCAL DISABLEDELAYEDEXPANSION
CALL :GETFILE FILENAME
SETLOCAL ENABLEDELAYEDEXPANSION
IF !FILENAME!=="" (
IF DEFINED LISTNAME CALL :RESETWORDLIST
ENDLOCAL
GOTO :MAIN
)
TITLE Re-Launching...
CALL :SETTERMINAL
START "" "%ProgramData%\[Link]" "%ProgramData%\%~nx0" "!
FILENAME:"=""!"
CALL :RESTORETERMINAL
ENDLOCAL
EXIT /b
)
FOR %%# IN (%NATIVE%) DO (
IF /I "%~x1"==".%%#" (
SET ALLOWSTART=1
SET ISPERL=0
)
)
FOR %%# IN (%PERL%) DO (
IF /I "%~x1"==".%%#" (
SET ALLOWSTART=1
SET ISPERL=1
)
)
IF NOT "%ALLOWSTART%"=="1" (
CALL :CLEANUP
GOTO :EOF
)
>nul 2>&1 REG DELETE HKCU\Software\classes\.ZipRipper\ /F
>nul 2>&1 DEL "%ProgramData%\[Link]" /F /Q
SET "FILETYPE=%~x1"
SET "TitleName=[ZIP-Ripper] - [Initializing] - [OpenCL #STATUS] - #RUNMODE
Mode"
SETLOCAL ENABLEDELAYEDEXPANSION
IF !GPU! GEQ 1 (
ENDLOCAL
SET "TitleName=%TitleName:#STATUS=AVAILABLE%"
) ELSE (
ENDLOCAL
SET "TitleName=%TitleName:Initializing=CPU Mode%"
SET "TitleName=%TitleName:#STATUS=UNAVAILABLE%"
)
SETLOCAL ENABLEDELAYEDEXPANSION
IF !OFFLINE! EQU 0 (
ENDLOCAL
SET "TitleName=%TitleName:#RUNMODE=Online%"
) ELSE (
ENDLOCAL
SET "TitleName=%TitleName:#RUNMODE=Offline%"
)
TITLE %TitleName%
IF %OFFLINE% EQU 0 (
SETLOCAL ENABLEDELAYEDEXPANSION
IF !WORDLIST! EQU 1 (
<NUL set /p=Please Wait...
CALL :WORDLISTFILEINFO
IF !wListOuter!=="" (
SET wListOuter=!LISTNAME!
)
CALL :SINGLEDOWNLOAD %WORDLISTADDR% !wListOuter! "Downloading
%WORDLISTNAME:"=% wordlist..."
CALL :ONLINEMODE
ECHO Ready
ECHO/
) ELSE (
<NUL set /p=Please Wait...
CALL :ONLINEMODE
ECHO Ready
ECHO/
)
) ELSE (
IF !WORDLIST! EQU 1 (
CALL :WORDLISTFILEINFO
IF !wListOuter!=="" (
SET wListOuter=!LISTNAME!
)
CALL :SINGLEDOWNLOAD %WORDLISTADDR% !wListOuter! "Downloading
%WORDLISTNAME:"=% wordlist..."
)
)
CALL :GETJTRREADY
SETLOCAL DISABLEDELAYEDEXPANSION
ECHO Done
ECHO/
PUSHD "%ProgramData%\JtR\run"
REN [Link] [Link]
POWERSHELL -nop -c "$^=gc [Link]|%%{$_.Replace('SingleMaxBufferAvailMem =
N','SingleMaxBufferAvailMem = Y').Replace('MaxKPCWarnings = 10','MaxKPCWarnings =
0')}|sc [Link]">nul 2>&1
SET "FLAG="
SET RESUME=0
CALL :GETMD5 "%~1" MD5
IF EXIST "%RESUMEDATAFOLDER%\%MD5%" (
CALL :RESUMEDECIDE ISRESUME
SETLOCAL ENABLEDELAYEDEXPANSION
IF /I "!ISRESUME!"=="Yes" (
SETLOCAL DISABLEDELAYEDEXPANSION
>nul 2>&1 MOVE /Y "%RESUMEDATAFOLDER%\%MD5%\*.*" "%ProgramData%\JtR\
run\"
CALL :CHECKRESUMENAME "%~1"
SET RESUME=1
GOTO :STARTJTR
) ELSE (
SETLOCAL DISABLEDELAYEDEXPANSION
>nul 2>&1 RD "%RESUMEDATAFOLDER%\%MD5%" /S /Q
)
)
IF %~z1 GEQ 200000000 (
<NUL set /p=Creating password hash - This can take a few minutes on large
files...
) ELSE (
<NUL set /p=Creating password hash...
)
SET PROTECTED=1
SET HSIZE=0
SET "FORKS="
CALL :HASH%FILETYPE% "%~1"
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!PROTECTED!"=="1" (
ENDLOCAL
CALL :NOTSUPPORTED "%~1" "%ERRORMSG%"
CALL :CLEANUP
GOTO :EOF
)
IF "!COMMON!"=="1" (
<NUL set /p=Enabling FAST PDF Mode ^[Length=8^]...
CALL :WAIT 1
ECHO Ready
CALL :WAIT 2
) ELSE (
IF DEFINED LISTNAME (
IF !WORDLIST! EQU 2 (
IF "!LISTNAME!"=="BRUTE" (
<NUL set /p=Enabling BruteForce Mode...
CALL :WAIT 1
ECHO Ready
) ELSE (
<NUL set /p=Preparing Custom wordlist!FORKS!...
>nul 2>&1 COPY /Y !LISTNAME! "%ProgramData%\JtR\run\
[Link]"
ECHO Loaded
)
) ELSE (
<NUL set /p=Preparing %WORDLISTNAME:"=% wordlist!FORKS!...
>nul 2>&1 MOVE /Y !LISTNAME! "%ProgramData%\JtR\run\[Link]"
ECHO Loaded
)
ENDLOCAL
CALL :WAIT 2
) ELSE (
<NUL set /p=Using Default wordlist!FORKS!...
ENDLOCAL
CALL :WAIT 1
ECHO Loaded
CALL :WAIT 2
)
)
:STARTJTR
CLS
ECHO Running JohnTheRipper...
ECHO/
IF "%RESUME%"=="1" (
<NUL set /p=Resuming Session...
CALL :SETSTATUSANDFLAGS
john --restore
) ELSE (
SETLOCAL ENABLEDELAYEDEXPANSION
IF "!COMMON!"=="1" (
john "%ProgramData%\JtR\run\pwhash" !FLAG!
) ELSE (
IF "!LISTNAME!"=="BRUTE" (
john "%ProgramData%\JtR\run\pwhash" --incremental=[Link] !
FLAG!
) ELSE (
john --wordlist="%ProgramData%\JtR\run\[Link]" --
rules=single,all "%ProgramData%\JtR\run\pwhash" !FLAG!
)
)
ENDLOCAL
)
CALL :GETSIZE "%ProgramData%\JtR\run\[Link]" POTSIZE
CALL :SAVELOCATION UserDesktop
SETLOCAL ENABLEDELAYEDEXPANSION
IF !POTSIZE! GEQ 1 (
ENDLOCAL
ECHO/
<NUL set /p=Generating Password File...
CALL :SAVEFILE "%~1"
IF EXIST "%RESUMEDATAFOLDER%\%MD5%" (
>nul 2>&1 RD "%RESUMEDATAFOLDER%\%MD5%" /S /Q
)
ECHO Done
ECHO/
ECHO Passwords saved to: "%UserDesktop%\[Link]"
CALL :DISPLAYFOUNDPW
) ELSE (
ENDLOCAL
ECHO/
CALL :SETRESUME "%~1"
)
ECHO/
PAUSE
POPD
CALL :CLEANUP
GOTO :EOF
:GETMD5
SET "MD5FILE=%~1"
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "$^=Resolve-Path
'%MD5FILE:'=''%';$md5=new-object -TypeName
[Link].MD5CryptoServiceProvider;$f=[[Link]]::Open($^,
[[Link]]::Open,
[[Link]]::Read);try{[[Link]]::ToString($[Link](
$f)).Replace('-','').ToLower()}finally{$[Link]()}"`) DO (
SET %2=%%#
)
EXIT /b
:RESUMEDECIDE
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show('Would you like to resume the job? (Click
NO to clear the resume data and start over)', 'Resume Data Found',4,32,0,131072)"`)
DO (
SET %1=%%#
)
EXIT /b
:SETRESUME
IF NOT EXIST "%ProgramData%\JtR\run\[Link]" (
ECHO Resume is UNAVAILABLE for this file ;^(
) ELSE (
ECHO Resume is available for the next session...
IF NOT EXIST "%RESUMEDATAFOLDER%\%MD5%" (
MD "%RESUMEDATAFOLDER%\%MD5%"
)
FOR %%# IN (%RESUMEDATAFILES%) DO (
IF /I EXIST "%ProgramData%\JtR\run\%%#" (
>nul 2>&1 MOVE /Y "%ProgramData%\JtR\run\%%#" "%RESUMEDATAFOLDER
%\%MD5%"
)
)
)
EXIT /b
:WAIT
SET /A TIMER=%~1+1
>nul 2>&1 PING [Link] -n %TIMER%
EXIT /b
:NOTSUPPORTED
CLS
IF "%PROTECTED%"=="2" (
ECHO UNHANDLED ERROR!
ECHO/
ECHO|(SET /p="%~2"&ECHO/)
) ELSE (
ECHO|(SET /p="%~1 %~2"&ECHO/)
)
ECHO/
PAUSE
EXIT /b
:ONLINEMODE
SET P=3
SET PT=11
IF "%ISPERL%"=="1" (
SET P=4
SET PT=8
SET "PERL2=$[Link]=' Downloading Portable Perl';Update-Gui;downloadFile
'%DL_PERLPORTABLE%' '%ProgramData%\[Link]';"
)
POWERSHELL -nop -c "Add-Type -AssemblyName PresentationFramework, [Link],
[Link], WindowsFormsIntegration;[xml]$xaml='<Window
xmlns="^""[Link]
xmlns:x="^""[Link] Title="^""
Initializing..."^"" Height="^""75"^"" Width="^""210"^""
WindowStartupLocation="^""CenterScreen"^"" WindowStyle="^""None"^""
Topmost="^""True"^"" Background="^""#333333"^""
AllowsTransparency="^""True"^""><Canvas><TextBlock Name="^""Info"^""
[Link]="^""3"^"" Text="^"" Initializing..."^"" Foreground="^""#eeeeee"^""
FontWeight="^""Bold"^""/><ProgressBar [Link]="^""5"^"" [Link]="^""28"^""
Width="^""200"^"" Height="^""3"^"" Name="^""Progress"^""
Foreground="^""#FF0000"^""/><TextBlock Name="^""Info2"^"" [Link]="^""38"^""
Text="^"" Getting Resources (Online Mode)"^"" Foreground="^""#eeeeee"^""
FontWeight="^""Bold"^""/><ProgressBar [Link]="^""5"^"" [Link]="^""63"^""
Width="^""200"^"" Height="^""3"^"" Name="^""Progress2"^""
Foreground="^""#FF0000"^""/></Canvas><[Link]><TaskbarItemInfo/></
[Link]></Window>';$reader=(New-Object [Link]
$xaml);$form=[[Link]]::Load($reader);$bitmap=New-Object
[Link];$bitmap='%LOGO:'=''%';$[Link]=$bitmap;
$[Link]=$bitmap;
$[Link]=$[Link];
$form.Add_Closing({[[Link]]::Exit();Stop-Process $pid});
$progressBar=$[Link]("^""Progress"^"");
$progressTotal=$[Link]("^""Progress2"^"");
$info=$[Link]("^""Info"^"");$info2=$[Link]("^""Info2"^"");function
Update-Gui()
{$[Link]([[Link]]::Background,
[action]{})};function GetResources(){$[Link]=' Initializing...';
$[Link]=%PT%;Update-Gui;$[Link]=' Downloading 7zr
Standalone';Update-Gui;downloadFile '%DL_7ZR%' '%ProgramData%\[Link]';$[Link]='
Downloading 7za Console';Update-Gui;downloadFile '%DL_7ZEXTRA%' '%ProgramData%\
7zExtra.7z';$[Link]=' Downloading JohnTheRipper';Update-Gui;downloadFile
'%DL_JTR%' '%ProgramData%\winX64_1_JtR.7z';%PERL2%
$[Link]=100;$[Link]="^"" Ready..."^"";Update-Gui};function
DownloadFile($url,$targetFile){$uri=New-Object "^""[Link]"^"" "^""$url"^"";
$request=[[Link]]::Create($uri);$request.set_Timeout(15000);
$response=$[Link]();
$totalLength=[[Link]]::Floor($response.get_ContentLength()/1024);
$responseStream=$[Link]();$targetStream=New-Object -TypeName
[Link] -ArgumentList $targetFile, Create;$buffer=new-object byte[]
10KB;$count=$[Link]($buffer,0,$[Link]);
$downloadedBytes=$count;while ($count -gt 0){$[Link]($buffer, 0,
$count);$count=$[Link]($buffer,0,$[Link]);
$downloadedBytes=$downloadedBytes + $count;$roundedPercent=[int]
((([[Link]]::Floor($downloadedBytes/1024)) / $totalLength) * 100);
$[Link]=$roundedPercent;if($totalP -ge %P%){$[Link]++;
$totalP=0};if($[Link] -ne $lastpercent){$lastpercent=$[Link];
$totalP++;Update-Gui}};$[Link]();$[Link]();
$[Link]();$[Link]()};
$form.Add_ContentRendered({GetResources;$[Link]()});$[Link]();
$appContext=New-Object [Link];[void]
[[Link]]::Run($appContext)">nul
EXIT /b
:OFFLINEMODE
SET NEEDED=[Link],7zExtra.7z,winX64_1_JtR.7z,[Link],[Link]
SET EXTRACT=0
<NUL set /p=Offline mode enabled
FOR %%# IN (%NEEDED%) DO (
IF /I NOT EXIST "%~dp0%%#" (
SET EXTRACT=1
)
)
IF NOT "%EXTRACT%"=="1" (
<NUL set /p=, checking resources...
) ELSE (
<NUL set /p=, preparing resources...
PUSHD "%~dp0"
POWERSHELL -nop -c "Add-Type -AssemblyName PresentationFramework,
[Link], [Link], WindowsFormsIntegration;[xml]$xaml='<Window
xmlns="^""[Link]
xmlns:x="^""[Link] Title="^""
Initializing..."^"" Height="^""37"^"" Width="^""210"^""
WindowStartupLocation="^""CenterScreen"^"" WindowStyle="^""None"^""
Topmost="^""True"^"" Background="^""#333333"^""
AllowsTransparency="^""True"^""><Canvas><TextBlock Name="^""Info"^""
[Link]="^""10"^"" [Link]="^""23"^"" Text="^"" Initializing... (Offline
Mode)"^"" Foreground="^""#eeeeee"^"" FontWeight="^""Bold"^""/></Canvas></Window>';
$reader=(New-Object [Link] $xaml);
$form=[[Link]]::Load($reader);
$form.Add_Closing({[[Link]]::Exit();Stop-Process
$pid});function ExtractFile(){&expand -R [Link] -F:* .};
$form.Add_ContentRendered({ExtractFile;$[Link]()});$[Link]();
$appContext=New-Object [Link];[void]
[[Link]]::Run($appContext)">nul
POPD
)
ECHO Done
ECHO/
EXIT /b
:GETJTRREADY
<NUL set /p=Extracting required dependencies...
>nul 2>&1 "%ProgramData%\[Link]" x -y "%ProgramData%\winX64_1_JtR.7z" -
o"%ProgramData%\"
>nul 2>&1 "%ProgramData%\[Link]" x -y "%ProgramData%\7zExtra.7z" -o"%ProgramData%\
JtR\"
IF EXIST !wListOuter! (
CALL :EXTENSION !wListOuter! WLEXT
IF /I "!WLEXT!"==".7z" (
"%ProgramData%\[Link]" x -y !wListOuter! -o"%ProgramData%\">nul
>nul 2>&1 DEL !wListOuter! /F /Q
)
)
IF "%ISPERL%"=="1" (
"%ProgramData%\JtR\[Link]" x -y "%ProgramData%\[Link]" -
o"%ProgramData%\JtR\run">nul
)
FOR %%# IN ([Link],[Link],winX64_1_JtR.7z,[Link],7zExtra.7z) DO
(
IF /I EXIST "%ProgramData%\%%#" (
>nul 2>&1 DEL "%ProgramData%\%%#" /F /Q
)
)
EXIT /b
:CHECKWIN
FOR /F "usebackq skip=2 tokens=3,4" %%# IN (`REG QUERY "HKLM\SOFTWARE\Microsoft\
Windows NT\CurrentVersion" /v ProductName 2^>nul`) DO (
IF "%%# %%$"=="Windows 7" (
ECHO/
ECHO Windows 7 detected.
ECHO/
ECHO SYSTEM NOT SUPPORTED
ECHO/
PAUSE
GOTO :EOF
)
)
EXIT /b
:CHECKRESUMENAME
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=1 delims=:/" %%# IN ("!pwhash!") DO (
ENDLOCAL
IF NOT "%~nx1"=="%%#" (
SET ALT=1
SET "OLDNAME=%%#"
) ELSE (
SET ALT=0
)
)
SET "NEWNAME=%~nx1"
IF "%ALT%"=="1" (
POWERSHELL -nop -c "Add-Type -AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show("^""This file has been renamed since the
initial session. The filename will be updated in the saved session data.`n`nInitial
file name: %OLDNAME%`n`nCurrent file name: %~nx1`n`nIt is recommended that you do
not change the file name after the initial session to avoid potential issues, but
it is not a requirement, and the session is able to resume anyway..."^"", 'WARNING:
File name change detected!',0,0,0,131072);
$update=[[Link]]::ReadAllText('%ProgramData%\JtR\run\
pwhash').Replace('%OLDNAME:'=''%','%NEWNAME:'=''%');
[[Link]]::WriteAllText('%ProgramData%\JtR\run\pwhash', $update)">nul
)
EXIT /b
:[Link]
zip2john "%~1">"%ProgramData%\JtR\run\pwhash" 2>"%ProgramData%\JtR\run\statusout"
SET /p pwhash=< pwhash
FOR /F %%# IN ("%ProgramData%\JtR\run\pwhash") DO (
SET HSIZE=%%~z#
)
IF %HSIZE% EQU 0 (
SET PROTECTED=0
FOR /F "usebackq tokens=*" %%# IN (`TYPE "%ProgramData%\JtR\run\statusout" ^|
findstr /I /C^:"Did not find"`) DO (
SET "ERRORMSG=encryption type is not supported.. (not a ZIPfile)"
)
FOR /F "usebackq tokens=*" %%# IN (`TYPE "%ProgramData%\JtR\run\statusout" ^|
findstr /I /C^:"non-handled"`) DO (
SET "ERRORMSG=encryption type is not supported.. unable to obtain
hash."
)
FOR /F "usebackq tokens=*" %%# IN (`TYPE "%ProgramData%\JtR\run\statusout" ^|
findstr /I /C^:"is not encrypted"`) DO (
SET "ERRORMSG=is not password protected.."
)
IF NOT DEFINED ERRORMSG (
SET PROTECTED=2
SET /p ERRORMSG=< "%ProgramData%\JtR\run\statusout"
)
)
CALL :SETSTATUSANDFLAGS
EXIT /b
:[Link]
rar2john "%~1">"%ProgramData%\JtR\run\pwhash" 2>"%ProgramData%\JtR\run\statusout"
SET /p pwhash=< pwhash
FOR /F %%# IN ("%ProgramData%\JtR\run\pwhash") DO (
SET HSIZE=%%~z#
)
IF %HSIZE% EQU 0 (
SET PROTECTED=0
FOR /F "usebackq tokens=*" %%# IN (`TYPE "%ProgramData%\JtR\run\statusout" ^|
findstr /I /C^:"Did not find"`) DO (
SET "ERRORMSG=is not password protected.."
)
FOR /F "usebackq tokens=*" %%# IN (`TYPE "%ProgramData%\JtR\run\statusout" ^|
findstr /I /C^:"not supported"`) DO (
SET "ERRORMSG=encryption type is not supported.. (old filetype)"
)
IF NOT DEFINED ERRORMSG (
SET PROTECTED=2
SET /p ERRORMSG=< "%ProgramData%\JtR\run\statusout"
)
) ELSE (
FOR /F "tokens=4 delims=*" %%# IN (pwhash) DO (
IF "%%#"=="00000000" (
SET PROTECTED=0
SET "ERRORMSG=encryption type is not supported.."
)
)
)
CALL :SETSTATUSANDFLAGS
EXIT /b
:HASH.7z
CALL "%ProgramData%\JtR\run\[Link]" "%ProgramData%\JtR\run\[Link]"
"%~1">"%ProgramData%\JtR\run\pwhash" 2>"%ProgramData%\JtR\run\statusout"
SET /p pwhash=< pwhash
FOR /F %%# IN ("%ProgramData%\JtR\run\pwhash") DO (
SET HSIZE=%%~z#
)
IF %HSIZE% EQU 0 (
FOR /F "usebackq tokens=*" %%# IN (`TYPE statusout ^| findstr /I /C^:"no
AES"`) DO (
SET PROTECTED=0
SET "ERRORMSG=is not password protected.."
)
IF NOT DEFINED ERRORMSG (
SET PROTECTED=2
SET /p ERRORMSG=< "%ProgramData%\JtR\run\statusout"
)
) ELSE (
FOR /F "usebackq tokens=*" %%# IN (`TYPE statusout ^| findstr /I /C^:"not
supported"`) DO (
SET PROTECTED=0
SET "ERRORMSG=encryption type is not supported.."
)
)
CALL :SETSTATUSANDFLAGS
EXIT /b
:[Link]
CALL "%ProgramData%\JtR\run\[Link]" "%ProgramData%\JtR\run\[Link]"
"%~1">"%ProgramData%\JtR\run\pwhash" 2>nul
POWERSHELL -nop -c "$^=[regex]::Match((gc pwhash),'^(.+\/)(?i)(.*\.pdf)(.+$)');
$^.Groups[2].value+$^.Groups[3].value|sc pwhash">nul 2>&1
SET /p pwhash=< pwhash
FOR /F %%# IN ("%ProgramData%\JtR\run\pwhash") DO (
SET HSIZE=%%~z#
)
IF %HSIZE% LSS 8000 (
FOR /F "usebackq tokens=*" %%# IN (`TYPE pwhash ^| findstr /I /C^:"not
encrypted!"`) DO (
SET PROTECTED=0
SET "ERRORMSG=is not password protected.."
)
)
CALL :SETSTATUSANDFLAGS
EXIT /b
:SETSTATUSANDFLAGS
ECHO Done
ECHO/
IF /I "%FILETYPE%"==".zip" (
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=2 delims=$" %%# IN ("!pwhash!") DO (
ENDLOCAL
IF /I "%%#"=="zip" (
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!ZIPCHECKED!"=="1" (
IF !GPU! GEQ 1 (
ENDLOCAL
SET "FLAG=--format=ZIP-opencl"
CALL :OPENCLENABLED
) ELSE (
ENDLOCAL
CALL :NOOPENCL
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
) ELSE (
ENDLOCAL
)
SET ZIPCHECKED=1
)
IF /I "%%#"=="zip2" (
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!ZIPCHECKED!"=="1" (
IF !GPU! GEQ 1 (
ENDLOCAL
SET "FLAG=--format=ZIP-opencl"
CALL :OPENCLENABLED
) ELSE (
ENDLOCAL
CALL :NOOPENCL
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
) ELSE (
ENDLOCAL
)
SET ZIPCHECKED=1
)
IF /I "%%#"=="zip3" (
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!ZIPCHECKED!"=="1" (
IF !GPU! GEQ 1 (
ENDLOCAL
SET "FLAG=--format=ZIP-opencl"
CALL :OPENCLENABLED
) ELSE (
ENDLOCAL
CALL :NOOPENCL
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
) ELSE (
ENDLOCAL
)
SET ZIPCHECKED=1
)
IF /I "%%#"=="pkzip" (
CALL :NOOPENCL pkzip
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
IF /I "%%#"=="pkzip2" (
CALL :NOOPENCL pkzip2
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
)
)
IF /I "%FILETYPE%"==".rar" (
SETLOCAL ENABLEDELAYEDEXPANSION
IF !GPU! GEQ 1 (
ENDLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "tokens=2 delims=$" %%# IN ("!pwhash!") DO (
ENDLOCAL
IF /I "%%#"=="rar" (
SET "FLAG=--format=rar-opencl"
CALL :OPENCLENABLED
)
IF /I "%%#"=="rar3" (
SET "FLAG=--format=rar-opencl"
CALL :OPENCLENABLED
)
IF /I "%%#"=="rar5" (
SET "FLAG=--format=RAR5-opencl"
CALL :OPENCLENABLED
)
)
) ELSE (
ENDLOCAL
CALL :NOOPENCL
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
)
IF /I "%FILETYPE%"==".7z" (
SETLOCAL ENABLEDELAYEDEXPANSION
IF !GPU! GEQ 1 (
ENDLOCAL
SET "FLAG=--format=7z-opencl"
CALL :OPENCLENABLED
) ELSE (
ENDLOCAL
CALL :NOOPENCL
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
)
IF /I "%FILETYPE%"==".pdf" (
CALL :COMMONPDF COMMON
SETLOCAL ENABLEDELAYEDEXPANSION
IF !GPU! GEQ 1 (
IF "!COMMON!"=="1" (
ENDLOCAL
SET "FLAG=--format=pdf-opencl --mask=?8?l?l?l?d -8=?l?u --mask-
internal-target=0 --min-length=8 --max-length=8"
) ELSE (
ENDLOCAL
SET "FLAG=--format=pdf-opencl"
)
CALL :OPENCLENABLED
) ELSE (
IF "!COMMON!"=="1" (
ENDLOCAL
SET "FLAG=--mask=?8?l?l?l?d -8=?l?u --min-length=8 --max-
length=8"
) ELSE (
ENDLOCAL
IF NOT "%RESUME%"=="1" (
CALL :CPUMODESPLIT
)
)
CALL :NOOPENCL
)
)
EXIT /b
:OPENCLENABLED
SET "TitleName=%TitleName:Initializing=GPU Mode%"
SET "TitleName=%TitleName:AVAILABLE=ENABLED%"
TITLE %TitleName%
EXIT /b
:NOOPENCL
SET "TitleName=%TitleName:Initializing=CPU Mode%"
IF "%~1"=="" (
SET "TitleName=%TitleName:AVAILABLE=UNAVAILABLE%"
) ELSE (
SET "TitleName=%TitleName:AVAILABLE=UNSUPPORTED Filetype%"
)
TITLE %TitleName%
EXIT /b
:GETSIZE
SET "%2=%~z1"
IF %~z1==[] (
SET "%2=0"
)
EXIT /b
:TRIMWHITESPACE
SETLOCAL ENABLEDELAYEDEXPANSION
SET TRIM=%*
FOR /f "tokens=1*" %%# in ("!TRIM!") DO (
ENDLOCAL
SET "%1=%%$"
)
EXIT /b
:WRITEPASSWORD
FOR /F "tokens=2 delims=:" %%# IN ([Link]) DO (
ECHO|(SET /p="%%# - [%~nx1]"&ECHO/)>>"%UserDesktop%\[Link]"
EXIT /b
)
EXIT /b
:CHECKLENGTH
(
SETLOCAL ENABLEDELAYEDEXPANSION
(SET^ L=!%~1!)
IF DEFINED L (
SET "LENGTH=1"
FOR %%P IN (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) DO (
IF "!L:~%%P,1!" NEQ "" (
SET /A "LENGTH+=%%P"
SET "L=!L:~%%P!"
)
)
) ELSE (
SET LENGTH=0
)
)
(
ENDLOCAL
SET "%~2=%LENGTH%"
EXIT /b
)
:EXTENSION
SET %2=%~x1
EXIT /b
:RENAMEOLD
IF EXIST "%UserDesktop%\ZipRipper-Passwords.%R%.txt" (
SET /A R+=1
GOTO :RENAMEOLD
) ELSE (
REN "%UserDesktop%\[Link]" "ZipRipper-Passwords.%R%.txt"
)
EXIT /b
:DISPLAYFOUNDPW
CALL :SETTERMINAL
START /min "Loading Results..." POWERSHELL -nop -c "Add-Type -AssemblyName
[Link];$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-
Object [Link];$[Link]=$env:WinDir + '\Media\Windows
Notify System [Link]';$[Link]()});
$rs=[RunspaceFactory]::CreateRunspace();$[Link]="^""STA"^"";
$[Link]="^""ReuseThread"^"";$[Link]();$[Link]=$rs;
$[Link]()};&$^;$Msg=@();foreach($line in Get-Content '%UserDesktop%\
[Link]'){if($null -eq $Msg){$Msg+=$line}else{$Msg+=$line +
"^""`n"^""}};$Msg+="^""Save Location:`n"^"";$Msg+="^"""^"""^""%UserDesktop%\
[Link]"^"""^"""^"";[[Link]]::Show($Msg,
'Message from ZIP-Ripper',0,0,0,131072)">nul
CALL :RESTORETERMINAL
EXIT /b
:CHECKCONNECTION
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c
"$ProgressPreference='SilentlyContinue';irm [Link]
$ProgressPreference='Continue'"`) DO (
IF "%%#"=="Microsoft NCSI" (
SET "%1=1"
) ELSE (
SET "%1=0"
)
)
EXIT /b
:SINGLEINSTANCE
TASKLIST /V /NH /FI "imagename eq [Link]"|FINDSTR /I /C^:"ZIP-Ripper">nul
IF NOT %errorlevel%==1 (
POWERSHELL -nop -c "Add-Type -AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show("^""ZipRipper is already running!"^"",
'ERROR:',0,16,0,131072)">nul&EXIT
)
TITLE [ZIP-Ripper] Launching...
EXIT /b
:CENTERWINDOW
>nul 2>&1 POWERSHELL -nop -c "$w=Add-Type -Name WAPI -PassThru -MemberDefinition
'[DllImport("^""[Link]"^"")]public static extern void SetProcessDPIAware();
[DllImport("^""[Link]"^"")]public static extern void SetProcessDpiAwareness(int
value);[DllImport("^""[Link]"^"")]public static extern IntPtr
GetConsoleWindow();[DllImport("^""[Link]"^"")]public static extern void
GetWindowRect(IntPtr hwnd,int[] rect);[DllImport("^""[Link]"^"")]public static
extern void GetClientRect(IntPtr hwnd, int[] rect);
[DllImport("^""[Link]"^"")]public static extern void GetMonitorInfoW(IntPtr
hMonitor, int[] lpmi);[DllImport("^""[Link]"^"")]public static extern IntPtr
MonitorFromWindow(IntPtr hwnd, int dwFlags);[DllImport("^""[Link]"^"")]public
static extern int SetWindowPos(IntPtr hwnd,IntPtr hwndAfterZ,int x,int y,int w,int
h,int flags);';
$PROCESS_PER_MONITOR_DPI_AWARE=2;try{$w::SetProcessDpiAwareness($PROCESS_PER_MONITO
R_DPI_AWARE)}catch{$w::SetProcessDPIAware()}$hwnd=$w::GetConsoleWindow();
$moninf=[int[]]::new(10);
$moninf[0]=40;$MONITOR_DEFAULTTONEAREST=2;$w::GetMonitorInfoW($w::MonitorFromWindow
($hwnd, $MONITOR_DEFAULTTONEAREST), $moninf);$monwidth=$moninf[7]-$moninf[5];
$monheight=$moninf[8]-$moninf[6];$wrect=[int[]]::new(4);$w::GetWindowRect($hwnd,
$wrect);$winwidth=$wrect[2]-$wrect[0];$winheight=$wrect[3]-$wrect[1];$x=[int]
[math]::Round($moninf[5]+$monwidth/2-$winwidth/2);$y=[int][math]::Round($moninf[6]+
$monheight/2-$winheight/2);$SWP_NOSIZE=0x0001;$SWP_NOZORDER=0x0004;exit [int]
($w::SetWindowPos($hwnd,[IntPtr]::Zero,$x,$y,0,0,$SWP_NOSIZE -bOr $SWP_NOZORDER) -
eq 0)"
EXIT /b
:GETFILE
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];$^=New-Object [Link]
-Property @{InitialDirectory='';Title='Select a password protected ZIP, RAR, 7z or
PDF...';Filter='All Supported (*.zip;*.rar;*.7z;*.pdf)|*.zip;*.rar;*.7z;*.pdf|ZIP
(*.zip)|*.zip|RAR (*.rar)|*.rar|7-Zip (*.7z)|*.7z|PDF (*.pdf)|*.pdf'};
$null=$^.ShowDialog();$Quoted='"^""' + $^^.Filename + '"^""';$Quoted"`) DO (
SET "%1=%%#"
)
EXIT /b
:WORDLISTFILEINFO
FOR /F "usebackq tokens=1,2" %%# IN (`POWERSHELL
"$^=[regex]::Match('%WORDLISTADDR:"=%', '.*\/((.*)\..*)$');$^.Groups[1].Value+' '+
$^.Groups[2].Value"`) DO (
CALL :EXTENSION %%# EXT
IF /I NOT "!EXT!"==".7z" (
IF /I "!EXT!"==".txt" (
SET wListOuter=""
SET wListInner="%%#"
)
) ELSE (
SET wListOuter="%%#"
SET CHECK="%%$"
IF /I "!CHECK:~-5,-1!"==".txt" (
SET wListInner="%%$"
) ELSE (
SET wListInner="%%$.txt"
)
)
)
SET LISTNAME="%ProgramData%\!wListInner:"=!"
IF NOT !wListOuter!=="" (
SET wListOuter="%ProgramData%\!wListOuter:"=!"
)
EXIT /b
:RESETWORDLIST
SET "LISTNAME="
CALL :LISTMESSAGE "Wordlist settings reset to default" "Wordlist Info:"
EXIT /b
:LISTMESSAGE
POWERSHELL -nop -c "Add-Type -AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show("^""%~1"^"", '%~2',0,64,0,131072)">nul
EXIT /b
:ENABLEBRUTE
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show('Would you like to enable bruteforce mode?
(Click NO to restore default settings and return to the menu)', 'The selected
wordlist file is empty',4,32,0,131072)"`) DO (
SET %1=%%#
)>nul
EXIT /b
:SINGLEDOWNLOAD
POWERSHELL -nop -c "Add-Type -AssemblyName PresentationFramework, [Link],
[Link], WindowsFormsIntegration;[xml]$xaml='<Window
xmlns="^""[Link]
xmlns:x="^""[Link] Title="^"" %~3"^""
Height="^""37"^"" Width="^""210"^"" WindowStartupLocation="^""CenterScreen"^""
WindowStyle="^""None"^"" Topmost="^""True"^"" Background="^""#333333"^""
AllowsTransparency="^""True"^""><Canvas><TextBlock Name="^""Info"^""
[Link]="^""3"^"" Text="^"" %~3"^"" Foreground="^""#eeeeee"^""
FontWeight="^""Bold"^""/><ProgressBar [Link]="^""5"^"" [Link]="^""28"^""
Width="^""200"^"" Height="^""3"^"" Name="^""Progress"^""
Foreground="^""#FF0000"^""/></Canvas></Window>';$reader=(New-Object
[Link] $xaml);$form=[[Link]]::Load($reader);
$form.Add_Closing({[[Link]]::Exit();Stop-Process $pid});
$progressBar=$[Link]("^""Progress"^"");function Update-Gui ()
{$[Link]([[Link]]::Background,
[action]{})};function DownloadFile($url,$targetFile){$uri=New-Object
"^""[Link]"^"" "^""$url"^"";$request=[[Link]]::Create($uri);
$request.set_Timeout(15000);$response=$[Link]();
$totalLength=[[Link]]::Floor($response.get_ContentLength()/1024);
$responseStream=$[Link]();$targetStream=New-Object -TypeName
[Link] -ArgumentList $targetFile, Create;$buffer=new-object byte[]
10KB;$count=$[Link]($buffer,0,$[Link]);
$downloadedBytes=$count;while ($count -gt 0){$[Link]($buffer,0,$count);
$count=$[Link]($buffer,0,$[Link]);
$downloadedBytes=$downloadedBytes+$count;$roundedPercent=[int]
((([[Link]]::Floor($downloadedBytes/1024))/$totalLength)*100);
$[Link]=$roundedPercent;if($[Link] -ne $lastpercent)
{$lastpercent=$[Link];Update-Gui}};$[Link]();
$[Link]();$[Link]();$[Link]()};
$form.Add_ContentRendered({downloadFile '%~1' '%~2';Sleep 1;$[Link]()});
$[Link]();$appContext=New-Object [Link];[void]
[[Link]]::Run($appContext)"
EXIT /b
:MAINMENU
IF /I NOT EXIST "%LOGO%" (
CALL :SINGLEDOWNLOAD "%DL_LOGO%" "%LOGO%" "Initializing..."
)
FOR /F "usebackq delims=, tokens=1,2*" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName PresentationFramework, [Link], [Link],
WindowsFormsIntegration;function wlist(){Switch($showL)
{0{$[Link]="^""Visible"^"";$[Link]="^""Visible"^"";
$[Link]="^""Visible"^"";
$global:showL="^""1"^""}1{$[Link]="^""Collapsed"^"";
$[Link]="^""Collapsed"^"";$[Link]="^""Collapsed"^"";
$global:showL="^""0"^""}}};[xml]$xaml='<Window
xmlns="^""[Link]
xmlns:x="^""[Link]
WindowStartupLocation="^""CenterScreen"^"" WindowStyle="^""None"^""
Background="^""Transparent"^"" AllowsTransparency="^""True"^"" Width="^""285"^""
Height="^""324"^""><[Link]><ControlTemplate x:Key="^""nM"^""
TargetType="^""Button"^""><Border Background="^""{TemplateBinding Background}"^""
BorderBrush="^""{TemplateBinding BorderBrush}"^""
BorderThickness="^""{TemplateBinding BorderThickness}"^""><ContentPresenter
HorizontalAlignment="^""{TemplateBinding HorizontalContentAlignment}"^""
VerticalAlignment="^""{TemplateBinding
VerticalContentAlignment}"^""/></Border><[Link]><Trigger
Property="^""IsEnabled"^"" Value="^""False"^""><Setter Property="^""Background"^""
Value="^""{x:Static [Link]}"^""/><Setter
Property="^""Foreground"^"" Value="^""{x:Static
[Link]}"^""/></Trigger></[Link]></
ControlTemplate></[Link]><Grid><[Link]><RowDefinition
Height="^""298"^""/><RowDefinition
Height="^""*"^""/></[Link]><[Link]><ImageBrush
ImageSource="^""%LOGO%"^""/></[Link]><[Link]><EventTrigger
RoutedEvent="^""Loaded"^""><BeginStoryboard><Storyboard><DoubleAnimation
[Link]="^""[Link]"^"" From="^""0"^"" To="^""1"^""
Duration="^""0:0:1"^""/></Storyboard></BeginStoryboard></EventTrigger></
[Link]><Canvas [Link]="^""0"^""><Button x:Name="^""Offline"^""
[Link]="^""141"^"" [Link]="^""56"^"" Height="^""16"^"" Width="^""26"^""
ToolTip="^""Create [[Link]]"^"" Template="^""{StaticResource
nM}"^""/><Button x:Name="^""Cleanup"^"" [Link]="^""138"^""
[Link]="^""154"^"" Height="^""20"^"" Width="^""20"^"" ToolTip="^""Clear Resume
Cache"^"" Template="^""{StaticResource nM}"^""/><Button Name="^""List"^""
[Link]="^""143"^"" [Link]="^""116"^"" Height="^""10"^"" Width="^""15"^""
ToolTip="^""Select Wordlist"^"" Template="^""{StaticResource nM}"^""
Opacity="^""0"^""></Button><Button Name="^""Default"^"" [Link]="^""123"^""
[Link]="^""130"^"" FontSize="^""11"^"" Foreground="^""#eeeeee"^""
Background="^""#333333"^"" Height="^""18"^"" Width="^""55"^""
Visibility="^""Collapsed"^"" HorizontalContentAlignment="^""Left"^""
Template="^""{StaticResource nM}"^"" Opacity="^""0.9"^"">Default</Button><Button
Name="^""WL"^"" [Link]="^""123"^"" [Link]="^""147"^"" FontSize="^""11"^""
Foreground="^""#eeeeee"^"" Background="^""#333333"^"" Height="^""18"^""
Width="^""55"^"" Visibility="^""Collapsed"^""
HorizontalContentAlignment="^""Left"^"" Template="^""{StaticResource nM}"^""
Opacity="^""0.9"^"">%WORDLISTNAME:"=%</Button><Button Name="^""Custom"^""
[Link]="^""123"^"" [Link]="^""164"^"" FontSize="^""11"^""
Foreground="^""#eeeeee"^"" Background="^""#333333"^"" Height="^""18"^""
Width="^""55"^"" Visibility="^""Collapsed"^""
HorizontalContentAlignment="^""Left"^"" Template="^""{StaticResource nM}"^""
Opacity="^""0.9"^"">Custom</Button></Canvas><Canvas [Link]="^""1"^""><Button
x:Name="^""Start"^"" Height="^""22"^"" Width="^""65"^"" Content="^""Start"^""
ToolTip="^""Click to Begin..."^"" Template="^""{StaticResource
nM}"^""><[Link]><EventTrigger
RoutedEvent="^""Loaded"^""><BeginStoryboard><Storyboard><DoubleAnimation
From="^""40"^"" To="^""65"^"" Duration="^""0:0:1"^""
[Link]="^""([Link])"^""
AutoReverse="^""False"^""/><DoubleAnimation
[Link]="^""Opacity"^"" From="^""0"^"" To="^""1"^""
Duration="^""0:0:2"^""/></Storyboard></BeginStoryboard></EventTrigger></
[Link]></Button></Canvas><Canvas [Link]="^""1"^""><Button
x:Name="^""Quit"^"" Height="^""22"^"" Width="^""65"^"" Content="^""Quit"^""
ToolTip="^""Click to Exit"^"" Template="^""{StaticResource
nM}"^""><[Link]><EventTrigger
RoutedEvent="^""Loaded"^""><BeginStoryboard><Storyboard><DoubleAnimation
From="^""40"^"" To="^""65"^"" Duration="^""0:0:1"^""
[Link]="^""([Link])"^""
AutoReverse="^""False"^""/><DoubleAnimation
[Link]="^""Opacity"^"" From="^""0"^"" To="^""1"^""
Duration="^""0:0:2"^""/></Storyboard></BeginStoryboard></EventTrigger></
[Link]></Button></Canvas></Grid><[Link]><TaskbarItemInfo/
></[Link]></Window>';$reader=(New-Object [Link]
$xaml);$window=[[Link]]::Load($reader);
$[Link]='ZipRipper';$bitmap=New-Object
[Link];$bitmap='%LOGO:'=''%';
$[Link]=$bitmap;$[Link]=$bitmap;
$[Link]=$[Link];
$window.Add_Closing({[[Link]]::Exit();Stop-Process
$pid});$L=$[Link]("^""List"^"");$D=$[Link]("^""Default"^"");
$R=$[Link]("^""WL"^"");$C=$[Link]("^""Custom"^"");
$L.Add_Click({wlist});$D.Add_MouseEnter({$[Link]="^""#eeeeee"^"";
$[Link]="^""#333333"^""});$D.Add_MouseLeave({$[Link]="^""#333333"^"";
$[Link]="^""#eeeeee"^""});$D.Add_Click({$global:list='0';wlist});
$R.Add_MouseEnter({$[Link]="^""#eeeeee"^"";$[Link]="^""#333333"^""});
$R.Add_MouseLeave({$[Link]="^""#333333"^"";$[Link]="^""#eeeeee"^""});
$R.Add_Click({$global:list='1';wlist});
$C.Add_MouseEnter({$[Link]="^""#eeeeee"^"";$[Link]="^""#333333"^""});
$C.Add_MouseLeave({$[Link]="^""#333333"^"";$[Link]="^""#eeeeee"^""});
$C.Add_Click({$global:list='2';wlist});$b=$[Link]("^""Start"^"");
$[Link] = "^""#333333"^"";$[Link]="^""#eeeeee"^"";
$[Link]="^""12"^"";$[Link]="^""Bold"^"";
$b.Add_MouseEnter({$[Link]="^""#eeeeee"^"";$[Link]="^""#333333"^""});
$b.Add_MouseLeave({$[Link]="^""#333333"^"";$[Link]="^""#eeeeee"^""});
$b.Add_Click({write-host "^""Start,$list"^"";Exit});
$b2=$[Link]("^""Quit"^"");$[Link]="^""#333333"^"";
$[Link]="^""#eeeeee"^"";$[Link]="^""12"^"";$[Link]="^""Bold"^"";
$b2.Add_MouseEnter({$[Link]="^""#eeeeee"^"";
$[Link]="^""#333333"^""});
$b2.Add_MouseLeave({$[Link]="^""#333333"^"";
$[Link]="^""#eeeeee"^""});$b2.Add_Click({write-host 'Quit';Exit});
$b3=$[Link]("^""Offline"^"");$[Link]="^""0"^"";
$b3.Add_Click({$b3m=New-Object -ComObject [Link];$b3a=$[Link]('Create
[[Link]] for Offline Mode?',0,'Offline Mode Builder',0x1);if($b3a -eq 1)
{write-host 'Offline';Exit}});$b4=$[Link]("^""Cleanup"^"");
$[Link]="^""0"^"";$b4.Add_Click({$b4m=New-Object -ComObject [Link];
$b4a=$[Link]('Cleanup ALL resume data?',0,'Clear InProgress Jobs',0x1);if($b4a -
eq 1){if(Test-Path -Path '%AppData:'=''%\ZR-InProgress'){Remove-Item
'%AppData:'=''%\ZR-InProgress' -Recurse -force -ErrorAction SilentlyContinue;
$b4m2=New-Object -ComObject [Link];$[Link]('ALL Jobs Cleared',0,'Clear
InProgress Jobs',0x0)} else {$b4m3=New-Object -ComObject [Link];
$[Link]('There are no jobs to clear',0,'Clear InProgress Jobs',0x0)}}});
$list='0';$showL='0';$window.add_MouseLeftButtonDown({if($showL -eq 1){wlist};
$[Link]()});$[Link]();$appContext=New-Object
[Link];[void]
[[Link]]::Run($appContext)"`) DO (
SET "%1=%%#"
IF NOT "%%$"=="" (
SET "%2=%%$"
)
)
EXIT /b
:CLEANUP
FOR %%# IN (%TEMPFILES%) DO (
IF /I EXIST "%ProgramData%\%%#" (
>nul 2>&1 DEL "%ProgramData%\%%#" /F /Q
)
)
FOR %%# IN (%TEMPFOLDERS%) DO (
IF /I EXIST "%ProgramData%\%%#\*" (
>nul 2>&1 RD "%ProgramData%\%%#" /S /Q
)
)
IF "%~1"=="" (
>nul 2>&1 REG DELETE HKCU\Software\classes\.ZipRipper\ /F
(GOTO) 2>nul&DEL "%~f0"/F /Q>nul&EXIT
)
EXIT /b
:BUILD
IF EXIST "%ProgramData%\ztmp\*" (
>nul 2>&1 RD "%ProgramData%\ztmp" /S /Q
)
>nul 2>&1 MD "%ProgramData%\ztmp"
>nul 2>&1 COPY /Y "%ProgramData%\[Link]" "%ProgramData%\ztmp\104"
PUSHD "%ProgramData%\ztmp"
(
ECHO .new Cabinet
ECHO .Set Cabinet=ON
ECHO .Set CabinetFileCountThreshold=0
ECHO .Set ChecksumWidth=1
ECHO .Set ClusterSize=CDROM
ECHO .Set LongSourceFileNames=ON
ECHO .Set CompressionType=LZX
ECHO .Set CompressionLevel=7
ECHO .Set CompressionMemory=21
ECHO .Set DiskDirectoryTemplate=
ECHO .Set FolderFileCountThreshold=0
ECHO .Set FolderSizeThreshold=0
ECHO .Set GenerateInf=ON
ECHO .Set InfFileName=nul
ECHO .Set MaxCabinetSize=0
ECHO .Set MaxDiskFileCount=0
ECHO .Set MaxDiskSize=0
ECHO .Set MaxErrors=0
ECHO .Set ReservePerCabinetSize=0
ECHO .Set ReservePerDataBlockSize=0
ECHO .Set ReservePerFolderSize=0
ECHO .Set RptFileName=nul
ECHO .Set UniqueFiles=ON
ECHO .Set SourceDir=.
ECHO 100 "7zExtra.7z"
ECHO 101 "[Link]"
ECHO 102 "[Link]"
ECHO 103 "winX64_1_JtR.7z"
ECHO 104 "[Link]"
)>"%ProgramData%\ztmp\[Link]"
POWERSHELL -nop -c "Add-Type -AssemblyName PresentationFramework, [Link],
[Link], WindowsFormsIntegration;[xml]$xaml='<Window
xmlns="^""[Link]
xmlns:x="^""[Link] Title="^""Building
[[Link]]"^"" Height="^""75"^"" Width="^""210"^""
WindowStartupLocation="^""CenterScreen"^"" WindowStyle="^""None"^""
Topmost="^""True"^"" Background="^""#333333"^""
AllowsTransparency="^""True"^""><Canvas><TextBlock Name="^""Info"^""
[Link]="^""3"^"" Text="^"" Initializing..."^"" Foreground="^""#eeeeee"^""
FontWeight="^""Bold"^""/><ProgressBar [Link]="^""5"^"" [Link]="^""28"^""
Width="^""200"^"" Height="^""3"^"" Name="^""Progress"^""
Foreground="^""#FF0000"^""/><TextBlock Name="^""Info2"^"" [Link]="^""38"^""
Text="^"" Getting Resources (Stage 1/2)"^"" Foreground="^""#eeeeee"^""
FontWeight="^""Bold"^""/><ProgressBar [Link]="^""5"^"" [Link]="^""63"^""
Width="^""200"^"" Height="^""3"^"" Name="^""Progress2"^""
Foreground="^""#FF0000"^""/></Canvas><[Link]><TaskbarItemInfo/></
[Link]></Window>';$reader=(New-Object [Link]
$xaml);$form=[[Link]]::Load($reader);$bitmap=New-Object
[Link];$bitmap='%ProgramData%\[Link]';
$[Link]=$bitmap;$[Link]=$bitmap;
$[Link]=$[Link];
$form.Add_Closing({[[Link]]::Exit();Stop-Process $pid});
$progressBar=$[Link]("^""Progress"^"");
$progressTotal=$[Link]("^""Progress2"^"");
$info=$[Link]("^""Info"^"");$info2=$[Link]("^""Info2"^"");function
Update-Gui ()
{$[Link]([[Link]]::Background,
[action]{})};function Build () {$[Link]=' Downloading 7zr Standalone';Update-
Gui;downloadFile '%DL_7ZR%' '%ProgramData%\ztmp\101';$[Link]=' Downloading 7za
Console';Update-Gui;downloadFile '%DL_7ZEXTRA%' '%ProgramData%\ztmp\100';
$[Link]=' Downloading JohnTheRipper';Update-Gui;downloadFile '%DL_JTR%'
'%ProgramData%\ztmp\103';$[Link]=' Downloading Portable Perl';Update-
Gui;downloadFile '%DL_PERLPORTABLE%' '%ProgramData%\ztmp\102';
$[Link]=0;$[Link]=' Merging resources'; $[Link]=' Building zr-
[Link] (Stage 2/2)';$pass=1;Update-Gui;[Link] /F '%ProgramData%\ztmp\
[Link]' /D Compress='OFF' /D CabinetNameTemplate='%ProgramData%\ztmp\zr-
[Link]'| out-string -stream | Select-String -Pattern "^""(\d{1,3})(?=[.]\
d{1,2}%%)"^"" -AllMatches | ForEach-Object { $_.[Link] } | foreach
{$[Link]=$_;if($totalP2 -ge 6){$[Link]=$[Link]
+ 1;$totalP2=0};if($[Link] -ne $lastpercent)
{$lastpercent=$[Link];$totalP2++};if($[Link] -ge 100){$pass+
+};if($pass -eq 2){$[Link]="^"" Building data file"^"";if($[Link] -eq
99){$pass++}};if($pass -eq 3){$[Link]="^"" Purging
Cache"^""};if($[Link] -ne $lastpercent2)
{$lastpercent2=$[Link];Update-Gui}};
$[Link]=100;$m=([[Link]]::ReadAllLines('%ProgramData%\
[Link]')).Replace('"^""','');Move-Item -Path '%ProgramData%\ztmp\zr-
[Link]' -Destination "^""$m"^"" -Force;
$[Link]=100;$[Link]="^"" Build Completed!"^"";Update-Gui;Sleep
3};function DownloadFile($url,$targetFile){$uri=New-Object "^""[Link]"^""
"^""$url"^"";$request=[[Link]]::Create($uri);
$request.set_Timeout(15000);$response=$[Link]();
$totalLength=[[Link]]::Floor($response.get_ContentLength()/1024);
$responseStream=$[Link]();$targetStream=New-Object -TypeName
[Link] -ArgumentList $targetFile, Create;$buffer=new-object byte[]
10KB;$count=$[Link]($buffer,0,$[Link]);
$downloadedBytes=$count;while ($count -gt 0){$[Link]($buffer, 0,
$count);$count=$[Link]($buffer,0,$[Link]);
$downloadedBytes=$downloadedBytes + $count;$roundedPercent=[int]
((([[Link]]::Floor($downloadedBytes/1024))/$totalLength)*100);
$[Link]=$roundedPercent;if($totalP -ge 7){$[Link]++;
$totalP=0};if($[Link] -ne $lastpercent){$lastpercent=$[Link];
$totalP++;Update-Gui}};$[Link]();$[Link]();
$[Link]();$[Link]()};
$form.Add_ContentRendered({Build;$[Link]()});$[Link]();$appContext=New-
Object [Link];[void]
[[Link]]::Run($appContext)">nul
POPD
>nul 2>&1 RD "%ProgramData%\ztmp" /S /Q
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show('Re-launch ZipRipper in Offline Mode?',
'Build Complete.',4,32,0,131072)"`) DO (
SET %1=%%#
)
EXIT /b
:COMMONPDF
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];$Msg+='Would you like ZipRipper to attempt the
most commonly used';$Msg+="^""`n"^"";$Msg+='PDF ecryption key masking? [Length=8]';
$Msg+="^""`n"^"";$Msg+="^""`n"^"";$Msg+='To run ZipRipper with user
selected/default options click NO';$Msg+="^""`n"^"";$Msg+="^""`n"^"";$Msg+='(This
only takes a few minutes for GPU users, but CPU can take ~4+hrs)';
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show($Msg, 'Enable FAST PDF
Mode?',4,32,0,131072)"`) DO (
IF /I "%%#"=="Yes" (
SET %1=1
)
)
EXIT /b
:CPUMODESPLIT
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];$Msg+='Would you like to split the wordlist?';
$Msg+="^""`n"^"";$Msg+="^""`n"^"";$Msg+='WARNING - There may be up to a 60 second
delay from when a password is found, before the remaining lists are halted.';
$Msg+="^""`n"^"";$Msg+="^""`n"^"";$Msg+='To split the wordlist click YES';
$Msg+="^""`n"^"";$Msg+="^""`n"^"";$Msg+='To run ZipRipper in default mode click NO
(If this is your first attempt you should click NO)';
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show($Msg, 'CPU Mode Detected',4,32,0,131072)"`)
DO (
IF /I "%%#"=="Yes" (
FOR /F "usebackq skip=3 tokens=*" %%# in (`POWERSHELL -nop -c "Get-
CIMInstance -ClassName 'Win32_Processor' | ft 'NumberOfCores'"`) DO (
SET "FORKS= [Split: Forks=%%#]"
SET "FLAG=--fork=%%#"
)
)
)
EXIT /b
:CHECKGPU
FOR /F "usebackq skip=3 tokens=2,3" %%# IN (`POWERSHELL -nop -c "Get-CIMInstance -
query 'select * from Win32_VideoController' | ft Name"`) DO (
FOR %%$ IN (%NVIDIA_CARDS%) DO (
IF /I "%%#"=="%%$" (
IF EXIST "%WinDir%\System32\[Link]" (
SET GPU=1
)
)
)
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!GPU!"=="1" (
ENDLOCAL
IF /I "%%#"=="Radeon" (
CALL :OFFERCPUMODE
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT "!SKIPRADEON!"=="1" (
ENDLOCAL
FOR %%_ IN (%AMD_CARDS%) DO (
IF /I "%%#%%$"=="%%_" (
IF /I EXIST "%WinDir%\System32\
amd_opencl64.dll" (
ECHO|(SET /p="c:\Windows\System32\
amd_opencl64.dll")>"%ProgramData%\JtR\etc\OpenCL\vendors\[Link]"
SET GPU=2
)
IF /I EXIST "%WinDir%\System32\[Link]" (
SET GPU=2
)
)
)
) ELSE (
ENDLOCAL
)
)
) ELSE (
ENDLOCAL
)
FOR %%$ IN (%INTEL_CARDS%) DO (
IF /I "%%#"=="%%$" (
IF EXIST "%WinDir%\System32\[Link]" (
SET GPU=3
)
)
)
)
EXIT /b
:SETTERMINAL
SET "LEGACY={B23D10C0-E52E-411E-9D5B-C09FDF709C7D}"
SET "LETWIN={00000000-0000-0000-0000-000000000000}"
SET "TERMINAL={2EACA947-7F5F-4CFA-BA87-8F7FBEEFBE69}"
SET "TERMINAL2={E12CFF52-A866-4C77-9A90-F570A7AA2C6B}"
POWERSHELL -nop -c "Get-WmiObject -Class Win32_OperatingSystem | Select -
ExpandProperty Caption | Find 'Windows 11'">nul
IF ERRORLEVEL 0 (
SET isEleven=1
>nul 2>&1 REG QUERY "HKCU\Console\%%%%Startup" /v DelegationConsole
IF ERRORLEVEL 1 (
REG ADD "HKCU\Console\%%%%Startup" /v DelegationConsole /t REG_SZ /d
"%LETWIN%" /f>nul
REG ADD "HKCU\Console\%%%%Startup" /v DelegationTerminal /t REG_SZ /d
"%LETWIN%" /f>nul
)
FOR /F "usebackq tokens=3" %%# IN (`REG QUERY "HKCU\Console\%%%%Startup" /v
DelegationConsole 2^>nul`) DO (
IF NOT "%%#"=="%LEGACY%" (
SET "DEFAULTCONSOLE=%%#"
REG ADD "HKCU\Console\%%%%Startup" /v DelegationConsole /t REG_SZ
/d "%LEGACY%" /f>nul
REG ADD "HKCU\Console\%%%%Startup" /v DelegationTerminal /t
REG_SZ /d "%LEGACY%" /f>nul
)
)
)
FOR /F "usebackq tokens=3" %%# IN (`REG QUERY "HKCU\Console" /v ForceV2 2^>nul`) DO
(
IF NOT "%%#"=="0x1" (
SET LEGACYTERM=0
REG ADD "HKCU\Console" /v ForceV2 /t REG_DWORD /d 1 /f>nul
) ELSE (
SET LEGACYTERM=1
)
)
EXIT /b
:RESTORETERMINAL
IF "%isEleven%"=="1" (
IF DEFINED DEFAULTCONSOLE (
IF "%DEFAULTCONSOLE%"=="%TERMINAL%" (
REG ADD "HKCU\Console\%%%%Startup" /v DelegationConsole /t REG_SZ
/d "%TERMINAL%" /f>nul
REG ADD "HKCU\Console\%%%%Startup" /v DelegationTerminal /t
REG_SZ /d "%TERMINAL2%" /f>nul
) ELSE (
REG ADD "HKCU\Console\%%%%Startup" /v DelegationConsole /t REG_SZ
/d "%DEFAULTCONSOLE%" /f>nul
REG ADD "HKCU\Console\%%%%Startup" /v DelegationTerminal /t
REG_SZ /d "%DEFAULTCONSOLE%" /f>nul
)
)
)
IF "%LEGACYTERM%"=="0" (
REG ADD "HKCU\Console" /v ForceV2 /t REG_DWORD /d 0 /f>nul
)
EXIT /b
:SAVELOCATION
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c
"[Environment]::GetFolderPath('Desktop')"`) DO (
SET "%1=%%#"
)
EXIT /b
:SAVEFILE
IF EXIST "%UserDesktop%\[Link]" (
SET R=0
CALL :RENAMEOLD
)
(
ECHO ^[ZIP-Ripper^] - PASSWORD FOUND!
ECHO %DATE% + %TIME%
ECHO ==============================
ECHO/
)>"%UserDesktop%\[Link]"
CALL :WRITEPASSWORD %1
(
ECHO/
ECHO ==============================
)>>"%UserDesktop%\[Link]"
EXIT /b
:OFFERCPUMODE
FOR /F "usebackq tokens=* delims=" %%# IN (`POWERSHELL -nop -c "Add-Type -
AssemblyName [Link];
$^={$Notify=[PowerShell]::Create().AddScript({$Audio=New-Object
[Link];$[Link]=$env:WinDir + '\Media\Windows Notify
System [Link]';$[Link]()});$rs=[RunspaceFactory]::CreateRunspace();
$[Link]="^""STA"^"";$[Link]="^""ReuseThread"^"";$[Link]();
$[Link]=$rs;$[Link]()};&$^;
[[Link]]::Show('Radeon support is EXPERIMENTAL.. Click YES
to bypass the GPU and start in CPU mode instead. Click NO if this is your first
attempt.','Bypass GPU?',4,32,0,131072)"`) DO (
IF /I "%%#"=="Yes" (
SET SKIPRADEON=1
)
)
EXIT /b