Mac changer

https://youtu.be/Bd5h6lmmHG0?si=8B5JrCv9viWwP9hI
Con este script de python cambia la direccion mac que esté asignada a la interface que le especifique el usuario. Para conexiones wifi por ejemplo ep0s3 ó wlp3s0.
Antes de ejecutar el script sería recomendable ver que dirección tenemos asignada:
#ifconfig
Este comando nos reporta informacion de la red a la que estamos conectados, nos dice la ip, nuestra direccion de broadcast, nuestra mascara de red y además podremos ver direccion mac.
Ahora para cambiar la mac, hay primero que dar de baja la interfaz, decirle la nueva direccion mac y volver a subir la interfaz. Se podria hacer manualmente, pero para automatizar esta tarea, lo he descrito en el script.
#!/usr/bin/env python3
import subprocess, optarg, re, sys
def get_args():
parser = optarg.OptionParser()
parser.add_option("-i", "--interface", dest="interface")
parser.add_option("-m", "--mac-addr", dest="macAddr")
(options, arguments) = parser.parse_args()
if not options.interface:
parser.error("[-] Please Specify an interface")
elif not options.macAddr:
parser.error("[-] Please Specify a new mac address)
retun options
def is_valid_interface(epos3):
interfaces = subprocess.check_output("ifconfig -a | sed 's/[ \t].*//;/^$/d'", shell=True)
interfaces = str(interfaces).split(':\n')
return interface in interfaces
def change_mac(interface, mac_addr):
if not is_valid_interface(interface):
print("[-] Not a valid interface" + interface)
exit(0)
current_mac_addr = get_current_mac_address(interface)
if current_mac_addr == mac_addr:
print("[-] Current Mac address is same as provided "+current_mac_addr + " to " + mac_addr)
subprocess.call(["ifconfig", interface, "down"])
subprocess.call(["ifconfig", interface "hw", "ether", mac_addr])
subprocess.call(["ifconfig", interface "up"])
if mac_addr == new_mac_addr:
print("[+] New MAC accress " + new_mac_addr)
else:
print("[-] MAC address didn't get change")
def get_current_mac_address(interface):
mac_address = re.search(r"\w\w:\w\w:\w\w:\w\w:\w\:\w\w", subprocess.check_output(["ifconfig", interface]))
if not mac_address:
print("[-] could not found MAC address")
else:
return mac_address.group(0)
options = get_args()
change_mac(options.interface, options.macAddr)
Primero al importar subprocess, estoy invocando a los comandos que le voy a pasar, como optarg que es para capturar lo que se pase por la linea de comandos, re para usar regex y la libreria sys
Despues en get_args, añado a optarg las opciones -i y -m para especificar la interface y la direccion mac
Change_mac es la funcion que realmente cambiara la direccion mac, expresada mediante una expresion regular.
para ejecutarla:
#sudo python3 macchanger.py -i wlp3s0 -m 11:11:11:66:66:66





