Você tem medo de uma atualização de shadow-utils é IMO injustificado. As rotinas descritas nesse HOWTO estão disponíveis nos meus sistemas Ubuntu 12.04 e Mint 17 sem instalar nada de especial.
A estrutura para ler as informações de /etc/shadow
em um programa C pode ser encontrada em /usr/include/shadow.h
e com man 5 shadow
e as funções que você precisaria encontrar, por exemplo, uma entrada de senha de sombra pelo nome, conforme definido em /usr/include/shadow.h
is getspnam
, e que também obterá uma página man ( man getspnam
) descrevendo essa e todas as funções relacionadas.
Com base nisso, você deve conseguir a entrada de senha com hash para qualquer nome. A senha com hash deve ter vários tokens '$', corte de tudo após e incluindo o último '$' da senha com hash e apresentar como sal a crypt()
, a versão glibc (de acordo com man 3 crypt
) deve ser capaz de lidar com os sais "estendidos" que indicam entradas SHA512 como são mais comuns hoje em dia.