22 lines
708 B
Plaintext
22 lines
708 B
Plaintext
|
#!/bin/bash -e
|
||
|
# Verify the given password hash against a password
|
||
|
if test "$1"
|
||
|
then hash="$1"; shift
|
||
|
else printf "Hash? " && read -r hash
|
||
|
fi
|
||
|
while echo "Type password (no echo) " && read -r -s password && test "$password"; do
|
||
|
param=$(echo "$hash" | cut -d\$ -f3)
|
||
|
# Check if hash contains parameters
|
||
|
if test $(echo "$hash" | tr -cd \$ | wc -c) -gt 3
|
||
|
then salt=$(echo "$hash" | cut -d\$ -f4)
|
||
|
salted_hash=$(mkpasswd -m sha-512 --"$param" --salt="$salt" "$password")
|
||
|
else salted_hash=$(mkpasswd -m sha-512 --salt="$param" "$password")
|
||
|
fi
|
||
|
|
||
|
# Compare the generated hash with the original hash
|
||
|
if [[ "$salted_hash" == "$hash" ]]
|
||
|
then echo ":) Password correct"; break
|
||
|
else echo "X Password incorrect"
|
||
|
fi
|
||
|
done
|