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 :

MS DOS : Remplacer des caractères saisis par des "*"


Sujet :

Scripts/Batch

  1. #1
    Invité
    Invité(e)
    Par défaut MS DOS : Remplacer des caractères saisis par des "*"
    Bonjour à tous !

    Voilà, j'ai crée une minuscule programme MS DOS qui sert à lancer un programme si on saisit le bon mot de passe.
    Mon programme marche nickel sauf que je voudrais le compliquer un peu : j'aimerais que quand je saisisse le mot de passe dans le programme, les caractères soient remplacés par des "*" ou des "X", histoire de rendre le mot de passe un peu plus confidentiel...

    Sauriez-vous comment faire ?
    Merci à tous ceux qui pourront m'aider.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Le vrai vieux DOS 16 bits ou un programme Win32/Win64 console?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Invité
    Invité(e)
    Par défaut Euh... Comment dire...
    Citation Envoyé par Médinoc Voir le message
    Le vrai vieux DOS 16 bits ou un programme Win32/Win64 console?
    Ouh là là, je ne suis pas assez bon en programmation ! Je débute seulement alors je crée des petits programmes mais sans plus.
    Mon programme ressemble à ça :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @ECHO OFF
    :AFF
    echo Veuillez saisir votre mot de passe :
    set/p "pass=>"
    if NOT %pass%== 1234 goto FAIL
    goto PROG
    :FAIL
    cls
    echo Le mot de passe est incorrect
    goto AFF
    :PROG
    cls
    echo CONNEXION...
    start D:\StockExpress
    exit

    Et j'ai créé ce programme à partir d'un document texte (.txt) que j'ai enregistré sous le nom "Code.bat".
    Je ne sais pas si ça peut vous aider...
    Dernière modification par sevyc64 ; 19/01/2015 à 21h17.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ah, c'est un batch, que tu fais tourner sous un Windows moderne je suppose.
    Il y a une section dédiée dans le forum: Scripts/Batch
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Invité
    Invité(e)
    Par défaut Je comprend tout !
    Citation Envoyé par Médinoc Voir le message
    Ah, c'est un batch, que tu fais tourner sous un Windows moderne je suppose.
    Il y a une section dédiée dans le forum: Scripts/Batch
    Aaaah ! Je n'étais pas au courant que c'était en batch. Maintenant, je pourrais peut-être trouvé des résultats plus ciblés sur mon cas. Merci de cet info !

  6. #6
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut [BAT] Remplacer la saisie du mot de passe par des *
    Voici un petit exemple que je viens de te faire, que tu peux adapter à ta situation :


    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    ::SachaDee - 2015
     
    @echo off&cls
     
    ::Le Mot de Passe
    set "$Mdp=toto1234"
     
    ::La longeur du Mot de passe
    set "$Long=8"
     
    ::Les autres variables
    set "$l="
    set "$l1="
    set "$C=0"
     
     
    :test
    if %$c%==%$Long% goto:Pastrouve
    set "$T="
    cls&echo Entrer votre MDP : %$l1%
    For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined $T Set "$T=%%#"
    Set "$l=%$l%%$T:~-1%"
    set "$l1=%$l1%*"
    if "%$l%"=="%$Mdp%" goto:trouve
    set /a $C+=1
    goto:test
     
     
    :trouve
    echo bravo
    exit/b
     
    :Pastrouve
    echo Pas trouv‚
    exit/b


    Tu n'as pas besoin d'appuyer sur Enter il compte le nombre de caractères entrés et si tu passes la valeur définie dans la variable $Long il termine.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #7
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Générer un HTABOX pour cacher un mot de passe en ligne de commande

    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    @echo off
    Title G‚n‚rer un HTABOX pour cacher un mot de passe en ligne de commande Copyright Hackoo 2014
    mode con cols=90 lines=3 & color 9B
    Set MyVBSFile=%tmp%\%~n0.vbs
    Set MyHTAFile=%tmp%\%~n0.hta
    :: Créer le VBS Pour extraire et générer le code du HTA
    Call :CreateMyVBS
    :: Lancer Le VBS
    Cscript.exe //NOLOGO %MyVBSFile%
    :: Lancer Le HTA crée par le VBS
    start /wait mshta.exe "%MyHTAFile%"
    Del "%MyVBSFile%" & Del "%MyHTAFile%"
    :: Lire le contenu du fichier %tmp%\userIn pour extraire le mot de passe tapé depuis
    :: le HTABOX et le définir comme une variable
    for /f %%i in (%tmp%\userIn) do set "Mypassword=%%i"
    echo Votre mot de passe saisi est : %MyPassword%
    Del %tmp%\userIn
    pause 
    Exit /b
    :#Start
    <html>
    <head>
    <title>Mot de Passe © Hackoo</title>
    <hta:application id="htaid"
    applicationName="Password"
    border="thin"
    icon="wlrmdr.exe"
    borderStyle="normal"
    caption="yes"
    contextMenu="no"
    maximizeButton="no"
    minimizeButton="yes"
    navigable="yes"
    showInTaskbar="yes"
    singleInstance="yes"
    sysmenu="yes"
    SCROLL="NO" 
    SHOWINTASKBAR="Yes"   
    SELECTION="no"
    MINIMIZEBUTTON="no" 
    >
    </head>
    <META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES"> 
    <BODY TOPMARGIN="1" LEFTMARGIN="1"><CENTER><DIV><SPAN ID="ONSCR"></SPAN></DIV></CENTER></BODY>
    <script language="vbscript">
    '---------------------------------------------------------------------------------------
    Sub Window_OnLoad
        CenterWindow 300,150
        Call PasswordForm()
        Call TextFocus()
    end sub
    '---------------------------------------------------------------------------------------
    Sub CenterWindow(x,y)
        Dim iLeft,itop
        window.resizeTo x,y
        iLeft = window.screen.availWidth/2 - x/2
        itop = window.screen.availHeight/2 - y/2
        window.moveTo ileft,itop
    End Sub
    '----------------------------------------------------------------------------------------
    Sub SavePassword()
        set fs=CreateObject("Scripting.FileSystemObject")
        strFile=fs.GetAbsolutePathName(fs.BuildPath(fs.GetSpecialFolder(2),"UserIn"))
        set ts=fs.OpenTextFile(strFile,2,True)
        If PasswordArea.value <> "" Then
            ts.WriteLine PasswordArea.value
            ts.Close
            self.Close 'Pour fermer ce HTA après avoir enregistré le mot de passe comme une variable dans le fichier Userin
        else
            Msgbox "Le mot de passe est vide ! "& Vbcrlf & "SVP entrez de nouveau votre mot de passe",VbExclamation,"Mot de Passe © Hackoo"
            Location.reload(true) 'Pour recharger à nouveau ce HTA
        end if
    End Sub
    '----------------------------------------------------------------------------------------
    Sub PasswordForm()
        Self.document.title = "Mot de Passe © Hackoo"
        Self.document.bgColor = "lightblue"
        ONSCR.InnerHTML="<center><FONT COLOR=""#FFFFFF"" SIZE=""+1"" FACE=""VERDANA,ARIAL,HELVETICA,SANS-SERIF"">Taper votre mot de passe</FONT<br>"_
        &"<input type=""password"" name=""PasswordArea"" size=""20"" onKeyUp=""TextFocus""><P>"_
        &"<input type=""Submit"" STYLE=""HEIGHT:25;WIDTH:110"" value=""OK"" onClick=""SavePassword"">"
    END Sub
    '----------------------------------------------------------------------------------------
    Sub TextFocus
        PasswordArea.Focus 
    End Sub
    '----------------------------------------------------------------------------------------
    </script>
    </body>
    </html>
    :#End
    ::***********************************************************************************************
    :CreateMyVBS
    ::'**********************************************************************************************
    (
    echo. Set fso = CreateObject^("Scripting.FileSystemObject"^)
    echo. Set f=fso.opentextfile^("%~f0",1^)
    echo. a=f.readall
    echo. Set r=new regexp
    echo. r.pattern = "(?:^|(?:\r\n))(?::#Start\r\n)([\s\S]*?)(?:\r\n)(?::#End)"
    echo. Set Matches = r.Execute^(a^)
    echo. If Matches.Count ^> 0 Then Data = Matches^(0^).SubMatches^(0^)
    echo. WriteFileText "%MyHTAFile%",Data
    echo. f.close
    ::'**********************************************************************************************
    echo. 
    echo. Function WriteFileText^(sFile,Data^)
    echo.     Dim objFSO,oTS,sText
    echo.     Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
    echo.     Set oTS = objFSO.CreateTextFile^(sFile,2^)
    echo.     oTS.WriteLine Data
    echo.     oTS.close
    echo.     set oTS = nothing
    echo.     Set objFSO = nothing
    echo. End Function 
    ) > %MyVBSFile%
    ::'***********************************************************************************************

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Euh, ça, ce n'est plus vraiment ce que j'appellerais du batch. C'est comme si je faisais un batch qui pisse un code C# avant d'appeler csc.exe dessus et exécuter le résultat...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Invité
    Invité(e)
    Par défaut Tout petit problème...
    Citation Envoyé par sachadee Voir le message
    Voici un petit exemple que je viens de te faire, que tu peux adapter à ta situation :


    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    ::SachaDee - 2015
     
    @echo off&cls
     
    ::Le Mot de Passe
    set "$Mdp=toto1234"
     
    ::La longeur du Mot de passe
    set "$Long=8"
     
    ::Les autres variables
    set "$l="
    set "$l1="
    set "$C=0"
     
     
    :test
    if %$c%==%$Long% goto:Pastrouve
    set "$T="
    cls&echo Entrer votre MDP : %$l1%
    For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined $T Set "$T=%%#"
    Set "$l=%$l%%$T:~-1%"
    set "$l1=%$l1%*"
    if "%$l%"=="%$Mdp%" goto:trouve
    set /a $C+=1
    goto:test
     
     
    :trouve
    echo bravo
    exit/b
     
    :Pastrouve
    echo Pas trouv‚
    exit/b


    Tu n'as pas besoin d'appuyer sur Enter il compte le nombre de caractères entrés et si tu passes la valeur définie dans la variable $Long il termine.

    Merci beaucoup à tous d'essayer de résoudre mon problème ! Rare sont les gens qui se donneraient la peine de le faire ! Cependant, sur ton programme, il y a un tout petit soucis :
    Si on se trompe de caractères, on ne peux pas effacer car le programme compte la touche "Effacer" comme un caractère.
    Aurais-tu un moyen d'y remédier ?
    Merci d'avance

  10. #10
    Invité
    Invité(e)
    Par défaut Super programme !
    Citation Envoyé par hackoofr Voir le message

    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    @echo off
    Title G‚n‚rer un HTABOX pour cacher un mot de passe en ligne de commande Copyright Hackoo 2014
    mode con cols=90 lines=3 & color 9B
    Set MyVBSFile=%tmp%\%~n0.vbs
    Set MyHTAFile=%tmp%\%~n0.hta
    :: Créer le VBS Pour extraire et générer le code du HTA
    Call :CreateMyVBS
    :: Lancer Le VBS
    Cscript.exe //NOLOGO %MyVBSFile%
    :: Lancer Le HTA crée par le VBS
    start /wait mshta.exe "%MyHTAFile%"
    Del "%MyVBSFile%" & Del "%MyHTAFile%"
    :: Lire le contenu du fichier %tmp%\userIn pour extraire le mot de passe tapé depuis
    :: le HTABOX et le définir comme une variable
    for /f %%i in (%tmp%\userIn) do set "Mypassword=%%i"
    echo Votre mot de passe saisi est : %MyPassword%
    Del %tmp%\userIn
    pause 
    Exit /b
    :#Start
    <html>
    <head>
    <title>Mot de Passe © Hackoo</title>
    <hta:application id="htaid"
    applicationName="Password"
    border="thin"
    icon="wlrmdr.exe"
    borderStyle="normal"
    caption="yes"
    contextMenu="no"
    maximizeButton="no"
    minimizeButton="yes"
    navigable="yes"
    showInTaskbar="yes"
    singleInstance="yes"
    sysmenu="yes"
    SCROLL="NO" 
    SHOWINTASKBAR="Yes"   
    SELECTION="no"
    MINIMIZEBUTTON="no" 
    >
    </head>
    <META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES"> 
    <BODY TOPMARGIN="1" LEFTMARGIN="1"><CENTER><DIV><SPAN ID="ONSCR"></SPAN></DIV></CENTER></BODY>
    <script language="vbscript">
    '---------------------------------------------------------------------------------------
    Sub Window_OnLoad
        CenterWindow 300,150
        Call PasswordForm()
        Call TextFocus()
    end sub
    '---------------------------------------------------------------------------------------
    Sub CenterWindow(x,y)
        Dim iLeft,itop
        window.resizeTo x,y
        iLeft = window.screen.availWidth/2 - x/2
        itop = window.screen.availHeight/2 - y/2
        window.moveTo ileft,itop
    End Sub
    '----------------------------------------------------------------------------------------
    Sub SavePassword()
        set fs=CreateObject("Scripting.FileSystemObject")
        strFile=fs.GetAbsolutePathName(fs.BuildPath(fs.GetSpecialFolder(2),"UserIn"))
        set ts=fs.OpenTextFile(strFile,2,True)
        If PasswordArea.value <> "" Then
            ts.WriteLine PasswordArea.value
            ts.Close
            self.Close 'Pour fermer ce HTA après avoir enregistré le mot de passe comme une variable dans le fichier Userin
        else
            Msgbox "Le mot de passe est vide ! "& Vbcrlf & "SVP entrez de nouveau votre mot de passe",VbExclamation,"Mot de Passe © Hackoo"
            Location.reload(true) 'Pour recharger à nouveau ce HTA
        end if
    End Sub
    '----------------------------------------------------------------------------------------
    Sub PasswordForm()
        Self.document.title = "Mot de Passe © Hackoo"
        Self.document.bgColor = "lightblue"
        ONSCR.InnerHTML="<center><FONT COLOR=""#FFFFFF"" SIZE=""+1"" FACE=""VERDANA,ARIAL,HELVETICA,SANS-SERIF"">Taper votre mot de passe</FONT<br>"_
        &"<input type=""password"" name=""PasswordArea"" size=""20"" onKeyUp=""TextFocus""><P>"_
        &"<input type=""Submit"" STYLE=""HEIGHT:25;WIDTH:110"" value=""OK"" onClick=""SavePassword"">"
    END Sub
    '----------------------------------------------------------------------------------------
    Sub TextFocus
        PasswordArea.Focus 
    End Sub
    '----------------------------------------------------------------------------------------
    </script>
    </body>
    </html>
    :#End
    ::***********************************************************************************************
    :CreateMyVBS
    ::'**********************************************************************************************
    (
    echo. Set fso = CreateObject^("Scripting.FileSystemObject"^)
    echo. Set f=fso.opentextfile^("%~f0",1^)
    echo. a=f.readall
    echo. Set r=new regexp
    echo. r.pattern = "(?:^|(?:\r\n))(?::#Start\r\n)([\s\S]*?)(?:\r\n)(?::#End)"
    echo. Set Matches = r.Execute^(a^)
    echo. If Matches.Count ^> 0 Then Data = Matches^(0^).SubMatches^(0^)
    echo. WriteFileText "%MyHTAFile%",Data
    echo. f.close
    ::'**********************************************************************************************
    echo. 
    echo. Function WriteFileText^(sFile,Data^)
    echo.     Dim objFSO,oTS,sText
    echo.     Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
    echo.     Set oTS = objFSO.CreateTextFile^(sFile,2^)
    echo.     oTS.WriteLine Data
    echo.     oTS.close
    echo.     set oTS = nothing
    echo.     Set objFSO = nothing
    echo. End Function 
    ) > %MyVBSFile%
    ::'***********************************************************************************************

    Bonsoir,

    Ton programme est super sympa et commencer à ressembler à une fenêtre de connexion comme un vrai logiciel. Je voudrais juste te poser 2 questions :
    1. Où est-il possible dans le programme de dire que CE mot de passe est juste et que c'est celui-là qu'il faut taper ?
    2. Y'a t'il possibilité de ne pas avoir la fenêtre DOS qui dit que j'ai tapé le mot de passe .... et qu'il faut que j'appuie sur entrée. En gros, est-ce qu'il y a possibilité de programmer la fenêtre dos pour qu'elle vérifie le mot de passe tapé dans la fenêtre ?

    Merci d'avance et encore bravo pour ton programme !

  11. #11
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut
    Citation Envoyé par gogo7587 Voir le message
    Bonsoir,
    Ton programme est super sympa et commencer à ressembler à une fenêtre de connexion comme un vrai logiciel. Je voudrais juste te poser 2 questions :
    1. Où est-il possible dans le programme de dire que CE mot de passe est juste et que c'est celui-là qu'il faut taper ?
    2. Y'a t'il possibilité de ne pas avoir la fenêtre DOS qui dit que j'ai tapé le mot de passe .... et qu'il faut que j'appuie sur entrée. En gros, est-ce qu'il y a possibilité de programmer la fenêtre dos pour qu'elle vérifie le mot de passe tapé dans la fenêtre ?
    Merci d'avance et encore bravo pour ton programme !

    Tout d'abord je te dois +1
    Ce code est à tester
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    @echo off
    Title Masquer la saisie du mot de passe en utilisant le module du HTABOX by Hackoo 
    mode con cols=75 lines=24 & color 9B
    :askpassword
    echo                  Veuillez Taper votre mot de passe
    Set MyVBSFile=%tmp%\%~n0.vbs
    Set MyHTAFile=%tmp%\%~n0.hta
    Call :CreateMyVBS
    Cscript.exe //NOLOGO %MyVBSFile%
    start /wait mshta.exe "%MyHTAFile%"
    for /f %%i in (%tmp%\userIn) do set "password=%%i"
    cls
    echo               Veuillez confirmer de nouveau votre mot de passe
    Call :CreateMyVBS
    start /wait mshta.exe "%MyHTAFile%"
    for /f %%i in (%tmp%\userIn) do set "rpassword=%%i"
    Del "%MyVBSFile%" & Del "%MyHTAFile%" & Del %tmp%\userIn
    cls
    if not "%password%"=="%rpassword%" (
    color 9C
    echo.
    echo            Les deux mots de passe saisis ne sont pas identiques !
    echo.
    echo.
    Timeout /NOBREAK /T 3 >nul
    cls
    goto askpassword
    ) else (
    color 9A
    echo.           Bravo les deux  mots de passe saisis sont identiques !
    )
    Timeout /NOBREAK /T 3 >nul
    Exit
    ::****************************************************************************************
    :#Start
    <html>
    <head>
    <title>Mot de Passe © Hackoo</title>
    <hta:application id="htaid"
    applicationName="Password"
    border="thin"
    icon="wlrmdr.exe"
    borderStyle="normal"
    caption="yes"
    contextMenu="no"
    maximizeButton="no"
    minimizeButton="yes"
    navigable="yes"
    showInTaskbar="yes"
    singleInstance="yes"
    sysmenu="yes"
    SCROLL="NO" 
    SHOWINTASKBAR="Yes"   
    SELECTION="no"
    MINIMIZEBUTTON="no" 
    >
    </head>
    <META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES"> 
    <BODY TOPMARGIN="1" LEFTMARGIN="1"><CENTER><DIV><SPAN ID="ONSCR"></SPAN></DIV></CENTER></BODY>
    <script language="vbscript">
    '---------------------------------------------------------------------------------------
    Sub Window_OnLoad
        CenterWindow 300,150
        Call PasswordForm()
        Call Parler("Veuillez entrer votre mot de passe")
        Call TextFocus()
    end sub
    '---------------------------------------------------------------------------------------
    Sub CenterWindow(x,y)
        Dim iLeft,itop
        window.resizeTo x,y
        iLeft = window.screen.availWidth/2 - x/2
        itop = window.screen.availHeight/2 - y/2
        window.moveTo ileft,itop
    End Sub
    '----------------------------------------------------------------------------------------
    Sub SavePassword()
        set fs=CreateObject("Scripting.FileSystemObject")
        strFile=fs.GetAbsolutePathName(fs.BuildPath(fs.GetSpecialFolder(2),"UserIn"))
        set ts=fs.OpenTextFile(strFile,2,True)
        If PasswordArea.value <> "" Then
            ts.WriteLine PasswordArea.value
            ts.Close
            self.Close 'Pour fermer ce HTA après avoir enregistré le mot de passe comme une variable dans le fichier Userin
        else
            Msgbox "Le mot de passe est vide ! "& Vbcrlf & "SVP entrez de nouveau votre mot de passe",VbExclamation,"Mot de Passe © Hackoo"
            Location.reload(true) 'Pour recharger à nouveau ce HTA
        end if
    End Sub
    '----------------------------------------------------------------------------------------
    Sub PasswordForm()
        Self.document.title = "Mot de Passe © Hackoo"
        Self.document.bgColor = "lightblue"
        ONSCR.InnerHTML="<center><FONT COLOR=""#FFFFFF"" SIZE=""+1"" FACE=""VERDANA,ARIAL,HELVETICA,SANS-SERIF"">Taper votre mot de passe</FONT<br>"_
        &"<input type=""password"" name=""PasswordArea"" size=""20"" onKeyUp=""TextFocus""><P>"_
        &"<input type=""Submit"" STYLE=""HEIGHT:25;WIDTH:110"" value=""OK"" onClick=""SavePassword"">"
    END Sub
    '----------------------------------------------------------------------------------------
    Sub TextFocus
        PasswordArea.Focus 
    End Sub
    '----------------------------------------------------------------------------------------
    Sub Sleep(MSecs)' Fonction pour faire une pause car wscript.sleep ne marche pas dans un HTA
       Set fso = CreateObject("Scripting.FileSystemObject")
       Dim tempFolder : Set tempFolder = fso.GetSpecialFolder(2)
       Dim tempName : tempName = "Sleeper.vbs"
       If Fso.FileExists(tempFolder&"\"&tempName)=False Then
          Set objOutputFile = fso.CreateTextFile(tempFolder&"\"&tempName, True)
          objOutputFile.Write "wscript.sleep WScript.Arguments(0)"
          objOutputFile.Close
       End If
       CreateObject("WScript.Shell").Run tempFolder&"\"&tempName &" "& MSecs,1,True
     '----------------------------------------------------------------------------------------
    End Sub
    Sub Parler(Message)
    Set Sound = CreateObject("WMPlayer.OCX.7")
    Sound.URL = "http://translate.google.com/translate_tts?tl=fr&q=" & Message
    Sound.Controls.play
    Do while Sound.currentmedia.duration = 0
       Sleep 100
    loop
    Sleep (int(Sound.currentmedia.duration)+1)*1000
    End Sub
    ::'***********************************************************************************************
    </script>
    </body>
    </html>
    :#End
    ::***********************************************************************************************
    :CreateMyVBS
    ::'**********************************************************************************************
    (
    echo. Set fso = CreateObject^("Scripting.FileSystemObject"^)
    echo. Set f=fso.opentextfile^("%~f0",1^)
    echo. a=f.readall
    echo. Set r=new regexp
    echo. r.pattern = "(?:^|(?:\r\n))(?::#Start\r\n)([\s\S]*?)(?:\r\n)(?::#End)"
    echo. Set Matches = r.Execute^(a^)
    echo. If Matches.Count ^> 0 Then Data = Matches^(0^).SubMatches^(0^)
    echo. WriteFileText "%MyHTAFile%",Data
    echo. f.close
    ::'**********************************************************************************************
    echo. 
    echo. Function WriteFileText^(sFile,Data^)
    echo.     Dim objFSO,oTS,sText
    echo.     Set objFSO = CreateObject^("Scripting.FileSystemObject"^)
    echo.     Set oTS = objFSO.CreateTextFile^(sFile,2^)
    echo.     oTS.WriteLine Data
    echo.     oTS.close
    echo.     set oTS = nothing
    echo.     Set objFSO = nothing
    echo. End Function 
    ) > %MyVBSFile%
    ::'***********************************************************************************************

  12. #12
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut [BAT] Remplacer la saisie du mot de passe par des *
    Bon vu que j'avais un peu de temps voici la version 100% BAT améliorée, qui gère
    l'utilisation de la touche effacer, et qui compte automatiquement la longueur du MDP :

    Maintenant pour les fioritures et l'Interface utilisateur à vous d'adapter

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    ::By SachaDee - 2015
     
    @echo off&cls
     
    ::Le Mot de Passe
    set "$Mdp=toto1234"
     
    ::La longeur du Mot de passe
    set $Long=-1
    for /F "delims=" %%c in ('cmd /D /U /C echo %$Mdp% ^| find /V ""') do (set /a $Long+=1)
     
    ::Les autres variables
    set "$l="
    set "$l1="
    set "$C=0"
     
     
    :test
    if %$c%==%$Long% goto:Pastrouve
    set "$T="
    cls&echo Entrer votre MDP : %$l1%
    For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined $T Set "$T=%%#"
     
    set $testenter=%$T:~-1%
    if not defined $Testenter goto:Pastrouve
     
    if %$T:~-1%== (
     if not %$C%==0 (
      Set "$l=%$l:~0,-1%"
      set "$l1=%$l1:~0,-1%"
      set /a $C-=1)
     ) else (
      Set "$l=%$l%%$T:~-1%"
      set "$l1=%$l1%*"
      set /a $C+=1)
     
    if "%$l%"=="%$Mdp%" goto:trouve
    goto:test
     
    :trouve
    echo bravo
    exit/b
     
    :Pastrouve
    echo Pas trouv‚
    exit/b

    La même chose en utilisant Powershell. Beaucoup plus propre (sans clignotement) et plus court :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ::By SachaDee - 2015
    @echo off&cls
    set $MDP=toto1234
    for /f "delims=" %%a in ('powershell -c "$rep=read-host Entrer_votre_MDP -AsSecureString;$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($rep));write $password"') do set $rep=%%a
    if %$MDP%==%$rep% (echo Bravo) else (echo MDP incorrect)
    exit/b
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  13. #13
    Invité
    Invité(e)
    Par défaut Merci beaucoup !
    Citation Envoyé par sachadee Voir le message
    Bon vu que j'avais un peu de temps voici la version 100% BAT améliorée, qui gère
    l'utilisation de la touche effacer, et qui compte automatiquement la longueur du MDP :

    Maintenant pour les fioritures et l'Interface utilisateur à vous d'adapter

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    ::By SachaDee - 2015
     
    @echo off&cls
     
    ::Le Mot de Passe
    set "$Mdp=toto1234"
     
    ::La longeur du Mot de passe
    set $Long=-1
    for /F "delims=" %%c in ('cmd /D /U /C echo %$Mdp% ^| find /V ""') do (set /a $Long+=1)
     
    ::Les autres variables
    set "$l="
    set "$l1="
    set "$C=0"
     
     
    :test
    if %$c%==%$Long% goto:Pastrouve
    set "$T="
    cls&echo Entrer votre MDP : %$l1%
    For /F "delims=" %%# In ('Xcopy /W "%~f0" "%~f0" 2^>Nul') Do If Not Defined $T Set "$T=%%#"
     
    set $testenter=%$T:~-1%
    if not defined $Testenter goto:Pastrouve
     
    if %$T:~-1%== (
     if not %$C%==0 (
      Set "$l=%$l:~0,-1%"
      set "$l1=%$l1:~0,-1%"
      set /a $C-=1)
     ) else (
      Set "$l=%$l%%$T:~-1%"
      set "$l1=%$l1%*"
      set /a $C+=1)
     
    if "%$l%"=="%$Mdp%" goto:trouve
    goto:test
     
    :trouve
    echo bravo
    exit/b
     
    :Pastrouve
    echo Pas trouv‚
    exit/b

    La même chose en utilisant Powershell. Beaucoup plus propre (sans clignotement) et plus court :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ::By SachaDee - 2015
    @echo off&cls
    set $MDP=toto1234
    for /f "delims=" %%a in ('powershell -c "$rep=read-host Entrer_votre_MDP -AsSecureString;$password = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($rep));write $password"') do set $rep=%%a
    if %$MDP%==%$rep% (echo Bravo) else (echo MDP incorrect)
    exit/b
    Merci beaucoup ! C'est tout à fait ce que je voulais ! Mille fois merci !
    Au plaisir !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Fonction qui remplace les caractères entrés par des étoiles (*)
    Par Dr.Mimo dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2012, 21h51
  2. [Turbo Pascal] Remplacer des lettres saisies par des points
    Par aristideman dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 11/03/2012, 19h10
  3. [RegEx] Extraire des nombres séparés par des caractères spéciaux
    Par GouKen dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 16h49
  4. Réponses: 5
    Dernier message: 26/11/2006, 17h32
  5. [XSLT] Remplacer par des caractères spéciaux
    Par OXyGN dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 29/07/2005, 17h30

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