- Passwords em c/c++
+ Responder ao Tópico
-
Passwords em c/c++
Pessoal, to desenvolvendo um programa e nele recebo um username e uma password e tenho que comparar com a password do username do linux...
Depois de muito procurar descobri a função
struct passwd = *getpwnam(char *username)
nessa struct tem um campo pw_passwd. Mas idependente do usuário que eu consulto ele sempre me retorna o password "x". No man getpwnam verifiquei que ele pega esses dados do arquivo /etc/passwd, ao abri-lo constatei que realmente todas as passwords são mostradas como x...
exemplo: root:x:0:0:root:/root:/bin/bash
Imaginei que o linux não mostraria a password por motivos de segurança...mas mesmo no programa ele não mostra...Tem alguma outra forma de fazer isso ou eu que estou cometendo algum erro...
-
Cara acho dificil vc conseguir comparar o password já que o linux criptografa os passwords com uma chave unica que so ele conhece, mas na verdade os passwords ficam no /etc/shadow nas distros mais novas , esse comando em C devia ser para versões de linux mais antigas, que o password ficava no /etc/passwd.
falows
-
não existe nenhum comando onde eu posso testar se um username e uma password fornecida corresponde com o password do usuário no linux?? Tanto faz ser em C ou comandos bash...
Valeu...
-
Cara tenta dar uma lida sobre o PAM e o PAM_authenticate que eh o sistema de autenticação que o linux usa, e ve se tem como vc passar um login e senha e o pam checar.
falows
-
Cara, pode ser que você consiga algo pelo status de funções... lembre-se que sempre que dá certo retorna 0.
Abraços!
-
Pois é, xstefanox... Era mais ou menos isso que eu estava pensando em usar...algum comando bash que desse pra testar a senha...mas consegui uma maneira melhor, graças a sugestão do ruyneto! Para quem esteja com o mesmo problema que eu, achei como fazer um programa utilizando a biblioteca PAM...
http://www.linuxsecurity.com.br/sect...ticle&artid=27
o unico problema desse é que ele abre um prompt pra inserir a senha... Não era bem oque eu precisava pois estou desenvolvendo um aplicação TCP/IP...mas aqui
LinuxDevCenter.com -- Writing PAM-Capable Applications, Part One
mostra como criar uma conversation function que resolve isso!
Valeu pessoal!!