import subprocess
import optparse
import re

def add_value ():
    pharse=optparse.OptionParser()
    pharse.add_option("-i","--interface", dest="interface",help="Indicate a Interface")
    pharse.add_option("-m","--mac",dest="mac", help="new MAC address ")
    (options,arguments)= pharse.parse_args()
    if not options.interface:
       pharse.error("[-] Cannot find any interface to work on" )
    elif not options.mac:
        pharse.error("[-] Suggest a mac adress to be changed")

def change_mac (interface,mac):
    print("[-] Changing MAC adress of"+interface+"to"+mac)
    subprocess.call(["ifconfig",interface,"down"])
    subprocess.call(["ifconfig",interface,"hw", "ether",mac])
    subprocess.call(["ifconfig",interface,"up"])

def check_stats(interface):
    changed_mac= subprocess.check_output("ifconfig",interface)
    ifconfig_check= re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w",changed_mac)
    if ifconfig_check:
         return ifconfig_check.group(0)
    else:
        print("[-] Could not print mac adress of"+ interface)

options= add_value()
old_mac=check_stats(options.interface)
print(str(old_mac))
change_mac(options.interface,options.mac)
new_mac =check_stats(options.interface)
if new_mac==options.mac:
    print("[+]The MAC address was changed to "+str(new_mac))
else :
    print("[-]Mac address was not changed")