在 shell 脚本中寻找一种方法来验证 (AIX) 上 root 的密码与标准化纯文本密码是否匹配。此查询与本网站上的另一个查询类似。我可以访问 root 并且可以根据需要编译 ac 程序。我一直在寻找标准库来为 HP-UX 和 Linux 执行此操作。现在我在 AIX 上工作,但我遇到的只是一些障碍。我已经能够提取盐和哈希值,并且我知道纯文本密码。我想输入盐和密码并取回密码哈希,以便我可以将其与服务器上存储的内容进行比较。
答案1
我对 AIX 不熟悉,可能有专门的工具。不过,该工具可能需要以 root 身份运行。
我建议使用现有工具,而不是自己编码。传递密码su
并测试是否su
成功。请注意,您必须su
以 root 身份运行。由于su
从终端读取密码,您需要使用预计通过它。
这是一个灵感来自的脚本CluelessCoder 在 Stack Overflow 上提出了类似的问题。请注意,此脚本需要以非 root 用户身份运行,否则su
不会提示输入密码。
#!/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
如果您有 Perl,或者如果您想使用 C 程序,请参阅这个类似问题的答案它展示了如何在 Linux 下提取密码哈希并使用相同的盐计算所提供密码的哈希。如果您的系统使用传统的 DES 方案,您可能需要调整哈希提取。