IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Protection de Dossiers par Mot de Passe [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut Protection de Dossiers par Mot de Passe
    Bonjour !

    J'ai trouvé en cherchent des logiciels pour protéger par mot de passe des dossiers, un batch que je trouve intéressant...
    Ce batch crée dans un premier temps un dossier, puis quand on relance le batch, il donne les attributs d'un fichier système et le fait "correspondre" au "Panneau de Configuration"...
    Je l'ai un peu modifieé, car je voudrais le partager à des collègues au travail...

    Mais il me manque certaines connaissances :

    ___● Je souhaiterais que chaque utilisateur ait son propre mot de passe, est-il possible qu'après demande dans le Batch, une ligne s'y ajoute avec le mot de passe ?

    Si le premier point possède une solution, sautez au 3ème point (je procèderais de même pour bloquer le batch)

    ___● Quand quelqu'un essaie de rentrer 3 mots de passe éronés 3 fois de suite, une clé est créé dans la base de registre avec le nom du propriétaire du dossier protégé et la date (pour identifier le pirate en herbe) -> comment tester l'existance de cette clé pour qu'à l'ouverture, si elle existe le batch se bloque ? (j'ai trouvé "Reg Query", mais ne sais le paramètrer)

    ___● Les 3 tentatives pour rentrer un mot de passe doivent se faire lors du "même" lancement du Batch, existe-il des variables dont l'existance dure tant que l'ordinateur n'est pas éteint ? (autrement, j'utiliserai une autre clé dans la base de registre)

    ___● Enfin, comme les mots de passe se trouveront dans le batch, je souhaiterais le compiler... j'ai tenté de compiler mon batch (qui fonctionne mais n'est pas terminé) via PowerBatch 6, mais cela n'a pas fonctionné... avez-vous des sugestions ?

    Merci...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Bonjour
    il est sans doute possible de faire ce que tu demandes mais pas sans voir le code du batch

    pour compiler tu peux eventuellement utiliser bat2exe converter (gratuit)

  3. #3
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Merci pour ta réponse...

    Quand mon batch sera terminé, j'essaierai "bat2exe"...

    Mais je ne peux le mettre en pièce jointe avant de l'avoir finaliser...
    (Je peux mettre l'original si quelqu'un est interressé par le principe de masquage)

    ● Je veux juste connaître la commande dos pour vérifier si une clé existe...
    (du syle : "If exist Reg Query HKEY_CURRENT_USER\Protect /v %nom%")

    ● Connaître s'il existe une déclaration de variable ne s'éffaçant pas tant que l'ordi reste allumé (ou je créerai une une clé dans la base de registre)

    ● Et savoir si via une commande, on peut insérer une ligne dans le batch en cours... je pense que cela n'est pas possible, cela reviendrait à modifier le batch pendant son éxecution...

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Je veux juste connaître la commande dos pour vérifier si une clé existe...
    (du syle : "If exist Reg Query HKEY_CURRENT_USER\Protect /v %nom%")
    Tu peux faire ça via un FOR qui parse le résultat de la commande Reg, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f "usebackq tokens=*" %%i in (`reg query ......`) do set REGVALUE=%%i
    if %REGVALUE%==.....
    Utiliser l'expansion retardée (! à la place de %) si tu réutilises la variable plusieurs fois. Attention, les guillemets simples sont inversées (AltGr+7) autour de la commande.

    Citation Envoyé par Scoubi7 Voir le message
    Connaître s'il existe une déclaration de variable ne s'éffaçant pas tant que l'ordi reste allumé (ou je créerai une une clé dans la base de registre)
    Non : quand tu fermeras ton interpréteur de commande (ce qui est le cas par défaut quand ton batch est terminé), l'environnement est perdu.
    Stocke la valeur dans un fichier temporaire (variable %TEMP%) plutôt qu'en base de registre, c'est moins crasseux à mon avis.

    Citation Envoyé par Scoubi7 Voir le message
    Et savoir si via une commande, on peut insérer une ligne dans le batch en cours... je pense que cela n'est pas possible, cela reviendrait à modifier le batch pendant son éxecution...
    C'est impossible, par contre, tu peux créer dynamiquement un sous-batch et l'exécuter via CALL.

  5. #5
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Merci Mac LAK pour toutes ces infos !

    Mais je ne sais pas si je me suis bien fait comprendre pour la clé de registre...:
    ● Lors de la tentative d"intrusion" (3 mdp), une clé s'inscrit dans la base de registre via la commande "Reg Add HKEY_CURRENT_USER\Protect /v %nom% /t REG_SZ /d %Date% /f" puis le batch se bloque.
    ● Je souhaiterais qu'aux démarrages suivants, le batch contrôle si cette clé existe dans la base de registre et si oui, stoppe le batch...

    Pour le sous batch : le souci, c'est que si j'y place le mot de passe de l'utilisateur, il sera super facile de le découvrir... je crois (même si c'est pas très propre) que je le coderais et l'insérerais dans la base de registre... (sauf meilleure idée)

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Lors de la tentative d"intrusion" (3 mdp), une clé s'inscrit dans la base de registre via la commande "Reg Add HKEY_CURRENT_USER\Protect /v %nom% /t REG_SZ /d %Date% /f" puis le batch se bloque.
    OK, mais c'est aussi permanent (ou peu fiable) qu'un fichier : si ta BDR est accessible en batch, elle l'est encore plus avec RegEdit !

    Citation Envoyé par Scoubi7 Voir le message
    Je souhaiterais qu'aux démarrages suivants, le batch contrôle si cette clé existe dans la base de registre et si oui, stoppe le batch...
    Tu peux stopper un batch en utilisant la commande goto :eof, ou encore exit qui fermera en plus l'interpréteur de commande hôte.

    Citation Envoyé par Scoubi7 Voir le message
    Pour le sous batch : le souci, c'est que si j'y place le mot de passe de l'utilisateur, il sera super facile de le découvrir... je crois (même si c'est pas très propre) que je le coderais et l'insérerais dans la base de registre... (sauf meilleure idée)
    Le batch, par nature, ne peut pas réellement être protégé, même s'il est "compilé".
    Dans tous les cas, le MdP sera en clair soit dans un fichier, soit dans la BDR, et ne sera pas plus protégé par une méthode ou une autre. Typiquement, je te proposais le répertoire temporaire parce que personne n'y mets les pieds, le plus souvent...

  7. #7
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Le truc c'est que mes collègues ne s'y connaissent pas des masses en base de registre et que de toute façon je voulais coder le mot de passe dans la base de regitre...

    Donc du coup comme je me suis rabattu sur la bdr, la seule chose qui me manque c'est de savoir comment lire la valeur d'une Clé dans la bdr...

    Le mieux que j'ai pu obtenir c'est quand je tappe :
    "Reg Query HKEY_CURRENT_USER\Protect\%nom% /v Tentative"
    J'obtiens :
    "! REG.EXE VERSION 3.0

    HKEY_CURRENT_USER\Protect\nom
    ___Tentative____REG_SZ___0
    "


    Finallement, si j'ai besoin aussi d'autre chose : est-il possible quand il est demandé à l'utilisateur de rentrer son mot de passe, de l'afficher sous forme d'asterisques ?

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Le mieux que j'ai pu obtenir c'est quand je tappe
    Il te faut découper ta sortie via un FOR /F, et sauter les premières lignes (flag skip= du FOR). Tu as la FAQ Batch pour les exemples, et c'est quelque chose de récurrent sur le forum.

    A priori, ça va être un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "usebackq tokens=3 skip=3" %%I in (`Reg Query HKEY_CURRENT_USER\Protect\%nom% /v Tentative`) set REGVALUE=%%I
    Ensuite, %REGVALUE% contient ce que tu cherches.
    L'aide de FOR est ton amie quoi qu'il en soit...

    Citation Envoyé par Scoubi7 Voir le message
    Finallement, si j'ai besoin aussi d'autre chose : est-il possible quand il est demandé à l'utilisateur de rentrer son mot de passe, de l'afficher sous forme d'asterisques ?
    Pas possible en batch de base à ma connaissance, il faudrait passer par un outil externe pour ça, je pense...

  9. #9
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    J'ai entré ta ligne (telle quelle) dans mon batch, mais cela fait buggé mon batch...

    Je n'ai pas le temps ce soir mais j'essaierai de modifier cette ligne pour qu'elle fonctionne même s'il y a énormément de paramètres qui me passent bien loin au dessus de la tête (comme l'utilisation des `, et bien d'autres encore)

  10. #10
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    J'ai mis un moment à voir qu'il manquait le "DO" à la fin ! mai bon, c'est que je doit faire des progrès...

    J'ai fait un truc pas très propre pour arriver à mes fins, au niveau des "Delims" :
    "For /f "Usebackq Skip=4 Tokens=2 Delims=REG_SZ" %%i In (`Reg Query HKEY_CURRENT_USER\Protect\%nom% /v Tentative`) Do Set/a tente=%%i"
    Je n'ai pas trouver à quoi correspondait ce type de délimiteur sur le résultat de la commande dos... As-tu une idée ? (ce ne sont pas des espaces)

    Et qui plus est, quand je fait un "Echo" sur la valeur de tente j'obtiens bien un chiffre mais si je l'utilise dans un "If", le retour n'est pas bon...

  11. #11
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Je viens de comprendre que le 0 que me renvoyait mon batch ne correspondait pas au 0 de la valeur de ma clé, mais à un 0 pour me dire que la valeur n'était pas numérique...

    Donc je suis toujours coincé même avec ma méthode pas propre...
    Je vais chercher si ces espèces d'espaces dans le renvoie de la commande "Reg Query" ne seraient pas des tabulations...

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Bonjour
    si tu veux récupérer la valeur de ta clé Tentative
    ce code fonctionne sur mon PC (xp pro)
    Tentative=3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    For /f "skip=4 Tokens=3" %%i In ('Reg Query HKEY_CURRENT_USER\Protect\%nom% /v Tentative') Do Set tente=%%i
    echo %tente%
    Résultat : 3

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Je n'ai pas trouver à quoi correspondait ce type de délimiteur sur le résultat de la commande dos... As-tu une idée ? (ce ne sont pas des espaces)
    Cela ne peut pas marcher : delims est une liste de CARACTÈRES de séparation, et non pas une CHAÎNE de séparation...

    Citation Envoyé par Scoubi7 Voir le message
    Et qui plus est, quand je fait un "Echo" sur la valeur de tente j'obtiens bien un chiffre mais si je l'utilise dans un "If", le retour n'est pas bon...
    Regarde l'aide des commandes quand ça ne fait pas ce que tu veux : tu ne progresseras jamais sinon... Il y a des opcodes spécifiques pour les comparaisons numériques.

    Par exemple, sur l'aide de FOR, tu verrais que les délimiteurs par défaut sont l'espace et la tabulation, ce qui rendait totalement inutile le paramètre delims (que je n'avais pas mis dans ma commande, d'ailleurs).
    Pour le reste, quand tu ne sais pas trop ce qui se passe, fais un echo avec des délimiteurs, par exemple echo #%%I#, afin de voir ce qu'il se passe et si tu n'as pas des espaces avant/après le texte qui pourraient poser des soucis.



    @Acris : Il vaut mieux, par sécurité, utiliser les quotes inverses et usebackq pour une commande, même si les apostrophes simples fonctionnent le plus souvent.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Mac LAK > par sécurité de quoi ??

    tu peux me dire à quoi sert Usebackq ?

  15. #15
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Acris Voir le message
    Mac LAK > par sécurité de quoi ??

    tu peux me dire à quoi sert Usebackq ?
    Normalement, l'aide de FOR te dit que pour parser le résultat d'une commande, tu dois utiliser usebackq et mettre la commande entre apostrophes inverses ou simples.
    Le fait que ça marche très souvent sans ce paramètre et avec des apostrophes normales n'est pas une garantie que ça marchera tout le temps, notamment à cause de l'interprétation (ou pas) des variables dans ladite commande.

    Je cite :
    Citation Envoyé par Aide FOR
    usebackq : Spécifie que la nouvelle sémantique est en place, lorsqu'une chaîne entre guillemets inversés est exécutée en tant que commande et une chaîne entre guillemets simples est une chaîne de commande littérale et permet l'utilisation de guillemets doubles pour citer des noms de fichiers.
    Donc, pour utiliser des guillemets pour le support des noms longs, tu dois normalement spécifier usebackq, que tu mettes derrière la commande entre guillemets simples ou inverses.

    Petits exemples simples, à taper directement en ligne de commande :Après, la doc conseille d'utiliser usebackq et des `` pour exécuter les commandes : à priori, c'est donc préférable de procéder ainsi plutôt que d'utiliser l'autre méthode qui (certes) marche, mais pourrait ne plus marcher sans préavis.

  16. #16
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Un grand Merci à Acris !!!
    Et Mac LAK pour toutes ces informations !!!

    Je n'ai plus qu'à me pencher sur la compilation de mon batch...

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Points : 247
    Points
    247
    Par défaut
    Merci Mac LAK pour ton explication
    j'ai bien compris que l'un est dépendant de l'autre.

    cependant je ne l'ai jamais utilisé dans mes batchs et par chance, ils ont toujours fonctionné et ceux sur différents pc (ouf)

    Je ferai attention pour les prochains

    Scoubi7 > tu ne trouveras pas mieux en gratuit que bat2exe converter
    sainon faut aller vers le payant : http://www.battoexe.com/

    ou utiliser la compilation sous powerbatch en .com

  18. #18
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Je vais faire différents essais pour coder mon mdp dans la base de registre...
    (je pensais utiliser, par exemple un code du style "set mdp=%chaine:a=f%" avec chaque lettre définie... sauf si vous pensez à quelquechose de mieux...)

    Puis j'essaierai tes progs pour la compilation... Merci

  19. #19
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Désolé de pas être doué, mais pouvez-vous me donner la commande pour tester l'existance d'une clé (la même que la précédente)...?

    J'ai essayé pas mal de possibilité... sans succès !

  20. #20
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Et encore une question....!

    Je me suis fait un batch pour décoder les mots de passe codés dans la base de registre...

    Je n'avais pas pensé au fait qu'en utilisant :
    "set cle=%cle:a=f%
    set cle=%cle:b=x
    ...
    set cle=%cle:z=r
    " (par exemple), les lettres déjà décodées seraient traitées une deuxième fois donc le résultat ne serait pas bon...

    Donc j'ai pensé utiliser dans mon batch, une boucle qui dans un premier temps identifierait le nombre de caractère du mot de passe, puis traiterait chaque lettre une par une...

    Mais je n'arrive pas à utiliser :
    "Set /a L=L+1
    lettre=%cle:~%%L%,1%
    " pour déterminer les lettres à traiter...


    Ci-joint ma "tentative de batch" (et vous n'imaginez pas le temps que j'ai mis pour écrire ces quelques lignes)
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Protection de fichier par mot de passe
    Par AAlain dans le forum Langage
    Réponses: 5
    Dernier message: 20/11/2008, 16h48
  2. protéger dossier par mot de passe
    Par Lyna31 dans le forum Sécurité
    Réponses: 0
    Dernier message: 15/05/2008, 19h39
  3. [Sécurité] Protéger un dossier par mot de passe
    Par duchere dans le forum Langage
    Réponses: 7
    Dernier message: 28/08/2006, 16h22
  4. Réponses: 1
    Dernier message: 14/02/2006, 00h40
  5. Réponses: 1
    Dernier message: 03/01/2006, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo