Skip to content

Instantly share code, notes, and snippets.

@Rafhack
Created December 29, 2015 13:26
Show Gist options
  • Save Rafhack/9673cc076361dd711799 to your computer and use it in GitHub Desktop.
Save Rafhack/9673cc076361dd711799 to your computer and use it in GitHub Desktop.
:: 6/3/14 21:09 - 5/4/14 03:18
:: iProtect 4.1
:: Criador: rafael.flip@hotmail.com
:: Versão anterior (4.0) -----> http://pastebin.com/QBjhnQvf
:: Basta seguir as instruções dos menus do programa
:: Incluida barra de progresso ao criptografar
@echo off
setlocal enabledelayedexpansion
mode con cols=69 lines=20
:Inicio
cls&call:welcome&echo/
call:menu "Login" "Cadastrar" "Site" "Sair"
if not defined choice call:mostraErro "Op‡Æo inv lida!"&goto Inicio
if "!choice!" == "1" (
goto Login
)
if "!choice!" == "2" (
goto cadastro
)
if "!choice!" == "3" (
goto Site
)
if "!choice!" == "4" (
goto sair
)
::=====================================================SEÇÕES===========================================
::=====================================================SEÇÕES===========================================
::=====================================================SEÇÕES===========================================
:cadastro
cls
setlocal
set /p "usuario=Seu nome de usu rio: "
if "%usuario%" == "" (endlocal&goto cadastro)
call:ler HKCU\Software\HNDSofts\iProtect\4\Users\%usuario% nome
if "%result%" neq "" (call:mostraErro "Usu rio %usuario% j existe"set result=&endlocal&goto inicio)
call:mostrarComCor "Sua senhaÿ" "0c"
call:criptografarSenha
if defined senhaCript (
call:gravar HKCU\Software\HNDSofts\iProtect\4\Users\%usuario% string nome %usuario%
call:gravar HKCU\Software\HNDSofts\iProtect\4\Users\%usuario% string senha "!senhaCript!"
call:mostraSucesso "Usu rio %usuario% criado com sucesso"&timeout 3 1>nul
) else (
call:mostraErro "Digite sua senha"&timeout 3 1>nul
)
endlocal
goto inicio
:Login
cls
setlocal
set /p "usuario=Seu nome de usu rio: "
if "%usuario%" == "" (endlocal&goto cadastro)
call:ler HKCU\Software\HNDSofts\iProtect\4\Users\%usuario% nome
if "%result%" equ "" (call:mostraErro "Usu rio %usuario% nÆo existe"&timeout 3 1>nul&endlocal&goto inicio)
call:ler HKCU\Software\HNDSofts\iProtect\4\Users\%usuario% senha
call:mostrarComCor "Sua senhaÿ" "0c"
call:criptografarSenha
if defined senhaCript (if "%result%" == "%senhaCript%" (
call:telaInicial
) else (
echo/&call:mostraErro "Senha incorreta"
)) else (
echo/&call:mostraErro "Senha incorreta"
)
endlocal
goto inicio
:site
(
echo/[InternetShortcut]
echo/URL=http://www.hndsofts.com
) > site.url
site.url&del site.url
goto inicio
:sair
endlocal
exit/b
::====================================================TELA USER=========================================
:telaInicial
cls
call:menu "Proteger arquivos" "Desproteger arquivos" "Criptografar arquivos" "Descriptografar arquivos" "Configurar conta" "Logout"
if not defined choice call:mostraErro "Op‡Æo inv lida!"&goto telaInicial
if "!choice!" == "1" (
goto _proteger
)
if "!choice!" == "2" (
goto _desproteger
)
if "!choice!" == "3" (
goto _criptografarArquivos
)
if "!choice!" == "4" (
goto _descriptografarArquivos
)
if "!choice!" == "5" (
goto configurarConta
)
if "!choice!" == "6" (
goto logOut
)
:_proteger
goto proteger
:_desproteger
goto desproteger
:_criptografarArquivos
goto criptografar
:_descriptografarArquivos
goto descriptografar
:_configurarConta
goto configurarConta
:logOut
endlocal
goto:eof
::==================================================TELA PROTEGER========================================
:proteger
set "result="&cls&echo/
call:mostrarComCor "Arraste e solte aqui seu arquivo ou ou pasta e tecle enter" "a0"
echo/&call:mostrarComCor "Ou digite seu o caminho completo" "a0"
echo/&echo/&set/p "file="
if exist "%file%" (
for /f "delims=*" %%a in ("%file%") do (set "file_f=%%~fa")
call:criptografarChave "!file_f!*%usuario%"
echo/
call:ler Software\HNDSofts\iProtect\4\System files "multi:hkcu"
if exist "multLine.txt" (
call:verificarProtegido
) else (set arquivoProtegido=0)
if !arquivoProtegido! equ 1 (
call:mostraErro "Arquivo ja protegido!"
del multLine.txt
endlocal
goto telaInicial
)
if !arquivoProtegido! equ 2 (
set "merge=!keyencode!"
for /F %%r in (multLine.txt) do (
set "merge=!merge!$%%r"
)
del multLine.txt
)
if !arquivoProtegido! equ 0 (
set "merge=!keyEncode!"
)
cacls "!file_f!" /e /c /p Todos:N 1>nul 2>nul||cacls "!file_f!" /e /c /p Everyone:N 1>nul 2>nul
call:gravar HKCU\Software\HNDSofts\iProtect\4\System multi files "!merge!" "/s $"
call:mostraSucesso "Arquivo protegido com sucesso"
endlocal
goto telaInicial
) else (
call:mostraErro "Arquivo inexistente!"
endlocal
goto telaInicial
)
endlocal
goto inicio
:verificarProtegido
set arquivoProtegido=
for /f %%r in (multLine.txt) do (
echo/%%r>_decode0.txt
certutil -decode _decode0.txt _decode1.txt 1>nul 2>nul
certutil -decode _decode1.txt _decode2.txt 1>nul 2>nul
Set /p _decode2=<_decode2.txt
del _decode0.txt & del _decode1.txt & del _decode2.txt
for /F "delims=* tokens=1" %%c in ('echo/!_decode2!') do (
if "!file_f!" equ "%%c" set arquivoProtegido=1
)
)
if not defined arquivoProtegido set arquivoProtegido=2
exit/b
::================================================TELA DESPROTEGER======================================
:desproteger
set "result="&cls&echo/
call:mostrarComCor "Arraste e solte aqui seu arquivo ou ou pasta e tecle enter" "b0"
echo/&call:mostrarComCor "Ou digite seu o caminho completo" "b0"
echo/&echo/&set/p "file="
if exist "!file!" (
for /f "delims=*" %%a in ("!file!") do (set "file_f=%%~fa")
) else (
call:mostraErro "Arquivo inexistente"
endlocal
goto telaInicial
)
call:ler Software\HNDSofts\iProtect\4\System files "multi:hkcu"
if exist "multLine.txt" (
set protegido=0
for /F %%a in (multLine.txt) do (
echo/%%a>_decode0.txt
certutil -decode _decode0.txt _decode1.txt 1>nul 2>nul
certutil -decode _decode1.txt _decode2.txt 1>nul 2>nul
Set /p _decode2=<_decode2.txt
del _decode0.txt & del _decode1.txt & del _decode2.txt
for /F "delims=* tokens=1" %%c in ('echo/!_decode2!') do (
if "!file_f!" equ "%%c" (
set protegido=1
set "atual=%%a"
set "_atual=!_decode2!"
)
)
)
if !protegido! equ 1 (
for /F "delims=* tokens=2" %%c in ('echo/!_atual!') do (
if "!usuario!" equ "%%c" (
for /F %%z in (multLine.txt) do (
if "!atual!" neq "%%z" echo/%%z>>newMulti.txt
)
reg delete HKCU\Software\HNDSofts\iProtect\4\System /v files /f 1>nul 2>nul
if exist newMulti.txt (
set merge=
for /F %%Z in (newMulti.txt) do (
set "merge=!merge!$%%Z
)
set "merge=!merge:~1!
call:gravar HKCU\Software\HNDSofts\iProtect\4\System multi files "!merge!" "/s $"
)
del multLine.txt & del newMulti.txt 2>nul
cacls "!file_f!" /e /c /p Todos:F 1>nul 2>nul||cacls "!file_f!" /e /c /p Everyone:F 1>nul 2>nul
call:mostraSucesso "Arquivo desprotegido"
endlocal
goto telaInicial
) else (
del multLine.txt
call:mostraErro "Voce nao pode desproteger este arquivo"
endlocal
goto telaInicial
)
)
) else (
del multLine.txt
call:mostraErro "Arquivo nao esta sendo protegido"
endlocal
goto telaInicial
)
) else (
call:mostraErro "Nao ha arquivos protegidos"
endlocal
goto telaInicial
)
::================================================TELA CRIPTOGRAFAR======================================
:criptografar
set "result="&cls&echo/
set "SenhaCript="
call:mostrarComCor "Arraste e solte aqui seu arquivo ou ou pasta e tecle enter" "e0"
echo/&call:mostrarComCor "Ou digite seu o caminho completo" "e0"
echo/&echo/&set/p "file="
if exist "%file%" (
for /f %%a in ("!file!") do (set "attr=%%~aa")
if /i "!attr:~0,1!" == "d" (
call:mostraErro "Pastas nao sao permitidas"
endlocal
goto telaInicial)
call:mostrarComCor "Digite uma senha para este arquivoÿ" "c0"
call:criptografarSenha
if "!SenhaCript!" neq "" (
echo/&call:mostrarComCor "Aguarde..." "b0"
for /f %%a in ("!file!") do (set "localFile=%%~dpa")
for /f %%a in ("!file!") do (set "fileName=%%~nxa")
certutil -encode "!file!" "!file!_" 1>nul 2>nul
for /f %%a in ("!file!_") do (set actualSiz=%%~za)
for /f %%a in ('type !file!_') do (
echo/%%a|find "----">nul||echo/%%a>>"!file!_2"
if exist "!file!_2" (
set /a progress_ = progress
for /f %%i in ("!file!_2") do (set actualSiz_=%%~zi)
set /a progress=actualSiz_*100
set /a progress=progress/actualSiz
)
if !progress_! lss !progress! (
CALL:PROGRESSBAR 50 !progress!&echo/
call:mostrarComCor "Passo 1 de 2" "0a"
)
)
certutil -encode "!file!_2" "!file!_3" 1>nul 2>nul
for /f %%a in ("!file!_3") do (set actualSiz=%%~za)
for /f %%a in ('type !file!_3') do (
echo/%%a|find "----">nul||echo/%%a>>"!file!_4"
if exist "!file!_4" (
set /a progress_ = progress
for /f %%i in ("!file!_4") do (set actualSiz_=%%~zi)
set /a progress=actualSiz_*100
set /a progress=progress/actualSiz
)
if !progress_! lss !progress! (
CALL:PROGRESSBAR 50 !progress!&echo/
call:mostrarComCor "Passo 2 de 2" "0a"
)
)
ren "!localFile!!fileName!" "[backup]_!fileName!" 1>nul 2>nul
echo/!SenhaCript!:iProtect>!file!
type "!file!_4">>!file!
del !file!_ & del !file!_2 & del !file!_3 & del !file!_4
attrib +r "!file!"
call:mostraSucesso "Arquivo criptografado com sucesso"
endlocal
goto telaInicial
) else (
call:mostraErro "Digite uma senha"
endlocal
goto telaInicial
)
) else (
call:mostraErro "Arquivo inexistente"
endlocal
goto telaInicial
)
::================================================TELA DESCRIPTOGRAFAR======================================
:descriptografar
set "result="&cls&echo/
set "SenhaCript="
call:mostrarComCor "Arraste e solte aqui seu arquivo ou ou pasta e tecle enter" "e0"
echo/&call:mostrarComCor "Ou digite seu o caminho completo" "e0"
echo/&echo/&set/p "file="
if exist "%file%" (
for /f %%a in ("!file!") do (set "attr=%%~aa")
if /i "!attr:~0,1!" == "d" (
call:mostraErro "Pastas nao sao permitidas"
endlocal
goto telaInicial)
call:mostrarComCor "Este arquivo necessita de uma senha, digite-aÿ" "c0"
call:criptografarSenha
if "!SenhaCript!" neq "" (
set /p certificado=<!file!
for /f "delims=: tokens=1,2" %%a in ('echo/!certificado!') do (echo/%%a>_temp.$$$&set "isIpt=%%b")
if "!isIpt!" neq "iProtect" (
call:mostraErro "Este arquivo nao foi criptografado pelo iProtect"
endlocal
goto telaInicial
)
set /p savedPass=<_temp.$$$
del _temp.$$$
if "!savedPass!" equ "!SenhaCript!" (
for /f %%a in ("!file!") do (set "localFile=%%~dpa")
for /f %%a in ("!file!") do (set "fileName=%%~nxa")
for /f "skip=1" %%a in ('type !file!') do (echo/%%a>>"!localFile!_0!fileName!")
certutil -decode "!localFile!_0!fileName!" "!localFile!_!fileName!" 1>nul 2>nul
certutil -decode "!localFile!_!fileName!" "!localFile!_1!fileName!" 1>nul 2>nul
attrib -r "!file!" 2>nul
copy /y "!localFile!_1!fileName!" "!file!" 1>nul 2>nul
del "!localFile!_0!fileName!" & del "!localFile!_!fileName!" & del "!localFile!_1!fileName!"
call:mostraSucesso "Arquivo descriptografado com sucesso"
endlocal
goto telaInicial
) else (
call:mostraErro "Senha incorreta"
endlocal
goto telaInicial
)
) else (
call:mostraErro "Digite uma senha"
endlocal
goto telaInicial
)
) else (
call:mostraErro "Arquivo inexistente"
endlocal
goto telaInicial
)
::==============================================CONFIGURAR CONTA========================================
::======================================================================================================
:configurarConta
cls
call:menu "Alterar senha" "Excluir conta" "Voltar"
if not defined choice call:mostraErro "Op‡Æo inv lida!"&goto configurarConta
if "!choice!" == "1" (
goto alterarSenha
)
if "!choice!" == "2" (
goto excluirConta
)
if "!choice!" == "3" (
endlocal
goto telaInicial
)
::===================================================ALTERAR SENHA======================================
:alterarSenha
echo/&call:mostrarComCor "Sua senha antigaÿ" "0c"
call:criptografarSenha
if "!SenhaCript!" neq "" (
call:ler HKCU\Software\HNDSofts\iProtect\4\Users\!usuario! senha
if "!SenhaCript!" equ "!result!" (
:digitaNovaSenha
echo/&call:mostrarComCor "Nova senhaÿÿÿÿÿÿ" "0a"
call:criptografarSenha
if "!SenhaCript!" neq "" (set "novaSenha=!SenhaCript!") else (goto digitaNovaSenha)
echo/&call:mostrarComCor "Confirmar senhaÿ" "0a"
call:criptografarSenha
if "!SenhaCript!" neq "!novaSenha!" (
echo/&call:mostraErro "Senhas nao combinam"
goto digitaNovaSenha)
call:gravar HKCU\Software\HNDSofts\iProtect\4\Users\!usuario! string senha "!novaSenha!"
echo/&call:mostraSucesso "Senha alterada com sucesso"
endlocal
goto configurarConta
) else (
echo/&call:mostraErro "Senha incorreta"
endlocal
goto configurarConta
)
)
::===================================================EXCLUIR CONTA======================================
:excluirConta
echo/&call:mostrarComCor "Sua senhaÿ" "0c"
call:criptografarSenha
if "!SenhaCript!" neq "" (
call:ler HKCU\Software\HNDSofts\iProtect\4\Users\!usuario! senha
if "!SenhaCript!" equ "!result!" (
call:beep 4
call:mostrarComCor "Aten‡aoÿ" "e0"
call:mostrarComCor "Se excluir sua conta, todos arquivos que voce protege serao desprotegidos" "cF"
echo/&set /p "killME=Continuar [S/N] "
if /i "!killME!" equ "S" (
call:ler Software\HNDSofts\iProtect\4\System files "multi:hkcu"
if exist "multLine.txt" (
for /F %%a in (multLine.txt) do (
echo/%%a>_decode0.txt
certutil -decode _decode0.txt _decode1.txt 1>nul 2>nul
certutil -decode _decode1.txt _decode2.txt 1>nul 2>nul
Set /p _decode2=<_decode2.txt
del _decode0.txt & del _decode1.txt & del _decode2.txt
for /F "delims=* tokens=1,2" %%c in ('echo/!_decode2!') do (
set "currentFile=%%c"
set "isMine=0"
if "!usuario!" equ "%%d" (
set "isMine=1"
)
)
if "!isMine!" equ "1" (echo/!currentFile!>>Mine.txt) else (echo/%%a>>notMine.txt)
)
reg delete HKCU\Software\HNDSofts\iProtect\4\System /v files /f 1>nul 2>nul
del multLine.txt
)
if exist notMine.txt (
set merge=
for /F %%Z in (notMine.txt) do (
set "merge=!merge!$%%Z
)
set "merge=!merge:~1!
call:gravar HKCU\Software\HNDSofts\iProtect\4\System multi files "!merge!" "/s $"
del notMine.txt 2>nul
)
if exist Mine.txt (
for /F %%Z in ('type Mine.txt') do (
cacls "%%Z" /e /c /p Todos:F 1>nul 2>nul||cacls "%%Z" /e /c /p Everyone:F 1>nul 2>nul
)
del Mine.txt 2>nul
)
reg delete HKCU\Software\HNDSofts\iProtect\4\Users\!usuario! /f 1>nul 2>nul
set "usuario=" & set "result="
call:mostraErro "Sua conta foi excluida"
endlocal
exit/b
)
) else (
echo/&call:mostraErro "Senha incorreta"
endlocal
goto configurarConta
)
) else (
echo/&call:mostraErro "Digite a senha"
endlocal
goto configurarConta
)
::=====================================================FUNÇÕES==========================================
::=====================================================FUNÇÕES==========================================
::=====================================================FUNÇÕES==========================================
:welcome
call:mostrarComCor "===================================================================" "08"&echo/
call:mostrarComCor "====================" "02"&call:mostrarComCor "iProtect 4.0" "30"
call:mostrarComCor " MS-DOS is back!" "3f"&call:mostrarComCor "====================" "02"&echo/
call:mostrarComCor "===================================================================" "04"&echo/
exit/b
:menu
title iProtect - %date% %time:~0,5%
set /a menuCount=0
set choice=
for %%m in (%*) do (
set /a cor=!random! * 8/32768 + 2
set /a menuCount+=1
call:mostrarComCor "!menuCount! - %%~m" "0!cor!"&echo/)
echo/&set /p "choice=> "
if "%choice%" == "" goto:eof
if %choice% GTR %menuCount% set choice=
if !choice! LEQ 0 set choice=
set tem=false
for /l %%c in (1,1,%menuCount%) do (
if !menuCount! EQU %%c set tem=true
)
if %tem% NEQ true set choice=
exit/b
:mostrarComCor [txt][cor]
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a"
)
call :ColorText %~2 "%~1"
exit/b
:ColorText
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
exit/b
:mostraErro
call:mostrarcomcor "%~1" "cF"
call:beep 3
timeout 3 1>nul
exit/b
:mostraSucesso
call:beep 2
call:mostrarcomcor "%~1" "a0"
timeout 3 1>nul
exit/b
:beep [vezes]
for /l %%i in (1,1,%~1) do (echo/)
:GRAVAR [root tipo nome valor [opcoes adicionais]]
if /i "%~2" == "string" set tipo=REG_SZ
if /i "%~2" == "integer" set tipo=REG_DWORD
if /i "%~2" == "multi" set tipo=REG_MULTI_SZ
reg add "%~1" /v %~3 /d "%~4" /t %tipo% %~5 /f 1>nul 2>nul
exit/b
:LER [root nome [opcoes adicionais]]
echo/%~3|find /i "multi" 1>nul 2>nul && goto LERMULTI
for /F "tokens=3" %%a in ('reg query "%~1" /v %~2 %~3 2^>nul') do (
set result=%%a
)
exit/b
:LERMULTI
for /f "delims=: tokens=2" %%s in ('echo/%~3') do (set "rootKey=%%s")
if /i "%rootKey%" equ "hkcu" set CONST=H80000001
if /i "%rootKey%" equ "hklm" set CONST=H80000002
if /i "%rootKey%" equ "hkcr" set CONST=H80000000
(
echo/Const ROOTKEY = ^&%CONST%
echo/strComputer = "."
echo/Set oReg=GetObject^("winmgmts:{impersonationLevel=impersonate}!\\" ^& _
echo/ strComputer ^& "\root\default:StdRegProv"^)
echo/strKeyPath = "%~1"
echo/strValueName = "%~2"
echo/oReg.GetMultiStringValue ROOTKEY,strKeyPath, _
echo/ strValueName,arrValues
echo/For Each strValue In arrValues
echo/ Wscript.Echo strValue
echo/Next)>readMulti.vbs
for /f "tokens=*" %%a in ('cscript //nologo readMulti.vbs 2^>nul') do (echo/%%a>>multLine.txt)
del readMulti.vbs
exit/b
:SenhaOculta
set "str="
:Escrevendo
set "key="
for /F "usebackq delims=" %%L in (`xcopy /L /w "%~f0" "%~f0" 2^>NUL`) do (
if not defined key set "key=%%L"
)
setlocal EnableDelayedExpansion
set "key=!key:~-1!"
if "%key%" == "" (goto passwordInputComplete)
call:mostrarComCor "-" "0c"
set "str=!str!!key!"
goto :Escrevendo
:passwordInputComplete
echo/%str%>pwd.txt
exit/b
:trimPass
set "pwd=%~1"
echo/%pwd%>pwd.txt
exit/b
:criptografarSenha
call:senhaOculta
if not exist "%~dp0pwd.txt" (
exit/b
)
certutil -encode pwd.txt encodePwd.txt 1>nul 2>nul
for /f "skip=2" %%a in ('find /v /i "certifi" encodePwd.txt') do (echo/%%a>encodePwd.txt)
certutil -encode encodePwd.txt ReEncodedPwd.txt 1>nul 2>nul
for /f "skip=2" %%a in ('find /v /i "certifi" ReEncodedPwd.txt') do (set "senhaCript=%%a")
del pwd.txt& del encodePwd.txt& del ReEncodedPwd.txt
exit/b
:criptografarChave
set keyEncode=
echo/%~1>toEncode.txt
certutil -encode toEncode.txt encoded.txt 1>nul 2>nul
set firstEnc=
for /f "skip=2" %%a in ('find /v "-" "encoded.txt"') do (
set "firstEnc=!firstEnc!%%a"
)
echo/%firstEnc%>encoded.txt
certutil -encode encoded.txt encoded2.txt 1>nul 2>nul
for /f "skip=2" %%a in ('find /v "-" "encoded2.txt"') do (set "keyEncode=!keyEncode!%%a")
del toEncode.txt & del encoded.txt & del encoded2.txt
exit/b
:PROGRESSBAR [total progresso]
set /a full = %~1
for /l %%m in (1,1,%~1) do (
set "fullBar=!fullBar!_"
set "tags=!tags!#"
)
set number=%~2
set /a number = number /2
set /a pct=full-number
echo/echo/[%%tags:~0,%number%%%%%fullBar:~0,%pct%%%] !progress!%%%%%>_temp.bat
cls&call _temp.bat
del _temp.bat
exit/b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment