Gambas France BETA


Pas de compte ? Incription

Projet avec mot de passe

Ce sujet est résolu.

1
AuteurMessages
Foromus#1 Posté le 5/7/2015 à 08:47:12
Bonjour à tous,

Histoire de m'amuser, je voudrais conditionner le lancement d'un projet, avec un mot de passe.
En fait, je l'ai fait, ça marche, cela dit, mon mot de passe d'origine doit forcément être "quelque part", aussi, l'ai-je mis dans un simple fichier texte, quelque part parmi mon fatras de fichiers. Pas très convaincant comme système...
Donc, et en clair, je voudrais que ce mot de passe enregistré, le soit : d'une façon un peu moins voyante, et surtout, un peu plus "chiffrée", si possible...
Il est possible que cette fonction existe déjà dans Gambas, mais je ne sais pas où la trouver, c'est pourquoi je fais appel aux spécialistes (s'ils ne sont pas tous "au soleil")...
NB J'utilise la version 3.7.1 de Gambas
Reivillo#2 Posté le 5/7/2015 à 09:25:50
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonjour Foromus.

Une idée comme ça:
Tu utilises le hachage md5sum, que tu mets ou tu veux.
Quand tu entres ton mot de passe, tu le hache et compare avec celui que ta précédemment enregistré.

Reivillo,
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Gambette#3 Posté le 5/7/2015 à 10:02:46
Bonjour,

il y a le composant gb.crypt sous Gambas qui permet d'encrypter très facilement en utilisant différents algorithmes. DES, MD5, SHA256 ou SHA512

par exemple :
mdp = Crypt.SHA512(TextBox1.text) ou mdp = Crypt.MD5(TextBox1.text)
Foromus#4 Posté le 6/7/2015 à 18:01:27
Bonjour à tous,

