#!/bin/bash

#.---------------------------------------------------------------------.
#|                   :   Giga password generator    :                   |
#|  .................:          v1.3.1              :.................  |
#|  :                :..............................:                :  |
#|  :                                                                :  |
#|  :               A simple way to generate wordlists               :  |
#|  :                                                                :  |
#|  :           Developped originally for Backtrack 3 Final          :  |
#|  :                                                                :  |
#|  :       Brought to you by M1ck3y & M1r4g3                        :  |
#|  :               & modded by Tite-Live                            :  |
#|  :                                               .................:  |
#|  :                                               : Crunch powered :  |
#|  :...............................................:................:  |
#|                     http://www.crack-wpa.fr                          |
#\`----------------------------------------------------------------------'


SCRIPTVER="1.3.1"
CRUNCH="/pentest/password/crunch"
if [[ $USER = "root" ]]
then
	STUPIDWAY="/root/"
else
	STUPIDWAY="/home/$USER/"
fi

PARTS=
DELMODE=
TMPMODE=
CHOOSENFOLDER=

if [ ! -e $CRUNCH ]
then
	CRUNCH="/usr/bin/crunch"
fi


# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.
# .    "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.
# .                      Trap & Escape sequences            " 
# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.    "
#      "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.-"


trap "echo -e '\n\E[2K Ctrl+C pressed... Stopping Crunch... Bye !' ; killall crunch > /dev/null 2>&1 ; exit 1 > /dev/null 2>&1" SIGINT
trap "exit 0" EXIT

E_BOLD="\E[1m"
E_NORMAL="\E[0m"
E_BLANK="\n                                                           \n"

# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.
# .    "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.
# .                      Arguments ?                        " 
# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.    "
#      "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.-"

while getopts :p:adhtf: option
do
	case $option in
		a)
		echo "Aircrack mode is not implemented yet :/ Sorry !"  >&2
		exit 1
		;;

		d)
		echo "'Delete' mode enabled."  >&2
		DELMODE=1
		;;

		f)
		if [[ ! $TMPMODE ]]
		then
			if [[ `echo $OPTARG | grep -e '^/.*/$'` ]]
			then
				CHOOSENFOLDER="$OPTARG"
				if [[ -e $CHOOSENFOLDER ]]
				then
					echo -e "Option 'folder' enabled - Choosen folder : $E_BOLD$CHOOSENFOLDER$E_NORMAL" >&2
				else
					echo -e "This folder doesnt not exist.. '$E_BOLD$CHOOSENFOLDER$E_NORMAL'" >&2
					exit 1
				fi
			else
				echo -e "The folder path must have a "$E_BOLD"/"$E_NORMAL" before and after !"
				echo -e "Example : bash $0 -f "$E_BOLD"/"$E_NORMAL"home/cow/wordlist"$E_BOLD"/"$E_NORMAL""
				exit 1
			fi
		else
			echo -e "You cannot choose 'tmp mode' ($E_BOLD-t$E_NORMAL) and select another folder with $E_BOLD-f $OPTARG$E_NORMAL !"
			exit 1
		fi

		;;

		p)
		if [[ `echo $OPTARG | grep '[0-9]*M'` ]]
		then
			PARTS=1
			PARTSIZE="$OPTARG"
			PARTSIZENUMBER=`echo $PARTSIZE | sed 's/M//'`
			echo "Option parts enabled - Choosen size : $PARTSIZE" >&2
		else
			VARMEGA=`echo $OPTARG | grep -o '[0-9]*'`
			echo "Argument of -p must be in Mega !"
			echo -e "Example : bash $0 -p "$VARMEGA"M"
			exit 1
		fi
		;;

		:)
		echo "Option -$OPTARG requires an argument." >&2
		exit 1
		;;

		h)
		GIGAFILE=`echo $0 | sed 's/\.\///'`
		echo -e "		\E[1;91mGiga password generator"$E_NORMAL"
			v1.3.1
	 ~ A simple way to generate wordlists ~
	
	"$E_BOLD"Usage"$E_NORMAL" : ./$GIGAFILE [OPTIONS]
	   or : bash $GIGAFILE [OPTIONS]
	
	"$E_BOLD"Options"$E_NORMAL" : 
	-a              (Aircrack)   Send the Dictionary to Aircrack on-the-fly [NOT IMPLEMENTED]
	-d              (Delete)     If the file already exists, delete it.
	-f [PATH]       (Folder)     Choose a special folder.
	-p [Size][M]    (Parts)      Split the dictionary file in X parts of X Mega and delete the original dictionary.
	-t              (Temp)       Save dictionary in /tmp/
	-h              (Help)       Shows this help and quit
		
		
	"$E_BOLD"Examples"$E_NORMAL" :
