Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-09-2006, 15:26   #1
claori
Junior Member
 
Iscritto dal: Jul 2006
Messaggi: 7
[C] utilizzo delle pw

Ciao a tutti, ho un problema!

Ho bisogno di fare in modo che inserendo una password da terminale non sia possibile visualizzarla mentre la si sta inserendo.

L'unica funzione che ho trovato a tale fine è getpass() che fa parte della libreria crypt.h.
Il problema di questa funzione è che genera un buffer overflow visto che non c'è nessun controllo sull'input.
Qualcuno ha qualche soluzione???
Come posso creare in C una funzione che non faccia visualizzare la pw a terminale???
Grazie
Claudia
claori è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 16:05   #2
Gino+89+
Member
 
L'Avatar di Gino+89+
 
Iscritto dal: Nov 2005
Città: Mantova
Messaggi: 115
Prova a vedere questo:

#include <stdio.h>
#include <conio.h>

int main()
{
int i;
char car;
char password[20];

printf("Inserisci password:");

for(i=0;i<20;i++)
{
car=getch();
password[i]=car;
if(car==13)
break;
else
printf("*");
}

password[i]='\0';

printf("\n\nPassword inserita: %s",password);

getch();
return 0;
}
Gino+89+ è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 16:27   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Ricordo di una funzione, ma non ricordo quale...

Puoi fare manualmente qualcosa del genere:
Codice:
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <termios.h>
#include <sys/mman.h>
#include <unistd.h>

char *getpass(const char *prompt)
{
	struct termios tios;
	struct termios torg;
	char *buf = mmap(NULL, getpagesize(), PROT_READ|PROT_WRITE,
		MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
	char *ret;

	if (mlock(buf, getpagesize())<0)
		fprintf(stderr, "Aehm... ;-)\n");

	tcgetattr(fileno(stdin), &tios);
	torg = tios;

	tios.c_lflag &= ~ECHO;
	tcsetattr(fileno(stdin), TCSAFLUSH, &tios);

	printf("%s", prompt);
	fflush(stdout);

	ret = fgets(buf, getpagesize(), stdin);
	printf("\n");

	tcsetattr(fileno(stdin), TCSAFLUSH, &torg);

	if (ret!=NULL) {
		int len = strnlen(buf, getpagesize());
		if (len==getpagesize()) {
			fprintf(stderr, "Error: password too long\n");
			munmap(buf, getpagesize());
			ret = NULL;
		} else {
			// Elimina il '\n' finale
			if (len>1)
				ret[len-1] = '\0';
		}
	}
	return ret;
}

int main()
{
	char *p = getpass("Enter password: ");
	printf("Password: %s\n", p);
	munmap(p, getpagesize());
	return 0;
}
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 26-09-2006 alle 16:30.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 09:32   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
infatti dal man getpass
Quote:
...
This function is obsolete. Do not use it.
...
che sistema usi ? Linux se non ricordo male ...
OT: a proposito com'é finita la storia delle librerie ? ha funzionato ? non m'hai fatto sapere piú niente ... /OT

Come giá t'ha postato ilsensine dovresti usare i termios ... é un po lunga da spiegare.
Questa funzione abilita/disabilita l'echo del carattere premuto tramite un flag della struttura termios:
Codice:
/*                                *\
\*                                */
int EchoOnOff(int On)
{
   struct termios attr;

   if(!(isatty)(STDIN_FILENO))
      return IOERROR;

   if((tcgetattr)(STDIN_FILENO,&attr) < 0)
      return IOERROR;

   if (On)
      attr.c_lflag &= ~ECHO;  // DISABILITA L'ECHO
   else
      attr.c_lflag |= ECHO;   // ABILITA L'ECHO

   if((tcsetattr)(STDIN_FILENO,TCSAFLUSH,&attr) < 0)
      return IOERROR;

   return 0;
}
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Oracle NetSuite si potenzia con nuove fu...
Musica generata con l'IA: Sony lavora a ...
Cyberpunk 2077 in versione PC su smartph...
BYD si gioca un grosso jolly: pronta Rac...
Samsung annuncia l'arrivo in Italia dei ...
Offerta lancio Pixel 10a: come ottenere ...
Google presenta Pixel 10a: poche le novi...
Caos F1 2026: 14 monoposto senza omologa...
Tesla festeggia il primo Cybercab prodot...
Desktop piccolo e potente? NZXT H2 Flow ...
Polestar spinge sull'acceleratore: arriv...
Nuovo record mondiale nel fotovoltaico: ...
L'ultimo baluardo cade: fine supporto pe...
'Il mondo non ha mai visto nulla di simi...
La Commissione europea mette sotto indag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v