Coder une fonction pour savoir si le mot de passe est bon
vincent3360
Messages postés27Date d'inscriptionvendredi 28 mai 2010StatutMembreDernière intervention13 mai 2011
-
10 mai 2011 à 11:34
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 2013
-
13 mai 2011 à 09:55
Bonjour à tous
Voià je vous explique mon problème :
J'ai crée des classe en c# et maintenant j'aimerais créer une fonction qui permet de vérifier si le mot de passe utiliser par l'utilisateur est bon et celà lui renverrait "mot de passe ok , connexion résussie " ou si il se trompe "mot de passe incorrecte , connexion échouée "
Car actuellement l'utilisateur peut se connecter avec n'importe quelle mot de passe et même en écrivant n'importe quoi dans la texteBoxMotDePasse.
Voilà ce que j'ai réaliser pour un premier switch :
//adresse Ip
string adresse_Ip=textBoxAdresseIp.Text;
//le login
string login = textBoxLogin.Text;
//mot de passe
string mdp=textBoxMotDePasse.Text;
// pour savoir si le mot de passe est le bon :
try
{
//essayer :
//Créer un nouvel objet CequipementReseaux avec en parametre
//l'adresse ip distante et l'identifiant.
EquipementRéseau = new CEquipementRéseau(adresse_Ip,login,mdp);
//appel la fonction Connecter de la class CequipementReseaux
lbTexteRetour.Text = EquipementRéseau.Connecter();
// J'utilise la méthode Mode de Passe de la Classe CEquipement réseau
string truc = EquipementRéseau.MotDePasse();
//pour savoir si le mot de passe est le bon mot de passe
// string hp = ("friend");
//string cisco = ("mdproot");
if (truc.Equals("friend"))
{
lbTexteRetour.Text = ("Mot de Passe OK, Connexion réussie");
}
// else if (truc.Equals(cisco))
//lbTexteRetour.Text = ("Mot de Passe OK, Connexion réussie");
else
{
lbTexteRetour.Text = ("Mot de Passe Incorrecte, Connexion Echouée");
Or ce que j'aimerais faire c'est que cette fonction soit utilisable pour tous les switch . J'ai cherché de mon coté mais je me suis perdu et c'est pour cette raison que je viens demandé votre aide .
Merci d'avance
Je vous passe tout le code complet par précaution :
form1.cs
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using CREPS_VLANS;
using MinimalisticTelnet;
using System.Text;
//adresse Ip
string adresse_Ip=textBoxAdresseIp.Text;
//le login
string login = textBoxLogin.Text;
//mot de passe
string mdp=textBoxMotDePasse.Text;
// pour savoir si le mot de passe est le bon :
try
{
//essayer :
//Créer un nouvel objet CequipementReseaux avec en parametre
//l'adresse ip distante et l'identifiant.
EquipementRéseau = new CEquipementRéseau(adresse_Ip,login,mdp);
//appel la fonction Connecter de la class CequipementReseaux
lbTexteRetour.Text = EquipementRéseau.Connecter();
// J'utilise la méthode Mode de Passe de la Classe CEquipement réseau
string truc = EquipementRéseau.MotDePasse();
//pour savoir si le mot de passe est le bon mot de passe
// string hp = ("friend");
//string cisco = ("mdproot");
if (truc.Equals("friend"))
{
lbTexteRetour.Text = ("Mot de Passe OK, Connexion réussie");
}
// else if (truc.Equals(cisco))
//lbTexteRetour.Text = ("Mot de Passe OK, Connexion réussie");
else
{
lbTexteRetour.Text = ("Mot de Passe Incorrecte, Connexion Echouée");
private void btDéconnecter_Click(object sender, System.EventArgs e)
{
//appel la fonction Deconnecter de la class CequipementReseaux
lbTexteRetour.Text = EquipementRéseau.Deconnecter();
}
private void btExécuterCommande_Click(object sender, System.EventArgs e)
{
try
{
//appel la fonction Executer_Commande de la class CequipementReseaux
//passage du contenu du label 'commande' en parametre.
lbTexteRetour.Text = EquipementRéseau.Executer_Commande(textBoxEntrerCommande.Text);
}
//affichage d'un message d'erreur si une exception est produite
catch (Exception f)
{
lbTexteRetour.Text = (f.ToString());
}
}
}
}
ma classe CEquipementRéseaux.cs
using System;
using MinimalisticTelnet;
using TestTelnet;
namespace CREPS_VLANS
{
///
/// Description résumée de CEquipementRéseau.
///
public class CEquipementRéseau
{
// attributs de la classe :
public CEquipementRéseau (string adresse_IP , string l , string mdp)
{
adresseIP=adresse_IP;
login=l;
mot_de_passe=mdp;
}
public string Connecter()
{
//numero du port
int NumeroDePort = 23;
//creation d'un nouvel object TelnetConnection
TC = new TelnetConnection(adresseIP, NumeroDePort);
string s = TC.Login(login, mot_de_passe,300);
//pour test en debugage
Console.Write(s);
// server output should end with "$" or ">",
//otherwise the connection failed
// enlever espaces à la fin
string prompt = s.TrimEnd();
// prendre dernier caractère
while (netStream.DataAvailable)
{
int input = tcpSocket.GetStream().ReadByte();
switch (input)
{
case -1 :
break;
case (int)Verbs.IAC:
// interpret as command
int inputverb = tcpSocket.GetStream().ReadByte();
if (inputverb == -1) break;
switch (inputverb)
{
case (int)Verbs.IAC:
//literal IAC = 255 escaped, so append char 255 to string
sb.Append(inputverb);
break;
case (int)Verbs.DO:
case (int)Verbs.DONT:
case (int)Verbs.WILL:
case (int)Verbs.WONT:
// reply to all commands with "WONT", unless it is SGA (suppres go ahead)
int inputoption = tcpSocket.GetStream().ReadByte();
if (inputoption == -1) break;
tcpSocket.GetStream().WriteByte((byte)Verbs.IAC);
if (inputoption == (int)Options.SGA )
tcpSocket.GetStream().WriteByte(inputverb == (int)Verbs.DO ? (byte)Verbs.WILL:(byte)Verbs.DO);
else
tcpSocket.GetStream().WriteByte(inputverb == (int)Verbs.DO ? (byte)Verbs.WONT : (byte)Verbs.DONT);
tcpSocket.GetStream().WriteByte((byte)inputoption);
break;
default:
break;
}
break;
default:
sb.Append( (char)input );
break;
}
}
}
}
}
vincent3360
Messages postés27Date d'inscriptionvendredi 28 mai 2010StatutMembreDernière intervention13 mai 20112 11 mai 2011 à 09:28
voilà , je viens de coder la fonction que je voulais faire mais quand je le connecte à mon switch alors que je rentre le mot de passe correcte il me met connexion échouée
voilà ce que je viens de réalsiser
Regex Passe = new Regex("^[a-z-A-Z0-9_.-]+@{1}[a-z-A-Z0-9_.-]{2,}\\.[a-z-A-Z0-9_.-]{2,}$");
// cette ligne véréfie si le champs textBoxMotDePasse n'est pas vide
if (textBoxMotDePasse.Text != "" )
{
if ( Passe.IsMatch(textBoxMotDePasse.Text.ToString()))
{
lbTexteRetour.Text = ("Mot de Passe OK, Connexion réussie");
}
// else if (truc.Equals(cisco))
//lbTexteRetour.Text = ("Mot de Passe OK, Connexion réussie");
else
{
lbTexteRetour.Text = ("Mot de Passe Incorrecte, Connexion Echouée");
}
}
else
{
lbTexteRetour.Text = ("Veuillez entrer un nouveau mot de passe ") ;
}
}
NSUADI
Messages postés540Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention 1 février 20132 10 mai 2011 à 18:44
Salut,
l'important pour ton problème,c'est de savoir de quoi sera composé les mots de passe valides,uniquement composés de lettres ou de chiffres ou des deux,...
après avoir répondu à cette question alors les expressions régulières(Regex) devraient t'aider sans soucis.
Bonne continuation!
Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 12 mai 2011 à 15:15
Salut,
déjà je suis pas sûr de comprendre le problème lorsque je lis la première réponse, que tu as suivie. Veux-tu savoir si le MdP est valide ou si sa forme est valide ? Je vois pas comment les expressions régulières pourraient t'aider dans le premier cas (ce qui pourtant me semblait être ta demande).
A noter que le pattern que tu utilises semble correspondre à la validation du format d'une adresse mail.
vincent3360
Messages postés27Date d'inscriptionvendredi 28 mai 2010StatutMembreDernière intervention13 mai 20112 13 mai 2011 à 06:32
En faite si vous préférez , il faudrait que je coder une fonction qui permet de dire à l'utilisateur quand il rentre le Mdp qu'il est correct et par conséquent la connexion a réussie
Si l'utilisateur rentre un mauvais de mot de passe alors dans ce cas là , il ne pourra pas se connecter et par conséquent connexion échouée
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 13 mai 2011 à 08:41
Re,
en fait tu cherches à faire un module de connexion, donc.
alors il faut savoir où et comment sont enregistrés tes mots de passes.
on ne peut pas savoir si un MdP est bon sans pouvoir le comparer à l'original (ou au hash de l'original)
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 13 mai 2011 à 09:55
C'est pas vraiment ce que je demandais, non ^^
En fait il faudrait savoir où sont sauvegarder les MdP pour pouvoir valider ou non celui que l'utilisateur saisi.
J'ai dû regarder un peu ton code du coup (c'est long ... :p).
Apparemment tu n'as aucune idée a priori sur les MdP (aucun endroit où ils sont référencés pour validation). Ta seule solution est donc de voir si TelNetConnection.Login() s'est bien déroulé.