Created
October 12, 2015 22:39
-
-
Save vinzdef/96325a8238380e631c98 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# MAC ADDRESS SPOOFER | |
MAC="" | |
for i in {0..5}; do | |
VAL=$RANDOM | |
PART=$(printf "%2X" $VAL) | |
MAC+=$(printf "%.2s" $PART) | |
if [ $i -lt 5 ] | |
then MAC+=":" | |
fi | |
done | |
echo $MAC | |
sudo ip link set dev wlp3s0 down | |
sudo ip link set dev wlp3s0 address $MAC | |
sudo ip link set dev wlp3s0 up |
I can exceed your data quota indeed.
lulz
love it - great work. The simple solutions are often the best solutions.
Your script inspired me so I built an expanded version...
#! /bin/bash
################################################################################
# __
# / _|
# _ __ ___ __ _ ___ ___ _ __ ___ ___ | |_
# | '_ ` _ \ / _` |/ __/ __| '_ \ / _ \ / _ \| _|
# | | | | | | (_| | (__\__ \ |_) | (_) | (_) | |
# |_| |_| |_|\__,_|\___|___/ .__/ \___/ \___/|_|
# | |
# |_|
#
################################################################################
#
## SCRIPT INFO: macspoof.sh
#
# Automatically generate and assign a new MAC address for the local system
#
# Default execution (without optional parameters) will generate a new MAC
# address and assign that new address to the system's local wireless card.
# This will effectively change the local system's hardware identity.
#
## USAGE EXAMPLE:
#
# ./macspoof.sh [OPTIONAL_PARAMETERS]
#
## OPTIONS:
#
# -h|--help Print this help text
# -s|--silent Avoid printing outputs to the terminal
# -m|--mac Output a ramdomly-generated MAC address
# -i|--interface Output the system's wireless interface
# -a|--mac-interface Output a randomly-generated MAC address
# and the system's wireless interface
#
## ATTRIBUTION:
#
# Inspired by @ghzmdr --> ghzmdr.github.io
# View inspiration source here: gist.github.com/ghzmdr/96325a8238380e631c98
#
# Expanded and assembled by h8rt3rmin8r for ResoNova International Consulting
# (resonova.com) for research purposes.
#
################################################################################
# Variable assignments and function declarations
MAC="" # Intentionally blank
INTERFACE=$(iw dev | awk '$1=="Interface"{print $2}')
ERR_OUT="ERROR: Something went wrong"
VB_SET="/dev/stdout"
MANPAGE="https://pastebin.com/raw/KEE8CZJr"
function macgen() {
# MAC Generator loop
for i in {0..5}; do
VAL=$RANDOM; PART=$(printf "%2X" $VAL); MAC+=$(printf "%.2s" $PART)
if [ $i -lt 5 ]; then MAC+=":"; fi
done
}
function macspoof() {
# Generate and apply a new MAC address to the system interface
macgen
# Inform user as to why password is required at this point
echo "Switching local MAC address with sudo..." &>${VB_SET}
sleep 0.6
sudo ip link set dev ${INTERFACE} down
sudo ip link set dev ${INTERFACE} address ${MAC}
sudo ip link set dev ${INTERFACE} up
echo "Done!" &>${VB_SET}; echo &>${VB_SET}
echo "${INTERFACE} has been set to ${MAC}" &>${VB_SET}
exit 0
}
# Validation filter (sanity check 'iw dev' output)
if [[ "$(echo ${INTERFACE} | wc -c)" -gt 8 ]]; then echo ${ERR_OUT}; exit 1; fi
# Optional output and process variations
if [[ ! "x$1" == "x" ]];
then
case "$1" in
-s|-silent|--silent|-q|-quiet|--quiet)
# Optional silent runtime
VB_SET="/dev/null"
;;
-m|-mac|--mac|--mac-address)
# Output random MAC only (for 3rd party use cases)
macgen; echo "${MAC}"; exit 0
;;
-i|-interface|--interface)
# Output interface only (for 3rd party use cases)
echo "${INTERFACE}"; exit 0
;;
-a|-all|--all|-im|-mi|-mac-interface|--mac-interface)
# Output interface and random MAC only (for 3rd party use cases)
macgen; echo "${MAC} -- ${INTERFACE}"; exit 0
;;
-h|-help|--help)
# Print the script help text
echo
curl -s ${MANPAGE}
echo; echo; exit
;;
esac
fi
# LET'S GO!
macspoof
Source is available here: macspoof.sh
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I can exceed your data quota indeed.