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 :

Cacher les lignes de code et compilation [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Par défaut Cacher les lignes de code et compilation
    Bonjour,
    Je débute en programmation et j'ai programmé un petit logiciel en batch mais j'ai quelques problème.
    J'aimerais que le code qui est tapé au cours du processus ne soit pas visible et pas non plus invisible mais remplacé pas des symboles.
    J'aimerais aussi ajouter une fonction qui permet de changer le mot de passe depuis la console en vue d'une compilation .exe
    Dernière chose j'aimerais que tout soit compiler en un seul .exe si possible.
    Je sais je suis exigent
    voici le code du logiciel:


    Code : 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
    Quote: cls 
    @ECHO OFF 
    title Files protect
    if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK 
    if NOT EXIST fantome goto MDLOCKER 
    :CONFIRM 
    echo voulez vous verrouiller le dossier fantome (O/N) 
    set/p "cho=>" 
    if %cho%==o goto LOCK 
    if %cho%==O goto LOCK 
    if %cho%==n goto END 
    if %cho%==N goto END 
    echo mauvais choix tapez O pour oui et N pour non. 
    pause
    goto CONFIRM 
    :LOCK 
    ren fantome "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    echo dossier verrouillé 
    pause
    goto End 
    :UNLOCK 
    echo Entrez le mot de passe pour accèder au dossier fantome 
    set/p "pass=>" 
    if NOT %pass%== password goto FAIL 
    attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" fantome
    echo dossier déverrouillé 
    pause
    goto End 
    :FAIL 
    echo mot de passe invalide 
    pause
    goto UNLOCK 
    :MDLOCKER 
    md fantome 
    echo dossier fantome créé 
    pause
    goto End 
    :End

    et le début du code pour modifier le mot de passe:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @ECHO OFF 
    :CHANGE
    echo Entrez le mot de passe actuel
    set/p "pass=>" 
    if NOT %pass%== password goto BOUCLE
    echo Entrez le nouveau mot de passe
    
    echo Confirmez ce mot de passe
    
    :BOUCLE
    echo Mauvais mot de passe
    goto CHANGE


    Merci d'avance.
    reremoki

  2. #2
    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
    Par défaut
    Salut,

    Je te propose ici une solution intéressante qui utilise la commande choice.
    La concaténation des valeurs asciis composant les lettres du mot de passe est testé. Dans cette exemple le mot de passe est "code" qui correspond à la valeur "31545" (c=3 o=15 d=4 e=5). Avec la touche Q tu sort (dans cette exemple). Ceci te permet de n'avoir aucune relation apparente entre la valeur et le mot de passe, si tu veux sauvegarder le mot de passe dans un fichier (en cas de compilation). Tu peux, pour encore plus de securité, créer un petit algorithme de traitement de la valeur.

    Tu peux insérer un compteur qui compte le nombre de caractères entrés et qui sort du programme après x entré clavier.

    Code : 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
    @echo off
    rem Par SachaDee 16-04-2013
    
    set $aff=
    set saisie=
    cls
    
    REM LE MOT DE PASSE EST  : CODE
    REM EN ASCII = 3 15 4 5 (31545)
    
    set password=31545
    
    rem Dans le cas où l'on veut récupèrer le code dans un fichier
    rem set /p password=<code.dat
    
    REM Q (17) pour sortir
    
    echo ENTREZ VOTRE MOT DE PASSE (Q POUR SORTIR) :
    
    :test
    CHOICE /C:abcdefghijklmnopqrstuvwxyz>nul
    set $aff=# %$aff%
    cls
    echo ENTREZ VOTRE MOT DE PASSE (Q POUR SORTIR) :&echo.
    echo %$aff%
    if %errorlevel%==17 goto :end
    set saisie=%saisie%%errorlevel%
    if /i %saisie%==%password% goto :code_ok
    echo -%saisie%-
    goto :test
    
    :code_ok
    
    echo le code est ok
    
    :end
    echo fin
    Amicalement

  3. #3
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    salut,

    J'ai vu ton déterrage

    Mais dans cet exemple si au lieu de code on tape par exemple caede logiquement ça marche aussi. Les risques de collision sont quand même nombreux, ainsi mieux qu'une concaténation, tu devrais utiliser un checksum ... Autre problème mineur, choice n'est pas disponible en natif sur XP.

    mais +1 quand même, tu le mérites

  4. #4
    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
    Par défaut
    Effectivement,

    comme Minnesota le fait remarquer le code est perfectible.
    On pourrait traiter la valeur avec les espaces pour éviter ce problème.

    Et si tu travailles sous xp tu peux télecharger la commande choice

    Amicalement

    (PS : merci Minnesota pour le +1 )

  5. #5
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Avril 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Avril 2013
    Messages : 12
    Par défaut
    Bon.
    J'ai rajouté des chose a mon code mais j'ai toujours des problèmes.
    Je ne sais plus comment récupérer une donné d'un .txt dans un .bat.
    Je m'explique:
    Mon mot de passe est maintenant stocké dans un .txt hors je ne sais plus comment le récupérer pour mon .bat
    Mon autre problème est toujours le même je veut remplacer le mot de passe par des '*' ou tout autre symbole quand il est tapé et ça sans avoir besoin d’installer autre chose (comme la commande choice pour xp) mais en introduisant un autre code si besoin.
    Cependant merci pour vos réponses rapides.
    Voici mon code:
    Code : 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
    Quote: cls 
    @ECHO OFF 
    title Files protect
    if NOT EXIST "Control panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto MDPASS
    :SUITE
    if EXIST "Control Panel.{45D8FBA-AD25-11D0-98A8-0800361B1103}" goto UNLOCK 
    if NOT EXIST fantome goto MDLOCKER 
    :MDPASS
    echo Entrez un mot de passe
    Set/p pass1=
    echo %pass1%>pass.txt
    ren pass.txt "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    echo Mot de passe enregistré
    pause
    goto SUITE
    :MDLOCKER 
    md fantome 
    echo dossier fantome créé 
    pause
    goto End 
    :CONFIRM 
    echo voulez vous verrouiller le dossier fantome (O/N) 
    echo ou changer le mot de passe (C)
    set/p "cho=>" 
    if %cho%==c goto VERIF
    if %cho%==C goto VERIF
    if %cho%==o goto LOCK 
    if %cho%==O goto LOCK 
    if %cho%==n goto END 
    if %cho%==N goto END 
    echo mauvais choix tapez O pour oui et N pour non. 
    pause
    goto CONFIRM 
    :LOCK 
    ren fantome "Control Panel.{45D8FBA-AD25-11D0-98A8-0800361B1103}" 
    attrib +h +s "Control Panel.{45D8FBA-AD25-11D0-98A8-0800361B1103}" 
    echo dossier verrouillé 
    pause
    goto End 
    :UNLOCK 
    
    echo Entrez le mot de passe pour accèder au dossier fantome 
    set/p "pass=>" 
    attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" pass.txt
    if NOT %pass%== goto FAIL 
    rem 1er problème
    ren pass.txt "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" 
    attrib -h -s "Control Panel.{45D8FBA-AD25-11D0-98A8-0800361B1103}" 
    ren "Control Panel.{45D8FBA-AD25-11D0-98A8-0800361B1103}" fantome
    echo dossier déverrouillé 
    pause
    goto End 
    :FAIL 
    echo mot de passe invalide 
    pause
    goto UNLOCK 
    :VERIF
    echo Entrez le mot de passe actuel
    editv32 -m
    set/p "pass=>" 
    attrib -h -s "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" 
    ren "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" pass
    if NOT %pass%== goto FAIL
    rem 2e problème 
    ren pass "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" 
    attrib +h +s "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" 
    CLS
    goto CHANGE
    :CHANGE
    echo Entrez le nouveau mot de passe
    SET /p REPONSE=
    echo Comfirmer le mot de passe
    SET /P REPONSE2=
    IF NOT '%REPONSE2%' == '%REPONSE%' GOTO ERREUR
    attrib -h -s "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" 
    ren "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" pass
    echo %reponse2%>pass.txt
    ren pass "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" 
    attrib +h +s "Control Panel.{645FF040-5081-101B-9F08-00AA002F954E}" 
    echo Mot de passe changé
    pause
    GOTO END
    :BOUCLE
    echo Mauvais mot de passe
    CLS
    goto VERIF
    :ERREUR
    echo Vous avez mal recopié le mot de passe
    CLS
    goto CHANGE
    :END
    P.S:je suis sous xp mais j'aimerais que ça marche sous vista ou au moins sous seven.
    Merci

  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
    Par défaut
    Salut,

    Tu peux inclure dans ton batch la creation d'un reply.com (vu que tu ne veux pas installer CHOICE sur ton xp). Technique emprunter à "STRYK" que je salut
    au passage. ATTENTION LES VALEURS DE %ERRORLEVEL% NE SONT PAS ES MÊMES QU'AVEC "CHOICE".
    Code : 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
    @echo off
    
    :: ######################## --- REPLY.COM --- ########################
    goto :NEXT_CREAT_REPLY
    n reply.com
    e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
    e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
    e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
    rcx
    002E
    w0
    q
    :NEXT_CREAT_REPLY
    debug < "%~f0" >nul
    :: ###################################################################
    
    set $aff=
    set saisie=
    cls
    
    REM LE MOT DE PASSE EST  : CODE
    REM EN ASCII = 99 111 100 101 (99111100101)
    
    set password=99111100101
    
    
    REM Q (113) pour sortir
    
    echo ENTREZ VOTRE MOT DE PASSE (Q POUR SORTIR) :
    
    :test
    
    call reply.com
    set $aff=# %$aff%
    cls
    echo ENTREZ VOTRE MOT DE PASSE (Q POUR SORTIR) :&echo.
    echo %$aff%
    if %errorlevel%==113 goto :end
    set saisie=%saisie%%errorlevel%
    if /i %saisie%==%password% goto :code_ok
    echo -%saisie%-
    goto :test
    
    :code_ok
    
    echo le code est ok
    
    :end
    echo fin
    pour récuperer une valeur dans un fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set /p password=<tonfichier
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f %%a in (tonfichier) do (set password=%%a)
    Amicalement

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

Discussions similaires

  1. Cacher les lignes mais pas la légende
    Par esteban dans le forum BIRT
    Réponses: 1
    Dernier message: 12/08/2008, 11h33
  2. Cacher les lignes à blanc sur un formulaire?
    Par mishkai dans le forum IHM
    Réponses: 1
    Dernier message: 08/08/2008, 11h03
  3. Créer des reperes sur les lignes de code
    Par alafu dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2007, 14h44
  4. Cacher les lignes de mon tableau
    Par Kyvin dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/09/2006, 16h11
  5. Comptabiliser les lignes de code d'un projet
    Par JPigKeud dans le forum Qualimétrie
    Réponses: 5
    Dernier message: 07/01/2005, 14h09

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