1252190Srpaulo#!/usr/bin/python 2252190Srpaulo 3252190Srpauloimport dbus 4252190Srpauloimport sys 5252190Srpauloimport time 6252190Srpauloimport gobject 7252190Srpaulofrom dbus.mainloop.glib import DBusGMainLoop 8252190Srpaulo 9252190SrpauloWPAS_DBUS_SERVICE = "fi.w1.wpa_supplicant1" 10252190SrpauloWPAS_DBUS_INTERFACE = "fi.w1.wpa_supplicant1" 11252190SrpauloWPAS_DBUS_OPATH = "/fi/w1/wpa_supplicant1" 12252190SrpauloWPAS_DBUS_INTERFACES_INTERFACE = "fi.w1.wpa_supplicant1.Interface" 13252190Srpaulo 14252190Srpaulodef usage(): 15252190Srpaulo print "Usage: %s <ifname>" % sys.argv[0] 16252190Srpaulo print "Press Ctrl-C to stop" 17252190Srpaulo 18252190Srpaulodef ProbeRequest(args): 19252190Srpaulo if 'addr' in args: 20252190Srpaulo print '%.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['addr']), 21252190Srpaulo if 'dst' in args: 22252190Srpaulo print '-> %.2x:%.2x:%.2x:%.2x:%.2x:%.2x' % tuple(args['dst']), 23252190Srpaulo if 'bssid' in args: 24252190Srpaulo print '(bssid %.2x:%.2x:%.2x:%.2x:%.2x:%.2x)' % tuple(args['dst']), 25252190Srpaulo if 'signal' in args: 26252190Srpaulo print 'signal:%d' % args['signal'], 27252190Srpaulo if 'ies' in args: 28252190Srpaulo print 'have IEs (%d bytes)' % len(args['ies']), 29252190Srpaulo print '' 30252190Srpaulo 31252190Srpauloif __name__ == "__main__": 32252190Srpaulo global bus 33252190Srpaulo global wpas_obj 34252190Srpaulo global if_obj 35252190Srpaulo global p2p_iface 36252190Srpaulo 37252190Srpaulo dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) 38252190Srpaulo 39252190Srpaulo bus = dbus.SystemBus() 40252190Srpaulo wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH) 41252190Srpaulo 42252190Srpaulo # Print list of i/f if no one is specified 43252190Srpaulo if (len(sys.argv) < 2) : 44252190Srpaulo usage() 45252190Srpaulo sys.exit(0) 46252190Srpaulo 47252190Srpaulo wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE) 48252190Srpaulo 49252190Srpaulo ifname = sys.argv[1] 50252190Srpaulo 51252190Srpaulo path = wpas.GetInterface(ifname) 52252190Srpaulo 53252190Srpaulo if_obj = bus.get_object(WPAS_DBUS_SERVICE, path) 54252190Srpaulo iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE) 55252190Srpaulo 56252190Srpaulo bus.add_signal_receiver(ProbeRequest, 57252190Srpaulo dbus_interface=WPAS_DBUS_INTERFACES_INTERFACE, 58252190Srpaulo signal_name="ProbeRequest") 59252190Srpaulo 60252190Srpaulo iface.SubscribeProbeReq() 61252190Srpaulo 62252190Srpaulo gobject.MainLoop().run() 63