Remote Exploit Forums

Go Back   Remote Exploit Forums > Specialist Topics > Programming


Programming A place for our community to discuss their own security related coding projects.

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 11-14-2009, 01:57 PM
thims's Avatar
Junior Member
 
Join Date: Nov 2009
Location: /dev/null
Posts: 5
Default shell script to change MAC address

While I am at it figured I would post this little snippet aswell.
I do realize there are other utilities to spoof the MAC address of devices, but I would rather us my own solution. (plus I was bored).

General Usage:
-h print help
-s generate random mac address and assign it
-u set mac address to what it was from the beginning

ToDo:
- add CLI flag to define interface
- add CLI flag to manually define mac address
- resolve issue with assigning the MAC, ifconfig has issues with certain mac address's not sure why yet.

Download: mediafire.com/download.php?hean10e25zi
Code:
Code:
#!/bin/bash
#
# Synopsis: MAC address spoofing utility
# Author:		thims (thims DOT local AT gmail DOT com)
# Version:  0.1
# Date:			20091104
# Comments: 
# ToDo:
#				- figure out why certain MAC addresss cause ifconfig to exit with error (Error: could not set spoofed MAC address, possibly try running againg)


# Editable variables
iface=wlan0															#desired interface
origMAC=ff:ff:ff:ff:ff:ff								#original MAC address


### Code Begins ###
spfMAC=
alph=(0 1 2 3 4 5 6 7 8 9 A B C D E F)
alph_len=${#alph[*]}


function help() {
cat << EOF
Usage: $0 [args]
    -h, --help     -  Print this help and exit
    -s, --spoof    -  Spoof MAC address to a randomly generated address
    -u, --unspoof  -  Return spoofed MAC address to original MAC address
EOF
}

function die() {
	if [ -n "$1" ] ;then
		echo "$1"
	fi
	exit 1
}

function genMAC() {
	for i in $(seq 6) 
	do
		for x in $(seq 2) 
		do
			spfMAC=${spfMAC}${alph[$((RANDOM % alph_len))]}
		done
		spfMAC=${spfMAC}:
	done
	spfMAC=${spfMAC:0:17}
}

function changeIface() {
	MAC="$1"
	
	ifconfig $iface &> /dev/null
	if [ $? -gt 0 ] ;then
		die "Error: IFACE $iface does not exist(possibly down?)"
	fi


	ifconfig $iface down
	ifconfig $iface inet hw ether $MAC up &> /dev/null
	# the following if is in place because ifconfig was being picky about certain MAC addresss
	if [ $? -gt 0 ] ;then
		die "Error: could not set spoofed MAC address, possibly try running againg"
	fi
}


if [ $UID -gt 0 ] ;then
	die "Error: Sorry dude, gotta be root!"
fi

while [ $# -gt 0 ] 
do
	case "$1" in
		"-h"|"--help")
			help
			die
		;;
		"-s"|"--spoof")
			genMAC
			changeIface $spfMAC
		;;
		"-u"|"--unspoof")
			changeIface $origMAC
		;;
		*)
			help
			die
		;;
	esac
	shift
done
All feeback welcome, I would love to hear your thoughts.
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 12:23 AM.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.2