Gambas France BETA


Pas de compte ? Incription

Saisir un mot de passe caché en console

Ce sujet est résolu.

1
AuteurMessages
linuxos#1 Posté le 30/9/2015 à 16:56:04
Un peu de sel, de poivre et la crevette sera... Bonjour,

Je travaille sur un petit projet Gambas 3 en console (programme ligne de commande) dans lequel je voudrais pouvoir saisir un mot de passe en console mais sans voir les caractères tapés.

Je joué un petit moment avec l'instruction INPUT mais cela ne correspond pas.

Comment fait on pour lire une touche du clavier et avoir son code en Gambas3 svp ?

Je pense qu'il faut faire une boucle pour chaque caractère.

Merci d'avance

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
didier18#2 Posté le 30/9/2015 à 19:08:11
Bonjour Olivier

Pour mémoire il y a ça :
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=82

Sinon sur un TextBox par exemple tu peux aussi utiliser la propriété 'Password' qu'il faut mettre à true.

En shell il y a :

passwd [utilisateur]
Change le mot de passe du compte utilisateur (mot de passe de l'utilisateur connecté si pas d'argument).
-l : vérrouille le compte passé en argument (lock)
-u : débloque le compte passé en argument (unlock)
-S : indique l'état du compte passé en argument (status)

J'espère que cela répond à tes questions...

Bonne journée.
linuxos#3 Posté le 30/9/2015 à 19:59:59
Un peu de sel, de poivre et la crevette sera... Didier,

En fait c'est un projet en ligne de commande donc pas de Form ou objet graphique dans lesquels il y a l’événement _Keypress() qui existe.

Dans d'autre langage, c'est une simple boucle qui attend que l'utilisateur tape une touche et affiche une '*' a chaque fois.
Il suffit de gérer le BackSpace et le Enter en cas d'effacement ou de validation du mot de passe.
Rien de compliquer, mais je n'arrive pas trouver comment attendre une touche au clavier autrement que par l'instruction INPUT <variable> car celle-ci retourne a l'écran la touche appuyée, hors c'est pour un mot de passe donc cela ne doit rien afficher.

Je continue a fouiller et si quelqu'un a la solution je suis preneur.

Merci

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
linuxos#4 Posté le 30/9/2015 à 20:26:23
Un peu de sel, de poivre et la crevette sera... En fait a force de d'acharnement j'ai trouvé comment faire:

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
' Gambas module file

PRIVATE PasswdBox AS STRING

PUBLIC SUB Main()

DIM Pass AS STRING
DIM PasswdOk AS BOOLEAN

WHILE NOT PasswdOk

WRITE #1, "Enter your password: "

INPUT PasswdBox

IF PasswdBox = "password" THEN
PRINT ""
PRINT "Password correct."
PasswdOk = TRUE
BREAK
ELSE
PRINT ""
ENDIF

WEND

PRINT "Fin."

END


Problème reglé.
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
vuott#5 Posté le 1/10/2015 à 01:07:28
Ne cedere ineluctabili possimus...une alternative plus courte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PUBLIC SUB Main()

DIM Pass AS STRING

WHILE Pass <> "password"

PRINT "Enter your password: "

INPUT Pass

WEND

PRINT "Password correct."
PRINT "Fin."

END
:roll:
« Vita non suavis esse potest, nec Mors amara. »
linuxos#6 Posté le 2/10/2015 à 22:54:28
Un peu de sel, de poivre et la crevette sera... Merci Vuott pour la réponse.
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
vuott#7 Posté le 15/8/2016 à 16:22:29
Ne cedere ineluctabili possimus...et une alternative pour ne pas visualiser le password, en utilisant la fonction externe getpass( ):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LIBRARY "libc:6"

' char *getpass (const char *__prompt)
' Prompt with PROMPT and read a string from the terminal without echoing.
PRIVATE EXTERN getpass(__prompt AS STRING) AS STRING


PUBLIC SUB Main()

DIM mon_password AS STRING

mon_password = getpass("Veuillez saisir votre mot de passe: ")

PRINT "Vérification du mot de passe: " Quote(mon_password)

END

« Vita non suavis esse potest, nec Mors amara. »
1