diff options
Diffstat (limited to 'wpa_supplicant/examples/dpp-qrcode.py')
-rwxr-xr-x | wpa_supplicant/examples/dpp-qrcode.py | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/wpa_supplicant/examples/dpp-qrcode.py b/wpa_supplicant/examples/dpp-qrcode.py deleted file mode 100755 index b468d15cf9cd..000000000000 --- a/wpa_supplicant/examples/dpp-qrcode.py +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/python -# -# Example Android logcat to wpa_supplicant wrapper for QR Code scans -# Copyright (c) 2017, Qualcomm Atheros, Inc. -# -# This software may be distributed under the terms of the BSD license. -# See README for more details. - -import os -import sys -import argparse -import logging -import qrcode - -scriptsdir = os.path.dirname(os.path.realpath(sys.modules[__name__].__file__)) -sys.path.append(os.path.join(scriptsdir, '..', '..', 'wpaspy')) - -import wpaspy - -wpas_ctrl = '/var/run/wpa_supplicant' - -def wpas_connect(): - ifaces = [] - if os.path.isdir(wpas_ctrl): - try: - ifaces = [os.path.join(wpas_ctrl, i) for i in os.listdir(wpas_ctrl)] - except OSError as error: - print("Could not find wpa_supplicant: ", error) - return None - - if len(ifaces) < 1: - print("No wpa_supplicant control interface found") - return None - - for ctrl in ifaces: - try: - wpas = wpaspy.Ctrl(ctrl) - return wpas - except Exception as e: - pass - return None - -def dpp_logcat(): - for line in iter(sys.stdin.readline, ''): - if "ResultHandler: Launching intent: Intent" not in line: - continue - if "act=android.intent.action.VIEW" not in line: - continue - uri = None - for val in line.split(' '): - if val.startswith('dat='): - uri = val.split('=', 1)[1] - break - if not uri: - continue - if not uri.startswith('DPP:'): - continue - print("Found DPP bootstrap info URI:") - print(uri) - wpas = wpas_connect() - if not wpas: - print("Could not connect to wpa_supplicant") - print('') - continue - res = wpas.request("DPP_QR_CODE " + uri); - try: - id = int(res) - except ValueError: - print("QR Code URI rejected") - continue - print("QR Code URI accepted - ID=%d" % id) - print(wpas.request("DPP_BOOTSTRAP_INFO %d" % id)) - del wpas - -def dpp_display(curve): - wpas = wpas_connect() - if not wpas: - print("Could not connect to wpa_supplicant") - return - res = wpas.request("STATUS") - addr = None - for line in res.splitlines(): - if line.startswith("address="): - addr = line.split('=')[1] - break - cmd = "DPP_BOOTSTRAP_GEN type=qrcode" - cmd += " chan=81/1" - if addr: - cmd += " mac=" + addr.replace(':','') - if curve: - cmd += " curve=" + curve - res = wpas.request(cmd) - try: - id = int(res) - except ValueError: - print("Failed to generate bootstrap info URI") - return - print("Bootstrap information - ID=%d" % id) - print(wpas.request("DPP_BOOTSTRAP_INFO %d" % id)) - uri = wpas.request("DPP_BOOTSTRAP_GET_URI %d" % id) - print(uri) - print("ID=%d" % id) - qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_M, - border=3) - qr.add_data(uri, optimize=5) - qr.print_ascii(tty=True) - print("ID=%d" % id) - del wpas - -def main(): - parser = argparse.ArgumentParser(description='Android logcat to wpa_supplicant integration for DPP QR Code operations') - parser.add_argument('-d', const=logging.DEBUG, default=logging.INFO, - action='store_const', dest='loglevel', - help='verbose debug output') - parser.add_argument('--curve', '-c', - help='set a specific curve (P-256, P-384, P-521, BP-256R1, BP-384R1, BP-512R1) for key generation') - parser.add_argument('command', choices=['logcat', - 'display'], - nargs='?') - args = parser.parse_args() - - logging.basicConfig(level=args.loglevel) - - if args.command == "logcat": - dpp_logcat() - elif args.command == "display": - dpp_display(args.curve) - -if __name__ == '__main__': - main() |