Advertisement
Guest User

soluce SM 2

a guest
Jan 30th, 2014
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.53 KB | None | 0 0
  1. #! /bin/bash
  2.  
  3. # $1 sert à indiquer un /etc/shadow alternatif à utiliser
  4.  
  5. data_folder="$(dirname $0)/defis_2_files"
  6.  
  7. if [ ! -d "$data_folder" ]
  8.     then
  9.         mkdir "$data_folder"
  10. fi
  11.  
  12. if [ ! -z "$1" ]
  13.     then shadow="$1"
  14.     else shadow='/etc/shadow'
  15. fi
  16.  
  17.  
  18.  
  19. if [ ! -f "${data_folder}/10k most common.txt" ]
  20.     then
  21.         echo "Le fichier de mot de passe n'est pas présent... Téléchargement"
  22.         wget --output-document="${data_folder}/passzip.zip" "http://xato.net/files/10k%20most%20common.zip"
  23.         unzip "${data_folder}/passzip.zip" -d "${data_folder}"
  24.         rm "${data_folder}/passzip.zip"
  25. fi
  26.  
  27. # le cat -n sert plus a rien mais vu que j'ai fait comme ça et que ça marche je laisse
  28. tableau_shadow=( $(cut --delimiter=':' --fields='1,2' "$shadow" | cat -n | tr -d ' ' | tr '\t' ':' | tr '\n' ' ') )
  29.  
  30. for test1 in "${tableau_shadow[@]}"
  31.     do
  32.         if [ "$(cut -d ':' -f '3' <<< "$test1")" = '*' ] || [ "$(cut -d ':' -f '3' <<< "$test1")" = '!' ]
  33.             then
  34.                 echo "L'utilisateur \""$(cut -d ':' -f '2' <<< "$test1")"\" n'a pas de mot de passe et celui-ci ne sera donc pas testé"
  35.             else
  36.                 echo -e "\e[0;34mL'utilisateur \""$(cut -d ':' -f '2' <<< "$test1")"\" a un mot de passe\e[0m"
  37.                 tableau_pass+=("$test1") # rajoute cette ligne du shadow dans les mot de passe a bruteforcer
  38.         fi
  39. done
  40.  
  41. until [ "$OK" = 10001 ]
  42.     do
  43.         #set -x
  44.         tableau_common_pass_uncrypted+=("$(sed -n ${OK}p "${data_folder}/10k most common.txt")")
  45.         OK=$((++OK))
  46. #set +x
  47. done
  48.  
  49. OK=0
  50. for test1 in "${tableau_pass[@]}"
  51.     do
  52.         pass="$(cut -d ':' -f '3' <<< "$test1")"
  53.         salt="$(cut -d ':' -f '3' <<< "$test1" | cut -d '$' -f 3)"
  54.         encrypt_method="$(cut -d ':' -f '3' <<< "$test1" | cut -d '$' -f 2)"
  55.         user="$(cut -d ':' -f '2' <<< "$test1")"
  56.         case "$encrypt_method" in
  57.             1 )
  58.                 encrypt_method='MD5';;
  59.             5 )
  60.                 encrypt_method='SHA-256';;
  61.             6 )
  62.                 encrypt_method='SHA-512';;
  63.             2a )
  64.                 echo "It's blowfish, not supported";exit 1;;
  65.             * )
  66.                 echo "Erreur, méthode de chiffrement non reconnue";exit 1;;
  67.         esac
  68.        
  69.         for test2 in "${tableau_common_pass_uncrypted[@]}"
  70.             do
  71.             if [ $(echo "$test2" | mkpasswd --salt="$salt" --method="$encrypt_method" --stdin) = "$pass" ]
  72.                 then
  73.                     test2=$(echo "$test2" | tr -d [:cntrl:]) # Ca enlève les charactères spéciaux; fichier au format windows
  74.                     echo -e "\e[0;34mMot de passe trouvé : \"$test2\" pour l'utilisateur \"$user\"\e[0m"
  75.                     break
  76.             fi
  77.         done
  78.  
  79.         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é."
  80. done
  81.  
  82. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement