#!/usr/bin/python import dbus import sys, os import time WPAS_DBUS_SERVICE = "fi.epitest.hostap.WPASupplicant" WPAS_DBUS_INTERFACE = "fi.epitest.hostap.WPASupplicant" WPAS_DBUS_OPATH = "/fi/epitest/hostap/WPASupplicant" WPAS_DBUS_INTERFACES_INTERFACE = "fi.epitest.hostap.WPASupplicant.Interface" WPAS_DBUS_INTERFACES_OPATH = "/fi/epitest/hostap/WPASupplicant/Interfaces" WPAS_DBUS_BSSID_INTERFACE = "fi.epitest.hostap.WPASupplicant.BSSID" def byte_array_to_string(s): import urllib r = "" for c in s: if c >= 32 and c < 127: r += "%c" % c else: r += urllib.quote(chr(c)) return r def main(): if len(sys.argv) != 2: print "Usage: wpas-test.py <interface>" os._exit(1) ifname = sys.argv[1] bus = dbus.SystemBus() wpas_obj = bus.get_object(WPAS_DBUS_SERVICE, WPAS_DBUS_OPATH) wpas = dbus.Interface(wpas_obj, WPAS_DBUS_INTERFACE) # See if wpa_supplicant already knows about this interface path = None try: path = wpas.getInterface(ifname) except dbus.dbus_bindings.DBusException, exc: if str(exc) != "wpa_supplicant knows nothing about this interface.": raise exc try: path = wpas.addInterface(ifname, {'driver': dbus.Variant('wext')}) except dbus.dbus_bindings.DBusException, exc: if str(exc) != "wpa_supplicant already controls this interface.": raise exc if_obj = bus.get_object(WPAS_DBUS_SERVICE, path) iface = dbus.Interface(if_obj, WPAS_DBUS_INTERFACES_INTERFACE) iface.scan() # Should really wait for the "scanResults" signal instead of sleeping time.sleep(5) res = iface.scanResults() print "Scanned wireless networks:" for opath in res: net_obj = bus.get_object(WPAS_DBUS_SERVICE, opath) net = dbus.Interface(net_obj, WPAS_DBUS_BSSID_INTERFACE) props = net.properties() # Convert the byte-array for SSID and BSSID to printable strings bssid = "" for item in props["bssid"]: bssid = bssid + ":%02x" % item bssid = bssid[1:] ssid = byte_array_to_string(props["ssid"]) wpa = "no" if props.has_key("wpaie"): wpa = "yes" wpa2 = "no" if props.has_key("rsnie"): wpa2 = "yes" freq = 0 if props.has_key("frequency"): freq = props["frequency"] caps = props["capabilities"] qual = props["quality"] level = props["level"] noise = props["noise"] maxrate = props["maxrate"] / 1000000 print " %s :: ssid='%s' wpa=%s wpa2=%s quality=%d%% rate=%d freq=%d" % (bssid, ssid, wpa, wpa2, qual, maxrate, freq) wpas.removeInterface(dbus.ObjectPath(path)) # Should fail here with unknown interface error iface.scan() if __name__ == "__main__": main()
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
p2p | Folder | 0755 |
|
|
60_wpa_supplicant | File | 267 B | 0755 |
|
dbus-listen-preq.py | File | 1.53 KB | 0644 |
|
ieee8021x.conf | File | 269 B | 0644 |
|
openCryptoki.conf | File | 1.12 KB | 0644 |
|
p2p-action-udhcp.sh | File | 1.68 KB | 0755 |
|
p2p-action.sh | File | 2.63 KB | 0755 |
|
p2p-nfc.py | File | 19.73 KB | 0644 |
|
plaintext.conf | File | 133 B | 0644 |
|
udhcpd-p2p.conf | File | 2.86 KB | 0644 |
|
wep.conf | File | 170 B | 0644 |
|
wpa-psk-tkip.conf | File | 181 B | 0644 |
|
wpa2-eap-ccmp.conf | File | 284 B | 0644 |
|
wpas-dbus-new-getall.py | File | 1.7 KB | 0644 |
|
wpas-dbus-new-signals.py | File | 5.93 KB | 0644 |
|
wpas-dbus-new-wps.py | File | 2.17 KB | 0644 |
|
wpas-dbus-new.py | File | 4.17 KB | 0644 |
|
wpas-test.py | File | 2.51 KB | 0644 |
|
wps-ap-cli | File | 1.15 KB | 0755 |
|
wps-nfc.py | File | 15.31 KB | 0644 |
|