Skip to main content

Command Palette

Search for a command to run...

Mac changer

Updated
2 min readView as Markdown
Mac changer
H

#Telegram t.me/H4nnaHack

#hashnode https://h4nna.hashnode.dev/

#website https://h4nna.com

#Github https://github.com/h4nnahalt/

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