password em C

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

password em C

Mensagempor MRebelo » Segunda Mai 29, 2006 15:58

Boas...precisa de uma ajuda...

Preciso fazer uma pequena função p'ra ler uma palavra passe, mas queria que essa mesma palavra passe não fosse vista no monitor, isto é a medida que o utilizador introduzisse um caracter este transformava-se num *...

Sei que preciso ler caracter a caracter, mas primeiro não o tenho conseguido fazer e depois tenho o problema de conseguir parar o ciclo pois não sei como o defenir para parar quando se carrega ENTER...

Por Favor agradecia uma ajuda urgente, se não perceberam aquilo que eu preciso digam que eu tento esclarecer...

Desde já muito obrigado a todos...
MRebelo
Novato
Novato
 
Mensagens: 9
Registado: Terça Mai 09, 2006 14:18

Mensagempor Moebius » Segunda Mai 29, 2006 18:39

Para substituires os caracteres terás de procurar por "masking".

Para parares quando carregas em ENTER tens que comparar com "\n" que é o valor da propria tecla ENTER ;)

EDIT: Se o \n não funcionar terás de descubrir qual o valor ASCII da tecla enter.
Acer 7720G - Core 2 Duo T5250 - 2048 Mb RAM - 250 GB HD - 17" WXGA - nVidia Geforce 8400M GS 256 Mb
Shortly will be running on Ubuntu Gnome, Firefox and Thunderbid
Moebius
Membro de Prata
Membro de Prata
 
Mensagens: 136
Registado: Segunda Out 06, 2003 18:28
Localização: Lisboa ou Madeira, conforme o mês do ano

Mensagempor MRebelo » Segunda Mai 29, 2006 19:15

Brigado, mas como posso comparar com o código Ascii???em Pascal eu sabia agora em C na sei mas ainda vou tentar com "\n", depois digo alguma coisa...
MRebelo
Novato
Novato
 
Mensagens: 9
Registado: Terça Mai 09, 2006 14:18

Mensagempor vamosAeles » Segunda Mai 29, 2006 20:19

Mas já tens funções de biblioteca que fazem isso por ti, a não ser que isso seja para algum trabalho que algum professor eventualmente pediu.

[[]]
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença

Mensagempor MRebelo » Segunda Mai 29, 2006 20:26

IA mas se me pudesses dizer quais eram essas funções era fixe....essa função vai entrar num trabalho, não é propriamente o trabalho nem pc mais ou menos, isto +e só um promenor...
MRebelo
Novato
Novato
 
Mensagens: 9
Registado: Terça Mai 09, 2006 14:18

Mensagempor vamosAeles » Segunda Mai 29, 2006 23:27

Ve a lib <pwd.h>...ou <unistd.h>...ja nao me lembro, o nome das funções é getpass() e getpassphrase()

[[]]
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença

Mensagempor MRebelo » Terça Mai 30, 2006 15:09

O problema é que a livraria pwd.h, não existe em nenhum compilador de C para Windows, pelo menos que eu conheça, eu sei cm usar a pwd, mas sem a livraria não th hipotese...

Até tentei arranjar essa livraria, mas depois da-m falta de outras librarias que a pwd.h pede...

Se alguém souber de um compilador que tenha ou conheça um compilador para windows com a pwd.h, agradeço...
MRebelo
Novato
Novato
 
Mensagens: 9
Registado: Terça Mai 09, 2006 14:18

Mensagempor vamosAeles » Terça Mai 30, 2006 17:55

Interessante, nao sabia disso.
Mas fiquei curioso e achei uma maneira de fazer isso em windows
(pelo menos em Visual Studio bule fixe)

main(){
char pass[30];
char c;
int i = 0;
while(1){
c = getch();
if(c == 13 || c == 10){
pass[i++] = 0;
break;
}
pass[i++] = c;
}

printf("Vamos ver a pass que nao apareceu: %s\n", pass);
}
vamosAeles
Membro de Prata
Membro de Prata
 
Mensagens: 206
Registado: Quarta Jan 04, 2006 21:29
Localização: Lisboa/Proença

Mensagempor MRebelo » Sexta Jun 02, 2006 19:52

Brigadão pela ajuda....

Ia infelizmente compiladores para windows têm problemas de falta de livrarias e mesmo que uma pessoa tente arranjar na net ainda ficam a faltar mais....

è mm mt mau...Brigado pela ajuda
MRebelo
Novato
Novato
 
Mensagens: 9
Registado: Terça Mai 09, 2006 14:18

Mensagempor r3pek » Quarta Jun 14, 2006 15:12

Só quero fazer 2 comentariozinhos......

vamosAeles Escreveu:Interessante, nao sabia disso.
Mas fiquei curioso e achei uma maneira de fazer isso em windows
(pelo menos em Visual Studio bule fixe)

main(){
char pass[30];
char c;
int i = 0;
while(1){
c = getch();
if(c == 13 || c == 10){
pass[i++] = 0;
break;
}
pass[i++] = c;
}

printf("Vamos ver a pass que nao apareceu: %s\n", pass);
}

Isto nao funciona se a pass for >= a 30 caracteres :)


@MRebelo
Por favor, não digas livrarias pk nao é isso que elas sao.... sao BIBLIOTECAS! library em linguês ker dizer biblioteca, não livraria que seria Book Shop!
Gentoo Developer
(kernel/amd64/mobile-phone)
r3pek
Membro de Prata
Membro de Prata
 
Mensagens: 100
Registado: Quarta Mar 03, 2004 13:22

Mensagempor Asgorath » Sexta Jun 16, 2006 9:33

Pwd.h encontras em as versoes do UNIX.
Jorge
Intel Core 2 Quad Q9450 - Cache 12MB - 4x2,66GHz - FSB 1333MHz || abit IP35P ||
4G Kingston 800 Mhz || XFX GeForce 9800 GX2 1G ddr3 || WD5000AAJS 500Gb Sata 2 Raid 0 ||
Samsung SyncMaster 940nw || |
|| Caixa A+El-Diablo || Creative XMod
Asgorath
Membro de Ouro
Membro de Ouro
 
Mensagens: 645
Registado: Segunda Out 31, 2005 10:45
Localização: C:\Portugal\Castelo Branco


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 2 visitantes

cron