Skip to content

Instantly share code, notes, and snippets.

@teh
Created November 10, 2012 14:55
Show Gist options
  • Save teh/4051315 to your computer and use it in GitHub Desktop.
Save teh/4051315 to your computer and use it in GitHub Desktop.
mac changer
import dbus
bus = dbus.SystemBus()
NM = 'org.freedesktop.NetworkManager'
def get_manager():
proxy = bus.get_object(NM, '/org/freedesktop/NetworkManager')
return dbus.Interface(
proxy, NM)
def get_settings_object():
proxy = bus.get_object(NM, '/org/freedesktop/NetworkManager')
iface = dbus.Interface(proxy, 'org.freedesktop.DBus.Properties')
active = iface.Get(NM, 'ActiveConnections')[0]
active_proxy = bus.get_object(NM, active)
conn = dbus.Interface(
active_proxy, 'org.freedesktop.DBus.Properties'
).Get(
'org.freedesktop.NetworkManager.Connection.Active', 'Connection'
)
connproxy = bus.get_object(NM, conn)
return dbus.Interface(
connproxy,
'org.freedesktop.NetworkManager.Settings.Connection'
)
def to_byte_array(mac):
return dbus.Array([dbus.Byte(int(x, 16)) for x in mac.split(':')])
def change_mac():
settings = get_settings_object()
s = settings.GetSettings()
s['802-11-wireless']['cloned-mac-address'] = to_byte_array(
'6c:a8:12:3f:fc:b4')
key = settings.GetSecrets(
'802-11-wireless-security')['802-11-wireless-security']['psk']
s['802-11-wireless-security']['psk'] = key
settings.Update(s)
get_manager().Enable(False)
get_manager().Enable(True)
if __name__ == '__main__':
change_mac()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment