Salve a tutti, vorrei capire come mai quando utilizzo la funzione 9 per eliminare la cartella Privato ed il file ini, io provo a ricreare il tutto aprendo lo script, mi fa inserire la password e si chiude (così come volevo facesse) ma se poi riapro lo script si arresta e devo obbligatoriamente riaprirlo per sbloccare la cartella inserendo la password
Grazie Mille a chi sa darmi una mano. Se si risolve quel problema, potete tranquillamente utilizzarlo perché è abbastanza comodo. Non è molto sicuro per nascondere qualcosa di privato ma a chi non sa molto di computer, può dare filo da torcere
Codice:
@echo off
title CREAZIONE CARTELLA PRIVATA BY TonyB
set passwordFile=config.ini
:INIZIO
:: Controlla se esiste il file di configurazione
if NOT EXIST "config.ini" (
echo.
echo Imposta una password per la cartella:
echo.
call :setPassword
goto End
)
:: Leggi la password hashata dal file di configurazione
call :readPasswordHashFromFile
:CHECK_FOLDER
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST "Privato" goto MDLOCKER
goto MENU
:MENU
cls
echo.
echo 1. Cambia password
echo.
echo 9. Elimina completamente tutto (Sia la cartella che i file)
echo.
set /p choice="SCEGLI L'OPZIONE 1, L'OPZIONE 9 OPPURE PREMI SEMPLICEMENTE INVIO PER NASCONDERE LA CARTELLA: "
if "%choice%"=="1" goto CHANGE_PASSWORD
if "%choice%"=="9" goto FULL_REMOVE
goto LOCK
:FULL_REMOVE
cls
echo.
echo La Cartella Privato Ed I Suoi File, Sono Stati Completamente Eliminati
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" (
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
rd /s /q "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
)
if EXIST "Privato" (
rd /s /q "Privato"
)
if EXIST "config.ini" (
attrib -h -s "config.ini"
del "config.ini"
)
goto End
:LOCK
cls
echo.
ren Privato "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "config.ini"
echo Cartella Nascosta
goto End
:UNLOCK
cls
echo.
echo Inserisci La Password Per Sbloccare La Cartella
echo.
call :getUserPasswordHash inputHash
if "%inputHash%"=="01BE30BB4A27765C37462E6BF2A0BF8B6C109F9BE9D81E6FD56455DB1A736A43" (
cls
echo.
echo La Tua Password E' Stata Completamente Eliminata
echo.
attrib -h -s config.ini
del config.ini
pause
goto End
)
if NOT "%inputHash%"=="%passwordHash%" goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Privato
echo Cartella Sbloccata Con Successo
goto End
:FAIL
echo.
echo Password Non Valida
echo.
pause
goto UNLOCK
:MDLOCKER
md Privato
echo Cartella "Privato" Creata Con Successo
goto LOCK
:CHANGE_PASSWORD
cls
echo Inserisci la vecchia password:
echo.
call :getUserPasswordHash oldHash
:: Leggi la password hashata dal file di configurazione
call :readPasswordHashFromFile
if NOT "%oldHash%"=="%passwordHash%" (
echo.
echo Password Non Valida
echo.
pause
goto CHANGE_PASSWORD
)
echo.
echo Inserisci la nuova password:
echo.
call :setPassword
echo.
echo La Password E' Stata Cambiata Con Successo
echo.
pause
goto End
:: Funzione per impostare una nuova password
:setPassword
call :getUserPasswordHash newPasswordHash
attrib -h -s "%passwordFile%"
echo passwordHash=%newPasswordHash% > "%passwordFile%"
attrib +h +s "%passwordFile%"
goto :eof
:: Funzione per leggere la password hashata da config.ini
:readPasswordHashFromFile
attrib -h -s "%passwordFile%"
for /f "tokens=2 delims== " %%a in ('type "%passwordFile%" ^| find "passwordHash"') do set passwordHash=%%a
attrib +h +s "%passwordFile%"
goto :eof
:: Funzione per ottenere l'hash di una password inserita dall'utente
:getUserPasswordHash
setlocal
for /f %%i in ('powershell -command "$passwordSecure = Read-Host -Prompt 'PASSWORD' -AsSecureString; $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($passwordSecure); $password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR); $hash = [System.BitConverter]::ToString([System.Security.Cryptography.HashAlgorithm]::Create('SHA256').ComputeHash([System.Text.Encoding]::UTF8.GetBytes($password))); $hash = $hash -replace '-'; Write-Output $hash"') do set "hash=%%i"
endlocal & set "%1=%hash%"
goto :eof
:End
Grazie Mille a chi sa darmi una mano. Se si risolve quel problema, potete tranquillamente utilizzarlo perché è abbastanza comodo. Non è molto sicuro per nascondere qualcosa di privato ma a chi non sa molto di computer, può dare filo da torcere
Ultima modifica da un moderatore: