[Cascavel-pm] diferenças entre crypt e Digest::MD5

Breno G. de Oliveira breno em clavis.com.br
Sexta Julho 15 16:29:32 PDT 2005


Alceu R. de Freitas Jr. wrote:
> 
> Eu tentei fazer o mesmo numa máquina com Conectiva
> Linux 8 e Perl 5.8 (instalado via arquivo fonte). Não
> funcionou porque o crypt nesse sistema não inclui o
> "$1$" na senha criptografada, nem o salto utilizado.
> 
> Eu acredito que isso tenha algo a ver com a função
> crypt do Perl usar a mesma biblioteca C do crypt
> disponível no sistema... o que é bastante confuso,
> visto que as senhas no Conectiva 8 usando MD5 e são
> armazenadas no /etc/shadow.
> 
> De qualquer forma, obrigado pelo feedback. Bom saber
> que isso funciona em alguns sistemas e em outros não.
> 

Justamente pq a crypt() do perl eh a implementacao do sistema, ela serah
sempre adequada ao sistema em que o script estah executando.
Provavelmente o erro ocorreu pq vc tentou utilizar a string de hash q
estava no meu codigo e nao um hash da sua maquina (q como vc disse
utiliza um metodo diferente). Tente o seguinte:

--------------8<-----------------
@pwd = getpwuid($<);
die "nao consegui ler arquivo shadow (permissoes?)\n" if($pwd[1] eq 'x'
or $pwd[1] eq 'X');
print "digite a senha do usuario $pwd[0]: ";
system "stty -echo";
chomp ($word = <STDIN>);
system "stty echo";
if (crypt($word, $pwd[1]) ne $pwd[1]) { die "\nsenha errada\n"; }
else { print "\nsenha correta!\n"; }
--------------8<-----------------

Esse script vai ler o hash com a senha do usuario q executa-lo, e a
crypt() vai se comportar de acordo com o sistema operacional. Exceto
pelas chamadas de "stty" para evitar eco da senha q vc digitar no
terminal, isso eh o mais portatil q eu sei fazer, e nao usa nenhum
modulo extra.

Esse script DEVE funcionar perfeitamente em qq sistema *NIX (inclusive o
seu Conectiva ;), contanto q o seu usuario tenha permissao para ler o
/etc/shadow (execute-o como root para nao haver possibilidade de erro).

Depois avise se funcionou, por favor, fiquei interessado!

Espero ter ajudado.

[]s

breno



Mais detalhes sobre a lista de discussão Cascavel-pm