(AIX)のルートパスワードが正規化されたプレーンテキストパスワードと一致することを確認するために、シェルスクリプトでメソッドを探しています。このクエリは、このサイトの他のクエリと似ています。私はrootアクセス権を持っており、必要に応じてACプログラムをコンパイルできます。私はHP-UXとLinux用の標準ライブラリを探していました。今私はAIXで働いていますが、私が直面しているのはいくつかの障害物だけです。ソルトとハッシュを抽出でき、プレーンテキストのパスワードを知っています。塩とパスワードを入力してパスワードハッシュを取得して、サーバーに保存されているものと比較できるようにしたいと思います。
答え1
私はAIXに精通していません。専門的なツールがあるかもしれません。ただし、ツールをrootとして実行する必要があるかもしれません。
直接コーディングするよりも、既存のツールを使用する方が良いです。パスワードを渡してsu
成功su
したかどうかをテストします。 rootとして実行する必要がありますsu
。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スキームを使用している場合は、ハッシュ抽出を調整する必要があるかもしれません。