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

Programmation et administration système Perl Discussion :

Test du nouveau mot de passe avec metacaractère


Sujet :

Programmation et administration système Perl

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut Test du nouveau mot de passe avec metacaractère
    Bonjour,


    J'ai fais un script en Perl GTK pour que mes utilisateurs puissent changer le mot de passe de leur session sur le LDAP. Pour cela il y a une phase de test, dont les restrictions sont les suivantes : 9 caractères dont un chiffre et une masjucule.

    J'aimerai mettre une condition supplémentaire avec un méta caractère (plus secure )

    J'ai donc écrit la condition comme ceci (Extrait):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $entry_text2 = $entry2->get_text() ;
    my $entry_text3 = $entry3->get_text() ;
    my $entry_length = length($entry_text2);
    if (("$entry_text2" eq "$entry_text3") && ( "$entry_text2" =~ "[A-Z]{1}" ) && ( "$entry_text2" =~ "[0-9]{1}" ) && ("$entry_length" > 8 )){
            my $passwd = Expect->spawn("passwd $user") or die "Cannot spawn passwd $user: $!\n";
            }
    Comment écrire la chaîne entre crochet après un grep pour identifier les caractères dans la variables $entry_text2.

    D'avance merci.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Qu'est ce que tu entends exactement par méta caractère? un caractère qui ne soit ni une lettre ni un chiffre?

    Moi, j'écrirai plutôt ça:
    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (($entry_text2 eq $entry_text3) && ($entry_text2 =~ /^(?=[^A-Z]*[A-Z])(?=[^0-9]*[0-9])(?=[^\W_]*[\W_]).{9,}$/)) {
        my $passwd = Expect->spawn("passwd $user") or die "Cannot spawn passwd $user: $!\n";
    }

    explication:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (?=      # lookahead: teste si la position actuelle (le début de la chaîne ^ dans le cas présent) est suivie par:
    [^A-Z]*  # tout sauf les lettre majuscules zéro ou plusieurs fois
    [A-Z]    # et une lettre majuscule
    )
    les deux autres lookaheads fonctionnent exactement sur le même principe. Ensuite .{9,} s'assure qu'il y a au moins neuf caractères dans la chaîne. J'utilise les ancres de début et de fin de chaîne (^ et $) pour être sûr que la pattern décrit bien toute la chaîne. À noter que s'il n'y a pas de limite de taille du mot de passe, l'ancre de fin de chaîne n'est pas nécessaire, (celle de début de chaîne reste toujours utile à des fins d'optimisation).

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Qu'est ce que tu entends exactement par méta caractère? un caractère qui ne soit ni une lettre ni un chiffre?
    J'entend un # ou un point d'exclamation ou d’interrogation etc ...

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas compris ce que tu cherches à faire exactement et de quoi tu parles quand tu parles de chaîne entre crochets, mais je te signale à toutes fins utiles que:

    ne reconnaîtra que des capitales (lettres majuscules). C'est peut-être ce que tu recherches, mais autant le signaler au cas où...

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Dans ce cas, tu peux remplacer la dernière assertion (?=[^\W_]*[\W_]) avec les "métacaractères" que tu souhaites, exemple:

    (?=[^?!#@]*[?!#@])

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Par défaut
    Ok je viens de faire des petits essais
    Citation Envoyé par CosmoKnacki Voir le message

    Moi, j'écrirai plutôt ça:
    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (($entry_text2 eq $entry_text3) && ($entry_text2 =~ /^(?=[^A-Z]*[A-Z])(?=[^0-9]*[0-9])(?=[^\W_]*[\W_]).{9,}$/)) {
        my $passwd = Expect->spawn("passwd $user") or die "Cannot spawn passwd $user: $!\n";
    }
    J'ai donc réécrit un autre petit script de manière simplifiée car toutes les ligne liées au GTK polluaient la lecture et donc apparemment sur la première version, il faut déjà mettre un meta caractère sinon je suis en FALSE dans la condition:
    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
    #!/usr/bin/perl -w  
    use strict;
     
    print "Entrez nouveau  mot de passe : ";
    my $password1 = <STDIN>;
    chomp($password1);
     
    print "Confirmer le mot de passe : ";
    my $password2 = <STDIN>;
    chomp($password2);
     
    my $entry_length = length($password2);
     
    if (($password1 eq $password2) && ($password2 =~ /^(?=[^A-Z]*[A-Z])(?=[^0-9]*[0-9])(?=[^\W_]*[\W_]).{8,}$/)) {
    print "\n\n OK ! Mot de passe Conforme : $password2 \n\n\n" ;
    } else {
    print "\n\n KO ! Mot de passe non conforme verifiez \nPremier mot de passe entré : $password1\nDeuxieme mot passe entré: $password2 \n \n \n ";
    }
    Je continue à faire des essais
    Encore merci

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

Discussions similaires

  1. [MySQL] [débutante] test sur le mot de passe avec smd5
    Par Lyna31 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/03/2007, 17h04
  2. Réponses: 2
    Dernier message: 17/09/2006, 19h21
  3. Nouveau mot de passe refusé
    Par al1_24 dans le forum Windows Serveur
    Réponses: 21
    Dernier message: 12/09/2006, 13h39
  4. gestion des mot de passe avec Access
    Par cyberbiker dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/09/2006, 15h42
  5. problème de MOT DE PASSE avec mysql
    Par u_brush_u dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/07/2006, 12h35

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