Não estou familiarizado com o AIX, pode haver uma ferramenta dedicada para isso. É provável que esta ferramenta precise ser executada como root.
Em vez de codificar você mesmo, recomendo usar as ferramentas existentes. Passe a senha para su
e teste se su
foi bem-sucedido. Note que você terá que executar su
como root. Como su
lê a senha do terminal, você precisará usar Espere para transmiti-la.
Este é um script inspirado em cluelessCoder em um documento semelhante pergunta sobre estouro de pilha . Observe que esse script precisa ser executado como um usuário não raiz, caso contrário, su
não solicitará uma senha.
#!/bin/sh
PASSWORD=swordfish
expect << EOF
spawn su -c exit
expect "Password:"
send "$PASSWORD\r"
set wait_result [wait]
# check if it is an OS error or a return code from our command
# index 2 should be -1 for OS erro, 0 for command return code
if {[lindex \$wait_result 2] == 0} {
exit [lindex \$wait_result 3]
}
else {
exit 1
}
EOF
if [ $? -eq 0 ]; then
echo "The password is correct"
else
echo "The password is wrong"
fi
Se você tiver o Perl ou quiser usar um programa em C, consulte esta resposta a uma pergunta semelhante que mostra como extrair o hash da senha e calcular um hash da senha fornecida com o mesmo nível de proteção, no Linux. Talvez seja necessário ajustar a extração de hash se o sistema usar o esquema DES tradicional.