Skip to content

Instantly share code, notes, and snippets.

@rmetzler
Forked from mino98/checkpass.sh
Created February 21, 2018 23:17
Show Gist options
  • Save rmetzler/59af1a0ba0062c52c0285e5f03d303fc to your computer and use it in GitHub Desktop.
Save rmetzler/59af1a0ba0062c52c0285e5f03d303fc to your computer and use it in GitHub Desktop.
Check password against pwnedpasswords repo.
#!/bin/bash
# Original:
# https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity
echo -n Password:
read -s password
echo
hash="$(echo -n $password | openssl sha1)"
upperCase="$(echo $hash | tr '[a-z]' '[A-Z]')"
prefix="${upperCase:0:5}"
response=$(curl -s https://api.pwnedpasswords.com/range/$prefix)
while read -r line; do
lineOriginal="$prefix$line"
if [ "${lineOriginal:0:40}" == "$upperCase" ]; then
howmany=$(echo $lineOriginal | cut -d":" -f2 | tr -d "\n\r")
echo "Password breached $howmany times!"
exit 1
fi
done <<< "$response"
echo "Password not found in breached database."
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment