Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- # $1 sert à indiquer un /etc/shadow alternatif à utiliser
- data_folder="$(dirname $0)/defis_2_files"
- if [ ! -d "$data_folder" ]
- then
- mkdir "$data_folder"
- fi
- if [ ! -z "$1" ]
- then shadow="$1"
- else shadow='/etc/shadow'
- fi
- if [ ! -f "${data_folder}/10k most common.txt" ]
- then
- echo "Le fichier de mot de passe n'est pas présent... Téléchargement"
- wget --output-document="${data_folder}/passzip.zip" "http://xato.net/files/10k%20most%20common.zip"
- unzip "${data_folder}/passzip.zip" -d "${data_folder}"
- rm "${data_folder}/passzip.zip"
- fi
- # le cat -n sert plus a rien mais vu que j'ai fait comme ça et que ça marche je laisse
- tableau_shadow=( $(cut --delimiter=':' --fields='1,2' "$shadow" | cat -n | tr -d ' ' | tr '\t' ':' | tr '\n' ' ') )
- for test1 in "${tableau_shadow[@]}"
- do
- if [ "$(cut -d ':' -f '3' <<< "$test1")" = '*' ] || [ "$(cut -d ':' -f '3' <<< "$test1")" = '!' ]
- then
- echo "L'utilisateur \""$(cut -d ':' -f '2' <<< "$test1")"\" n'a pas de mot de passe et celui-ci ne sera donc pas testé"
- else
- echo -e "\e[0;34mL'utilisateur \""$(cut -d ':' -f '2' <<< "$test1")"\" a un mot de passe\e[0m"
- tableau_pass+=("$test1") # rajoute cette ligne du shadow dans les mot de passe a bruteforcer
- fi
- done
- until [ "$OK" = 10001 ]
- do
- #set -x
- tableau_common_pass_uncrypted+=("$(sed -n ${OK}p "${data_folder}/10k most common.txt")")
- OK=$((++OK))
- #set +x
- done
- OK=0
- for test1 in "${tableau_pass[@]}"
- do
- pass="$(cut -d ':' -f '3' <<< "$test1")"
- salt="$(cut -d ':' -f '3' <<< "$test1" | cut -d '$' -f 3)"
- encrypt_method="$(cut -d ':' -f '3' <<< "$test1" | cut -d '$' -f 2)"
- user="$(cut -d ':' -f '2' <<< "$test1")"
- case "$encrypt_method" in
- 1 )
- encrypt_method='MD5';;
- 5 )
- encrypt_method='SHA-256';;
- 6 )
- encrypt_method='SHA-512';;
- 2a )
- echo "It's blowfish, not supported";exit 1;;
- * )
- echo "Erreur, méthode de chiffrement non reconnue";exit 1;;
- esac
- for test2 in "${tableau_common_pass_uncrypted[@]}"
- do
- if [ $(echo "$test2" | mkpasswd --salt="$salt" --method="$encrypt_method" --stdin) = "$pass" ]
- then
- test2=$(echo "$test2" | tr -d [:cntrl:]) # Ca enlève les charactères spéciaux; fichier au format windows
- echo -e "\e[0;34mMot de passe trouvé : \"$test2\" pour l'utilisateur \"$user\"\e[0m"
- break
- fi
- done
- echo -e "Passage à l'utilsateur suivant; si vous n'avez pas eu de message avant\nle mot de passe de l'user $user n'a pu être trouvé."
- done
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement