Boucle if

Signaler
Messages postés
3
Date d'inscription
samedi 17 octobre 2020
Statut
Membre
Dernière intervention
22 octobre 2020
-
Messages postés
12762
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
25 octobre 2020
-
Bonjour j'ai fait un programme en batch qui permet de créer un dossier et de le verrouillez en mettant un mot de passe dessus et on peut n'y accéder que si le mot de passe est juste mais j'ai deux problème

1:
C'est que on a qu'a cliqué sur modifier sur le fichier bat et on peut voir le mot de passe dans le code et j'aimerais qu'il ne soit pas visible

2:
J'aimerais bien faire une boucle if qui dès que une personne se trompe 5 fois de mot de passe surprime l'intégrité des dossiers de ma clé USB car ça fait depuis 2 jours que je galère et j'y arrive pas
cls 
@ECHO OFF
title Dossier Privé
if EXIST "File locked.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Private goto MDLOCKER
:CONFIRM
echo Êtes vous sûr de vouloir bloquer les fichiers Y=Oui N=Non(Y/N)
set/p "cho=>"
if %cho%==Y goto LOCK
if %cho%==y goto LOCK
if %cho%==n goto END
if %cho%==N goto END
echo Choix invalide.
goto CONFIRM
:LOCK
ren Private "File locked.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
attrib +h +s "File locked.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Dossier sécurisé
goto End
:UNLOCK
echo Entrer le mot de passe pour déverrouillé
set/p "pass=>"
if NOT %pass%== password goto FAIL
attrib -h -s "File locked.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "File locked.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Private
echo Dossier déverrouillé GG
goto End
:FAIL
echo Mot de passe incorrect
goto end
:MDLOCKER
md Private
echo Private a bien été créé
goto End
:End

2 réponses

Messages postés
29877
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 octobre 2020
2 884
Bonjour,

Même si tu "cryptais" le password, rien n'empêcherait un utilisateur d'éditer ton batch et de ne conserver que la ligne qui permet de retirer la "protection".

Si tu veux réellement protéger ta clé, tu ferais mieux de te tourner vers des logiciels existant
par exemple : https://www.commentcamarche.net/faq/32142-proteger-une-cle-usb-avec-un-mot-de-passe

Sinon, si tu veux coder quelque chose toi même, il faudrait, je pense, te tourner vers des langages plus évolués et compilés ( histoire qu'on ne puisse pas les éditer avec un simple bloc note ).
Mais là encore, juste modifier l'attribe des fichiers n'est pas ce qu'on peut réellement appeller "protéger" ....
Il faudrait te pencher, à minimum, sur le hashage des fichiers


Messages postés
12762
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
25 octobre 2020
3 697
Bonjour,

Comme le dit jordane45 ce n'est pas terrible comme solution pour sécuriser tes données.

Voilà ma contribution au script que tu as trouvé sur le net :

@ECHO OFF
title Dossier Confidentiel
chcp 28591 >nul
setlocal enableextensions disabledelayedexpansion

set locked=File locked.{21EC2020-3AEA-1069-A2DD-08002B30309D}
set tentative=0

if EXIST "%locked%" (goto :UNLOCK)
if NOT EXIST Private (md Private)

:CONFIRM
cls & set "cho="
echo. & echo Êtes vous sûr de vouloir bloquer les fichiers Y=Oui N=Non (Y/N)
set /p "cho=>>> "

if not defined cho (goto :CONFIRM)
if /i "%cho%"=="Y" (goto :LOCK)
if /i "%cho%"=="N" (exit)

echo. & echo Choix invalide !!!
echo. & pause
goto :CONFIRM

:LOCK
ren Private "%locked%"
attrib +h +s "%locked%"
echo. & echo ^>^>^> Dossier sécurisé !
echo. & pause
exit

:UNLOCK
set "pass="
if %tentative% GEQ 5 (exit)
echo. & echo Entrez le mot de passe pour déverrouiller
set /p "pass=>>> "

if NOT "%pass%"=="password" (goto :FAIL)
attrib -h -s "%locked%"
ren "%locked%" Private
echo. & echo Dossier déverrouillé GG
echo. & pause
exit

:FAIL
set /a tentative+=1
echo. & echo Mot de passe incorrect !
goto :UNLOCK


J'ai ajouté comme tu l'as demandé un compteur qui fait quitter le programme au bout de 5 mots de passe erronés. Il ne te reste qu'à le modifier pour supprimer tous les fichiers de ta clé USB.



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”