3 from __future__ import print_function
8 from dbus.mainloop.glib import DBusGMainLoop
10 WPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1"
11 WPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1"
12 WPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1"
13 WPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface"
16 print("Usage: %s <ifname>" % sys.argv[0])
17 print("Press Ctrl-C to stop")
19 def ProbeRequest(args):
21 print('%.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['addr']),
24 print('-> %.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['dst']),
27 print('(bssid %.2x:%.2x:%.2x:%.2x:%.2x:%.2x)' % tuple(args['dst']),
30 print('signal:%d' % args['signal'], end=' ')
32 print('have IEs (%d bytes)' % len(args['ies']), end=' ')
35 if __name__ == "__main__":
41 dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
43 bus = dbus.SystemBus()
44 wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH)
46 # Print list of i/f if no one is specified
47 if (len(sys.argv) < 2) :
51 wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE)
55 path = wpas.GetInterface(ifname)
57 if_obj = bus.get_object(WPAS_DBUS_SERVICE, path)
58 iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE)
60 bus.add_signal_receiver(ProbeRequest,
61 dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE,
62 signal_name="ProbeRequest")
64 iface.SubscribeProbeReq()
66 gobject.MainLoop().run()