Split :	./$GIGAFILE -p 500M
		bash $0 -p 1024M
Folder :  bash $GIGAFILE -f /home/cow/wordlist/

You can choose several options too :
		bash $GIGAFILE -d -f /home/cow/Desktop/ -p 500M" >&2
		exit 0
		;;

		t)
		if [[ ! $CHOOSENFOLDER ]]
		then
			echo "'/tmp/' mode enabled."  >&2
			TMPMODE=1
		else
			echo -e "You cannot choose 'tmp mode' ($E_BOLD-t$E_NORMAL) and select another folder with $E_BOLD-f $CHOOSENFOLDER$E_NORMAL !"
			exit 1
		fi
		;;

		\?)
		echo "Invalid option : -$OPTARG" >&2
		exit 1
		;;
	esac
done


if [[ $TMPMODE ]]
then	STUPIDWAY="/tmp/"
elif [[ $CHOOSENFOLDER ]]
then	STUPIDWAY="$CHOOSENFOLDER"
elif [[ $USER = "root" ]]
then	STUPIDWAY="/root/"
else
	STUPIDWAY="/home/$USER/"
fi

# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.
# .    "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.
# .                      Fake variables                     " 
# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.    "
#      "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.-"

function SAYWHOIAM {

case $1 in
	1)
	echo -e ".----------------------------------------------------------------------.
|                   :   \E[1;91mGiga password generator"$E_NORMAL"    :                    |
|                   :          v1.3.1              :                    |
|                   -----> Parts mode enabled <-----                    |
|   * Steps :                                                           |
| "$E_BOLD"(1/3) \E[4mChoose Crunch options"$E_NORMAL"                                           |
| (2/3) Generate dictionary                                             |
| (3/3) Split dictionary and delete the original file                   |
\`-----------------------------------------------------------------------'"
	;;

	2)
	echo -e "\E[s\E[1;1H.----------------------------------------------------------------------.
|                   :   \E[1;91mGiga password generator"$E_NORMAL"    :                    |
|                   :          v1.3.1              :                    |
|                   -----> Parts mode enabled <-----                    |
|   * Steps :                                                           |
| (1/3) Choose Crunch options                               \E[1;92m[OK]"$E_NORMAL"        |
| "$E_BOLD"(2/3) \E[4mGenerate dictionary"$E_NORMAL"                                             |
| (3/3) Split dictionary and delete the original file                   |
\`-----------------------------------------------------------------------'\E[u"
	;;


	3)  # Fait un peu plus que juste écrire un message, mais bon...
	echo -e "\E[s\E[1;1H.----------------------------------------------------------------------.
|                   :   \E[1;91mGiga password generator"$E_NORMAL"    :                    |
|                   :          v1.3.1              :                    |
|                   -----> Parts mode enabled <-----                    |
|   * Steps :                                                           |
| (1/3) Choose Crunch options                               \E[1;92m[OK]"$E_NORMAL"        |
| (2/3) Generate dictionary                                 \E[1;92m[OK]"$E_NORMAL"        |
| "$E_BOLD"(3/3) \E[4mSplit dictionary and delete the original file"$E_NORMAL"                   |
\`-----------------------------------------------------------------------'\E[u\E[1G\E[1FDictionary file successfully generated.
\E[0KNow it will be splitted in parts of $PARTSIZE : \E[1E\E[0K\E[1F"
	
	cd $STUPIDWAY
	split -d -a 3 -b "$PARTSIZENUMBER"M --verbose $NAMEOVFILE "$NAMEOVFILE".split.
	echo -e " - Splitting done..."
	echo -en " * Deletes the original file"
	rm $NAMEOVFILE
	echo -e "\E[1G - Original file deleted"

	echo -e " [*] Everything is done... 
 -> Now you have the parts of the original Dictionary, \E[1;91m"$NAMEOVFILE".split.XXX"$E_NORMAL" in $STUPIDWAY :)"

	;;
	
	
	4)  # Et on bidouille, on bidouille :D
	echo -e ".----------------------------------------------------------------------.
|                   :   \E[1;91mGiga password generator"$E_NORMAL"    :                    |
|                   :          v1.3.1              :                    |
|                   -----> Parts mode enabled <-----                    |
|   * Steps :                                                           |
| (1/3) Choose Crunch options                               \E[1;92m[OK]"$E_NORMAL"        |
| (2/3) Generate dictionary                                 \E[1;92m[OK]"$E_NORMAL"        |
| "$E_BOLD"(3/3) \E[4mSplit dictionary and delete the original file"$E_NORMAL"                   |
\`-----------------------------------------------------------------------'"
	echo "Mode $WTCHOICE : "
	
	if [[ $WTCHOICE = 21 ]]
	then
		FUNCTABLE " " " " " " " " " " " " " " "X" "X" " "
		#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
		#          1   2   3   4   5   6   7   8   9   10
	elif [[ $WTCHOICE = 22 ]]
	then	
		FUNCTABLE " " " " " " " " " " " " " " "X" " " "X"
		#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
		#          1   2   3   4   5   6   7   8   9   10
	elif [[ $WTCHOICE = 23 ]]
	then	
		FUNCTABLE " " " " " " " " " " " " " " "X" "x" "X"
		#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
		#          1   2   3   4   5   6   7   8   9   10
	fi
	
	echo -e "\n${SCRIPTLANG[71]}$NAMEOVFILE${SCRIPTLANG[72]}"
	echo -e "Now it will be splitted in parts of $PARTSIZE : "
	cd $STUPIDWAY
	split -d -a 3 -b "$PARTSIZENUMBER"M --verbose $NAMEOVFILE "$NAMEOVFILE".split.
	echo -e " - Splitting done..."
	echo -en " * Deletes the original file"
	rm $NAMEOVFILE
	echo -e "\E[1G\E[K - Original file deleted"

	echo -e " [*] Everything is done... 
 -> Now you have the parts of the original Dictionary, \E[1;91m"$NAMEOVFILE".split.XXX"$E_NORMAL" in $STUPIDWAY :)"

	;;



	*)
	echo -e "$E_BOLD                    (¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯)
                    (   \E[1;91mGiga password generator$E_NORMAL   $E_BOLD )
                    (           v1.3.1             )
                    (______________________________)$E_NORMAL"
	;;
esac

}

function FUNCTABLE {
case $CLANG in
	1)
	echo " ----------------------------------------------
 | Function                        | Active   |
 |---------------------------------+----------|
 | Numbers                         |    $1     |
 | Lowercase letters               |    $2     |
 | Uppercase letters               |    $3     |
 | Hexadecimal                     |    $4     |
 | Hexadecimal for WPA Livebox     |    $5     |
 | Startblock                      |    $6     |
 | Customized charset              |    $7     |
 | Mask                            |    $8     |
 | Startmask                       |    $9     |
 | Endmask                         |    ${10}     |
 ----------------------------------+-----------"
	;;

	2)
	echo " ----------------------------------------------
 | Fonction                        | Active   |
 |---------------------------------+----------|
 | Chiffres                        |    $1     |
 | Minuscules                      |    $2     |
 | Majuscules                      |    $3     |
 | Hexadecimal                     |    $4     |
 | Hexadecimal special Livebox WPA |    $5     |
 | Startblock                      |    $6     |
 | Charset perso                   |    $7     |
 | Mask                            |    $8     |
 | Startmask                       |    $9     |
 | Endmask                         |    ${10}     |
 ----------------------------------+-----------"
	;;
esac
}


# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.
# .    "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.
# .                      Fonctions                          " 
# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.    "
#      "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.-"




function ZIQUESTIONS {
case $1 in
	1)
	# Simple questions
	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[3]}" MINLENGTH
	read -p "(*) ${SCRIPTLANG[4]}" MAXLENGTH
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	echo
	echo ${SCRIPTLANG[6]}
	;;

	2)
	# Questions + Startblock
	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[3]}" MINLENGTH
	read -p "(*) ${SCRIPTLANG[4]}" MAXLENGTH
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[9]}" FIRSTWORD
	echo
	echo ${SCRIPTLANG[6]}
	;;
esac

}


function SPLITCAL {
NUMBEROFPARTS=$(( `du -B M $STUPIDWAY$NAMEOVFILE | awk '{print $1}' | sed 's/M//'` / $PARTSIZENUMBER ))
PARTMSG="\n After splitting, it will create ~$NUMBEROFPARTS file(s)"
}

function WAITME {
PROC=`pidof crunch`
if [[ $PROC != "" ]]
then
	if [[ ! $PARTS ]]
	then
		while [ -d /proc/$PROC ];do
			DAFILESIZE=`du -h $STUPIDWAY$NAMEOVFILE | awk '{print $1}'`
			echo -en " ${SCRIPTLANG[8]} /  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" \033[1G" ; sleep .07
			echo -en " ${SCRIPTLANG[8]} -  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" \033[1G" ; sleep .07
			echo -en " ${SCRIPTLANG[8]} \  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" \033[1G" ; sleep .07
			echo -en " ${SCRIPTLANG[8]} |  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" \033[1G" ; sleep .07
		done

	elif [[ $PARTS ]]
	then
		SAYWHOIAM 2
		while [ -d /proc/$PROC ];do
			SPLITCAL
			echo -en " ${SCRIPTLANG[8]} /  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE M"$E_NORMAL" $PARTMSG \033[1G \033[1F" ; sleep .07
			echo -en " ${SCRIPTLANG[8]} -  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE M"$E_NORMAL" $PARTMSG \033[1G \033[1F" ; sleep .07
			echo -en " ${SCRIPTLANG[8]} \  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE M"$E_NORMAL" $PARTMSG \033[1G \033[1F" ; sleep .07
			echo -en " ${SCRIPTLANG[8]} |  "$E_BOLD"$NAMEOVFILE : $DAFILESIZE M"$E_NORMAL" $PARTMSG \033[1G \033[1F" ; sleep .07
		done

		SAYWHOIAM 3
	fi
fi
}

function COWCANDANCE {
sleep 0.1
while [[ `fuser $STUPIDWAY$NAMEOVFILE 2>&1` ]];do
	DAFILESIZE=`du -h $STUPIDWAY$NAMEOVFILE | awk '{print $1}'`
	if [[ ! $PARTS ]]
	then
		echo -en "\E[s\E[2K ${SCRIPTLANG[8]} "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL"
	         (__)
	         (oo)
	  /-------\/
	 / |     ||    
	*  ||----||     
	   ~~    ~~    \E[u" ; sleep .07
		echo -en "\E[s\E[2K ${SCRIPTLANG[8]} "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL"
	         (__)
	         (oo)
	  /-------\/
	 / /     //    
	* //----//    
	  ~~    ~~    \E[u" ; sleep .07
		echo -en "\E[s\E[2K ${SCRIPTLANG[8]} "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL"
	         (__)
	         (oo)
	  /-------\/
	 / \     \\    
	*   \\----\\    
	    ~~    ~~    \E[u" ; sleep .07
	elif [[ $PARTS ]]
	then
		SPLITCAL
		echo -en "\E[s\E[2K ${SCRIPTLANG[8]} "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" $PARTMSG
	         (__)
	         (oo)
	  /-------\/
	 / |     ||    
	*  ||----||     
	   ~~    ~~    \E[u" ; sleep .07
		echo -en "\E[s\E[2K ${SCRIPTLANG[8]} "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" $PARTMSG
	         (__)
	         (oo)
	  /-------\/
	 / /     //    
	* //----//    
	  ~~    ~~    \E[u" ; sleep .07
		echo -en "\E[s\E[2K ${SCRIPTLANG[8]} "$E_BOLD"$NAMEOVFILE : $DAFILESIZE"$E_NORMAL" $PARTMSG
	         (__)
	         (oo)
	  /-------\/
	 / \     \\    
	*   \\----\\    
	    ~~    ~~    \E[u" ; sleep .07
	fi
done
}

function TESTIFFILEEXISTANDTHEN {
CRUNCHCOMMAND=$1
if [[ ! -f $STUPIDWAY$NAMEOVFILE ]]
then
	$CRUNCHCOMMAND > $STUPIDWAY$NAMEOVFILE & WAITME
	if [[ ! $PARTS ]]; then echo -en "\E[1F${SCRIPTLANG[71]}$NAMEOVFILE${SCRIPTLANG[72]}$E_BLANK"; fi

elif [[ -f $STUPIDWAY$NAMEOVFILE && $DELMODE ]] 
then
	echo "Delete the old file..."
	rm $STUPIDWAY$NAMEOVFILE
	$CRUNCHCOMMAND > $STUPIDWAY$NAMEOVFILE & WAITME
	if [[ ! $PARTS ]]; then echo -en "\E[1F${SCRIPTLANG[71]}$NAMEOVFILE${SCRIPTLANG[72]}$E_BLANK"; fi

elif [[ -f $STUPIDWAY$NAMEOVFILE && ! $DELMODE ]]
then
	echo "This file already exist... Please choose another name or restart the script with the -d (delete) option."
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	TESTIFFILEEXISTANDTHEN "$CRUNCHCOMMAND"
fi

}


# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.
# .    "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.
# .                      Languages                          " 
# .-"-.     .-"-.     .-"-.     .-"-.     .-"-.     .-"-.    "
#      "-.-"     "-.-"     "-.-"     "-.-"     "-.-"     "-.-"

function CHOOSELANG {

clear

echo -e " .---------------------------------------------------------------------.
|                   :   \E[1;91mGiga password generator"$E_NORMAL"    :                   |
|  .................:          v1.3.1              :.................  |
|  :                :..............................:                :  |
|  :                                                                :  |
|  :               A simple way to generate wordlists               :  |
|  :                                                                :  |
|  :           Developped originally for Backtrack 3 Final          :  |
|  :                                                                :  |
|  :       Brought to you by M1ck3y & M1r4g3                        :  |
|  :               & modded by Tite-Live                            :  |
|  :                                               .................:  |
|  :                                               : Crunch powered :  |
|  :...............................................:................:  |
|                     \E[1;94mhttp://www.crack-wpa.fr\E[0;39m                          |
\`----------------------------------------------------------------------'"

echo " ___________________________________________________________
|================ Choose a language ========================|
|  1) English                                               |
|  2) French                                                |
|___________________________________________________________|
"
read -p "[---> " CLANG

case $CLANG in
	1)
	SCRIPTLANG[0]="\n
_____________________________________________________________\n
{ }________The Dictionary will be made of :_________________}\n
|                                                          \n
| 1) Numbers\n
| 2) Numbers + startblock choice\n
| 3) Uppercase letters\n
| 4) Uppercase letters +  startblock choice\n
| 5) Lowercase letters\n
| 6) Lowercase letters + startblock choice\n
| 7) Numbers + Uppercase letters\n
| 8) Numbers + Uppercase letters + startblock choice\n
| 9) Numbers + Lowercase letters\n
| 10) Numbers + Lowercase letters + startblock choice\n
| 11) Numbers + Uppercase letters + Lowercase letters\n
| 12) Numbers + Uppercase letters + Lowercase letters + startblock choice\n
| 13) Uppercase letters + Lowercase letters\n
| 14) Uppercase letters + Lowercase letters + startblock choice\n
| 15) Hexadecimal\n
| 16) Hexadecimal + startblock choice\n
| 17) Hexadecimal for WPA Livebox\n
| 18) Hexadecimal for WPA Livebox + startblock choice\n
| 19) Customized charset\n
| 20) Customized charset + startblock choice\n
| 21) Only Mask Startmask\n
| 22) Only Mask Endmask\n
| 23) Mask Startmask + Endmask\n
|____________________________________________________________\n
{_}__________________________________________________________}\n"
	SCRIPTLANG[1]="Your choice ? "
	SCRIPTLANG[2]="Please enter the following informations :"
	SCRIPTLANG[3]="Minimum length of passwords : "
	SCRIPTLANG[4]="Maximum length of passwords : "
	SCRIPTLANG[5]="Filename : "
	SCRIPTLANG[6]="File being created .."
	SCRIPTLANG[71]="Congratulations ! Your file '"
	SCRIPTLANG[72]="' has been successfull created !"
	SCRIPTLANG[8]="Processing..."
	SCRIPTLANG[9]="Startblock - first password of the file : "
	SCRIPTLANG[10]="Charset : "
	SCRIPTLANG[11]="Input file : "
	SCRIPTLANG[12]="Output file : "
	SCRIPTLANG[13]="Your mask before each line : "
	SCRIPTLANG[14]="Your mask after each line : "
	;;

	2)
	SCRIPTLANG[0]="\n
_____________________________________________________________\n
{ }________Le dictionnaire sera composé de :_________________}\n
|                                                          \n
| 1) Chiffres\n
| 2) Chiffres + choix startblock\n
| 3) Majuscules\n
| 4) Majuscules +  choix startblock\n
| 5) Minuscules\n
| 6) Minuscules + choix startblock\n
| 7) Chiffres + Majuscules\n
| 8) Chiffres + Majuscules + choix startblock\n
| 9) Chiffres + Minuscules\n
| 10) Chiffres + Minuscules + choix startblock\n
| 11) Chiffres + Majuscules + Minuscules\n
| 12) Chiffres + Majuscules + Minuscules + choix startblock\n
| 13) Majuscules + Minuscules\n
| 14) Majuscules + Minuscules + choix startblock\n
| 15) Hexadecimal\n
| 16) Hexadecimal + choix startblock\n
| 17) Hexadecimal spécial Livebox WPA\n
| 18) Hexadecimal spécial Livebox WPA + choix startblock\n
| 19) Charset personnalisé\n
| 20) Charset personnalisé + choix startblock\n
| 21) Mask Startmask seulement\n
| 22) Mask Endmask seulement\n
| 23) Mask Startmask + Endmask\n
|____________________________________________________________\n
{_}__________________________________________________________}\n"
	SCRIPTLANG[1]="Votre choix ? "
	SCRIPTLANG[2]="Veuillez entrer les informations suivantes : "
	SCRIPTLANG[3]="Longueur minimale des mots de passe : "
	SCRIPTLANG[4]="Longueur maximale des mots de passe : "
	SCRIPTLANG[5]="Nom du fichier de sortie : "
	SCRIPTLANG[6]="Fichier dictionnaire en cours de création..."
	SCRIPTLANG[71]="Félicitations ! Votre fichier '"
	SCRIPTLANG[72]="' a bien été créé !"
	SCRIPTLANG[8]="En cours de traitement..."
	SCRIPTLANG[9]="Startblock - premier mot de passe du fichier : "
	SCRIPTLANG[10]="Charset - votre jeu de caractères personnalisé : "
	SCRIPTLANG[11]="Fichier d'entrée : "
	SCRIPTLANG[12]="Fichier de sortie : "
	SCRIPTLANG[13]="Votre mask avant chaque ligne du dico : "
	SCRIPTLANG[14]="Votre mask après chaque ligne du dico : "
	;;

	*)
	echo "$CLANG is not a valid option... Please re-try in two seconds..."
	sleep 2
	CHOOSELANG
	;;

esac

WTMODE
}


function WTMODE {
clear

if [[ $PARTS ]]
then
	SAYWHOIAM 1
else
	SAYWHOIAM
fi

echo -e ${SCRIPTLANG[0]}
read -p "${SCRIPTLANG[1]}" WTCHOICE

LAUNCHMODE
}

function LAUNCHMODE {
clear

if [[ $PARTS ]]
then
	SAYWHOIAM 1
else
	SAYWHOIAM
fi


case $WTCHOICE in 

	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers                                   X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	1)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" " " " " " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789 -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers + Startblock                      X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	2)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" " " " " " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789 -s $FIRSTWORD -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Uppercase letters                         X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	3)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " "X" " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH ABCDEFGHIJKLMNOPQRSTUVWXYZ -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Uppercase + Startblock                    X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	4)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " "X" " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH ABCDEFGHIJKLMNOPQRSTUVWXYZ -s $FIRSTWORD -stdout:63"

	;; 


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Lowercase letters                         X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	5)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " "X" " " " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH abcdefghijklmnopqrstuvwxyz -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Lowercase + Startblock                    X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	6)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " "X" " " " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH abcdefghijklmnopqrstuvwxyz -s $FIRSTWORD -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers + Uppercase                       X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	7)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" " " "X" " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers + Uppercase + Startblock          X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	8)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" " " "X" " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ -s $FIRSTWORD -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers + Lowercase                       X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	9)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" " " "X" " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789abcdefghijklmnopqrstuvwxyz -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers + Lowercase + Startblock          X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	10)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" " " "X" " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789abcdefghijklmnopqrstuvwxyz -s $FIRSTWORD -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Numbers + Lowercase + Uppercase           X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	11)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" "X" "X" " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X   Numbers + Lowercase + Uppercase + Startblock   X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	12)
	echo "Mode $WTCHOICE : "
	FUNCTABLE "X" "X" "X" " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -s $FIRSTWORD -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X             Lowercase + Uppercase                X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	13)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " "X" "X" " " " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X        Lowercase + Uppercase + Startblock        X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	14)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " "X" "X" " " " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -s $FIRSTWORD -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X                  Hexadecimal                     X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	15)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " "X" " " " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 1
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789ABCDEF -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X                  Hexadecimal + Startblock        X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	16)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " "X" " " "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	ZIQUESTIONS 2
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH 0123456789ABCDEF -s $FIRSTWORD -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X                  Hexadecimal Livebox             X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	17)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " "X" " " " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	echo
	echo ${SCRIPTLANG[6]}
	TESTIFFILEEXISTANDTHEN "$CRUNCH 26 26 0123456789ABCDEF -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X       Hexadecimal Livebox + Startblock           X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	18)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " "X" "X" " " " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[9]}" FIRSTWORD
	echo
	echo ${SCRIPTLANG[6]}
	TESTIFFILEEXISTANDTHEN "$CRUNCH 26 26 0123456789ABCDEF -s $FIRSTWORD -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X           Charset perso                          X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	19)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " " " " " "X" " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[3]}" MINLENGTH
	read -p "(*) ${SCRIPTLANG[4]}" MAXLENGTH
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[10]}" DACHARSET
	echo
	echo ${SCRIPTLANG[6]}
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH $DACHARSET -stdout:63"

	;;


	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X           Charset perso + Startblock             X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	20)
	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " " " "X" "X" " " " " " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[3]}" MINLENGTH
	read -p "(*) ${SCRIPTLANG[4]}" MAXLENGTH
	read -p "(*) ${SCRIPTLANG[5]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[9]}" FIRSTWORD
	read -p "(*) ${SCRIPTLANG[10]}" DACHARSET
	echo
	echo ${SCRIPTLANG[6]}
	TESTIFFILEEXISTANDTHEN "$CRUNCH $MINLENGTH $MAXLENGTH $DACHARSET -s $FIRSTWORD -stdout:63"

	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X           Mask startmask                         X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	21)

	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " " " " " " " "X" "X" " "
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[11]}" INPUTFILE
		if [[ ! -e $STUPIDWAY$INPUTFILE ]]; then echo "This file doesnt not exist, please choose another one :)"; sleep 2; LAUNCHMODE; fi
	read -p "(*) ${SCRIPTLANG[12]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[13]}" STARTMASK
	echo
	
	echo ${SCRIPTLANG[6]}

	if [[ $PARTS ]]; then SAYWHOIAM 2; fi
	COWCANDANCE &

	while read line
	do
		echo $STARTMASK$line
	done <$STUPIDWAY$INPUTFILE > $STUPIDWAY$NAMEOVFILE

	sleep 1
	clear
	if [[ $PARTS ]]; then SAYWHOIAM 4; else	
		SAYWHOIAM
		echo "Mode $WTCHOICE : "
		FUNCTABLE " " " " " " " " " " " " " " "X" "X" " "
		#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
		#          1   2   3   4   5   6   7   8   9   10
		echo -e "\n${SCRIPTLANG[71]}$NAMEOVFILE${SCRIPTLANG[72]}"
	fi
	
	exit 0
	;;



	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X           Mask endmask                           X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	22)

	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " " " " " " " "X" " " "X"
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[11]}" INPUTFILE
		if [[ ! -e $STUPIDWAY$INPUTFILE ]]; then echo "This file doesnt not exist, please choose another one :)"; sleep 2; LAUNCHMODE; fi
	read -p "(*) ${SCRIPTLANG[12]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[14]}" ENDMASK
	echo
	
	echo ${SCRIPTLANG[6]}
	
	if [[ $PARTS ]]; then SAYWHOIAM 2; fi

	COWCANDANCE &

	while read line
	do
		echo $line$ENDMASK
	done <$STUPIDWAY$INPUTFILE > $STUPIDWAY$NAMEOVFILE

	sleep 1
	clear
	if [[ $PARTS ]]; then SAYWHOIAM 4; else	
		SAYWHOIAM
		echo "Mode $WTCHOICE : "
		FUNCTABLE " " " " " " " " " " " " " " "X" " " "X"
		#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
		#          1   2   3   4   5   6   7   8   9   10
		echo -e "\n${SCRIPTLANG[71]}$NAMEOVFILE${SCRIPTLANG[72]}"
	fi
	exit 0
	;;




	#  _                                                  _
	# ( )-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,( )
	#  X           Mask startmask + endmask               X 
	# (_)-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,-' `-. ,(_)
	23)

	echo "Mode $WTCHOICE : "
	FUNCTABLE " " " " " " " " " " " " " " "X" "X" "X"
	#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
	#          1   2   3   4   5   6   7   8   9   10

	echo 
	echo ${SCRIPTLANG[2]}
	read -p "(*) ${SCRIPTLANG[11]}" INPUTFILE
		if [[ ! -e $STUPIDWAY$INPUTFILE ]]; then echo "This file doesnt not exist, please choose another one :)"; sleep 2; LAUNCHMODE; fi
	read -p "(*) ${SCRIPTLANG[12]}" NAMEOVFILE
	read -p "(*) ${SCRIPTLANG[13]}" STARTMASK
	read -p "(*) ${SCRIPTLANG[14]}" ENDMASK
	echo
	
	echo ${SCRIPTLANG[6]}
	
	if [[ $PARTS ]]; then SAYWHOIAM 2; fi

	COWCANDANCE &

	while read line
	do
		echo $STARTMASK$line$ENDMASK
	done <$STUPIDWAY$INPUTFILE > $STUPIDWAY$NAMEOVFILE

	sleep 1
	clear
	if [[ $PARTS ]]; then SAYWHOIAM 4; else	
		SAYWHOIAM
		echo "Mode $WTCHOICE : "
		FUNCTABLE " " " " " " " " " " " " " " "X" "X" "X"
		#          ^   ^   ^   ^   ^   ^   ^   ^   ^   ^
		#          1   2   3   4   5   6   7   8   9   10
		echo -e "\n${SCRIPTLANG[71]}$NAMEOVFILE${SCRIPTLANG[72]}"
	fi
	exit 0
	;;

	*)
	clear
	echo -e "$E_BOLD$WTCHOICE is not a valid option... Please re-try in two seconds...$E_NORMAL"
	sleep 2
	WTMODE
	;;
esac


}


# -- Start --
	CHOOSELANG

# -- End --
	killall crunch > /dev/null 2>&1
	exit 0