Donc, avec le composant Crypt, je peux crypter !.. (ce que je me doutais un peu, sans savoir lequel, ni même s'il existait). Mais je n'arrive pas à aller plus loin. Si j'ai un peu compris, on peut faire une comparaison en utilisant la fonction Chek (Static Function Check(Password As String, Crypt As String) As Boolean), mais je ne vois pas trop comment faire, j'ai tourné le truc en plusieurs sens, sans trouver le bon.

En résumé :
J'ai un mot de passe :"1234".
Passé par Crypt, il devient "aiuroieuaziu41".
Je colle ce truc "aiuroieuaziu41", dans un fichier.
Au niveau utilisation, au lancement, je vais aller lire le fichier et charger la variable MemoPass (avec la valeur "aiuroieuaziu41").
Ensuite, je rentre, dans une textbox, "MomPass".
Donc, "MomPass" n'est pas chiffré, il est en clair.
Je suppose donc, qu'avec la fonction Chek, celle-ci devrait me permettre de comparer la valeur de MomPass avec celle de MemoPass. Si c'est identique, j'obtiens False, différent, j'obtiens True. Après, dois-je prévoir un booleen pour récupérer ce résultat, résultat qui permettra de continuer le programme ou pas ?
Voilà, j'espère avoir été clair !
Merci pour tous ces renseignements.
Gambette#5 Posté le 6/7/2015 à 19:01:06
Salut Foromus,

j'ai mis un petit projet dans la forge pour que tu comprennes.
Foromus#6 Posté le 6/7/2015 à 21:02:20
Re,

J'avoue ne pas bien comprendre...
Ce qui m'intéresse, c'est de crypter le mot de passe, lequel sera dans le fichier. Pas celui que j'entre dans la textbox.
Si, au lieu de faire :
1
IF NOT Crypt.Check(memo, Crypt.MD5(TextBox1.text)) THEN

je fais :
1
IF TextBox1.text = memo THEN

le résultat est exactement le même ! Et en plus simple...
Si je mets dans un fichier le mot en clair que je dois rentrer, où est la sécurité ?..

J'ai bien essayé d'inverser memo et Crypt.MD5(TextBox1.text dans la formule, mais ça coince...
Gambette#7 Posté le 6/7/2015 à 22:58:34
J'ai peut-être mal compris ton souhait.
Voilà un autre exemple de cryptage.
Reivillo#8 Posté le 7/7/2015 à 06:22:03
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Tiens, v'la un exemple de Code en simple Hachage md5sum.
( ou voir aussi: sha1sum, sha256sum, sha384sum, sha512sum )
Prérequis, pour l'Exemple:
Le Mot de passe est: Foromus
Et un Objet Text.Box
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
PRIVATE $sMyPass AS STRING = "683ede76b66cc02950fe093dd7860cf8"
PRIVATE $sXpass AS STRING

PUBLIC SUB Form_Open()

ME.Center
TextBox1.text = "Entrez votre pass..."
TextBox1.tag = 0

END

PUBLIC SUB TextBox1_KeyPress()

WITH TextBox1
IF .tag = 0 THEN
.Text = ""
.tag = 1
ENDIF
.Password = TRUE
IF NOT (Key.Code = Key["Return"]) THEN RETURN
.Password = FALSE
SHELL "echo " & .text & " | md5sum" TO $sXpass
PRINT $sXpass ' Pour voir le hachage en Console.
.Password = FALSE
IF (Left$($sXpass, -4) = $sMyPass) THEN 'On ignore les 4 derniers caractères.
.text = "Merci, vous pouvez CONTINUER..." ' < Mettre ici le Chemin vers l'Application.
ELSE
.text = "ENTREZ... votre pass à nouveau"
ENDIF
.tag = 0
END WITH

END
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Reivillo#9 Posté le 8/7/2015 à 21:58:53
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Le Code précédent à été Modifié...en plus COOL! ;)
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Foromus#10 Posté le 8/7/2015 à 22:17:52
Bonsoir,

Merci bien de votre aide.
J'ai fait quelques essais avec tout ce que vous m'avez fourni, je pense que je peux maintenant arriver à faire un peu quelque chose ! Reste à approfondir, mais ça devrait aller!
Au passage, c'est quoi le commande .tag ?
Merci encore !
Reivillo#11 Posté le 8/7/2015 à 22:52:21
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonsoir Foromus.

Merci pour ton Retour.

Au passage, c'est quoi le commande .tag ?

Tag, est une Propriété dans la plupart des Objets Gambas.
Comme une Variable de Type Variant. On y met ce que l'on veut.
Personnellement, comme c'est disponible,( ce qui évite de créer une variable )
je m'en sers souvent comme simple Variable, voir même parfois comme Liste.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Reivillo#12 Posté le 9/7/2015 à 07:27:40
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Un Pass, peut-être plus Sécurisé.

Prérequis:
Installer le Paquet whois
Un Objet TextBox
Pour créer une Clé, entrer la Commande ci-dessous dans un Terminal.

mkpasswd -m sha-256 votrepass

Sélectionné et Copier la Clé depuis le Terminal,
et la Coller comme Donnée, dans la Variable Private $sMyPass.
Ou mieux encore, la cacher dans la Propriété Tag de la Form via le Panneau des Propriétés.
et dès lors, changer la ligne 22 Crypt.Check(.Text, $sMyPass) en Crypt.Check(.Text, Me.tag)
On pourra noter l'Absence du Pass, en clair dans le Code...
Pour Tester le Code ci-dessous, le pass est Foromus.
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
PRIVATE $sMyPass AS STRING = "$5$JomGfYc4bSTp2$bRe07GcGb5kPzfmjISKzt2rdOloCfCqyHoSHQqXjf3D"

PUBLIC SUB Form_Open()

ME.Center
TextBox1.Alignment = Align.Center
TextBox1.text = "Entrez votre pass..."
TextBox1.tag = 0

END

PUBLIC SUB TextBox1_KeyPress()

WITH TextBox1
IF .tag = 0 THEN
.Text = ""
.tag = 1
ENDIF
.Password = TRUE
IF NOT (Key.Code = Key["Return"]) THEN RETURN
.Password = FALSE
IF Crypt.Check(.Text, $sMyPass) = FALSE THEN
.text = "Merci, vous pouvez CONTINUER..." ' < Mettre ici le Chemin vers l'Application.
ELSE
.text = "ENTREZ... votre pass à nouveau"
ENDIF
.tag = 0
END WITH

END
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Foromus#13 Posté le 9/7/2015 à 09:02:28
Bonjour à tous,

Merci Reivillo pour ce complément d'infos.
Pour le pass "un peu plus sécurisé", je dois reconnaître que mon humble industrie ne requiert pas franchement un haut niveau (pas de plans d'attaque, pas de centres de stockage de matériels dangereux ou explosifs, pas de brevets), en conséquence, je crois sage de travailler sur ce que vous m'avez fourni et de rester dans les limites de mon raisonnable ! Mais cela peut être utile à d'autres je suppose !

Encore merci !
1