Last active
July 24, 2020 15:57
-
-
Save elreydetoda/9b59a133cc7e2db0970256447d374f6d to your computer and use it in GitHub Desktop.
password spray generator for: https://github.com/dafthack/DomainPasswordSpray example recording: https://asciinema.org/a/BDn3aagYzX85hpBWrc223Ncwu
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
set -${-//[s]/}eu${DEBUG+xv}o pipefail | |
season=( | |
'Spring' | |
'Summer' | |
'Fall' | |
'Autumn' | |
'Winter' | |
) | |
months=( | |
'January' | |
'February' | |
'March' | |
'April' | |
'May' | |
'June' | |
'July' | |
'August' | |
'September' | |
'October' | |
'November' | |
'December' | |
) | |
mutations=() | |
extra_mutations=() | |
mutations+=( | |
# current year | |
"$(date +%Y)" | |
) | |
extra_mutations+=( | |
# because this makes people feel more secure.... | |
# listing before regular password because it is more common | |
'!' | |
# this is so you print out a regular version of the password as well | |
'' | |
) | |
read -n1 -r -p 'Do you want to include last year? [Y/n] ' include_last_year | |
# for spacing prompts (prompts go to stderr) | |
echo 1>&2 | |
case "${include_last_year}" in | |
Y|y|'') | |
mutations+=( "$(date --date='last year' +%Y)" ) | |
;; | |
esac | |
# add seasons to password list array | |
password_list+=( "${season[@]}" ) | |
# append to array with the -O starting at the end of the array | |
password_list+=( "${months[@]}" ) | |
read -r -p 'what is their min pass policy? ' min_pass_pol | |
for extra_mutation in "${extra_mutations[@]}" ; do | |
for mutation in "${mutations[@]}" ; do | |
for password in "${password_list[@]}" ; do | |
current_word=$(printf '%s%s%s\n' "${password}" "${mutation}" "${extra_mutation}") | |
if [[ "${min_pass_pol}" -le "$(wc -c <<< "${current_word}")" ]] ; then | |
echo "${current_word}" | |
fi | |
done | |
done | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment