mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-29 02:38:22 -05:00
c340e0e8f4
Wait on the group control interface to support configurations that use a dedicated P2P Device interface. Signed-off-by: Avraham Stern <avraham.stern@intel.com>
124 lines
4.5 KiB
Python
124 lines
4.5 KiB
Python
# P2P_SET test cases
|
|
# Copyright (c) 2014, Jouni Malinen <j@w1.fi>
|
|
#
|
|
# This software may be distributed under the terms of the BSD license.
|
|
# See README for more details.
|
|
|
|
def test_p2p_set(dev):
|
|
"""P2P_SET commands"""
|
|
for cmd in [ "",
|
|
"foo bar",
|
|
"noa 1",
|
|
"noa 1,2",
|
|
"noa 1,2,3",
|
|
"noa -1,0,0",
|
|
"noa 256,0,0",
|
|
"noa 0,-1,0",
|
|
"noa 0,0,-1",
|
|
"noa 0,0,1",
|
|
"noa 255,10,20",
|
|
"ps 1",
|
|
"ps 2",
|
|
"oppps 1",
|
|
"ctwindow 1",
|
|
"conc_pref foo",
|
|
"peer_filter foo",
|
|
"client_apsd 0",
|
|
"client_apsd 0,0",
|
|
"client_apsd 0,0,0",
|
|
"disc_int 1",
|
|
"disc_int 1 2",
|
|
"disc_int 2 1 10",
|
|
"disc_int -1 0 10",
|
|
"disc_int 0 -1 10",
|
|
"ssid_postfix 123456789012345678901234" ]:
|
|
if "FAIL" not in dev[0].request("P2P_SET " + cmd):
|
|
raise Exception("Invalid P2P_SET accepted: " + cmd)
|
|
|
|
def test_p2p_set_discoverability(dev):
|
|
"""P2P_SET discoverability"""
|
|
addr0 = dev[0].p2p_dev_addr()
|
|
addr1 = dev[1].p2p_dev_addr()
|
|
|
|
dev[0].p2p_start_go(freq="2412")
|
|
if "OK" not in dev[1].request("P2P_SET discoverability 0"):
|
|
raise Exception("P2P_SET discoverability 0 failed")
|
|
pin = dev[1].wps_read_pin()
|
|
dev[0].p2p_go_authorize_client(pin)
|
|
dev[1].p2p_connect_group(addr0, pin, timeout=20, social=True, freq="2412")
|
|
|
|
if not dev[2].discover_peer(addr1, timeout=10):
|
|
if not dev[2].discover_peer(addr1, timeout=10):
|
|
if not dev[2].discover_peer(addr1, timeout=10):
|
|
raise Exception("Could not discover group client")
|
|
|
|
peer = dev[2].get_peer(addr1)
|
|
if int(peer['dev_capab'], 16) & 0x02 != 0:
|
|
raise Exception("Discoverability dev_capab reported: " + peer['dev_capab'])
|
|
dev[2].p2p_stop_find()
|
|
|
|
if "OK" not in dev[1].request("P2P_SET discoverability 1"):
|
|
raise Exception("P2P_SET discoverability 1 failed")
|
|
dev[1].dump_monitor()
|
|
dev[1].group_request("REASSOCIATE")
|
|
ev = dev[1].wait_group_event(["CTRL-EVENT-CONNECTED"], timeout=20)
|
|
if ev is None:
|
|
raise Exception("Connection timed out")
|
|
|
|
dev[2].request("P2P_FLUSH")
|
|
if not dev[2].discover_peer(addr1, timeout=10):
|
|
if not dev[2].discover_peer(addr1, timeout=10):
|
|
if not dev[2].discover_peer(addr1, timeout=10):
|
|
raise Exception("Could not discover group client")
|
|
|
|
peer = dev[2].get_peer(addr1)
|
|
if int(peer['dev_capab'], 16) & 0x02 != 0x02:
|
|
raise Exception("Discoverability dev_capab reported: " + peer['dev_capab'])
|
|
dev[2].p2p_stop_find()
|
|
|
|
def test_p2p_set_managed(dev):
|
|
"""P2P_SET managed"""
|
|
addr0 = dev[0].p2p_dev_addr()
|
|
|
|
if "OK" not in dev[0].request("P2P_SET managed 1"):
|
|
raise Exception("P2P_SET managed 1 failed")
|
|
|
|
dev[0].p2p_listen()
|
|
if not dev[1].discover_peer(addr0):
|
|
raise Exception("Could not discover peer")
|
|
peer = dev[1].get_peer(addr0)
|
|
if int(peer['dev_capab'], 16) & 0x08 != 0x08:
|
|
raise Exception("Managed dev_capab not reported: " + peer['dev_capab'])
|
|
dev[1].p2p_stop_find()
|
|
|
|
if "OK" not in dev[0].request("P2P_SET managed 0"):
|
|
raise Exception("P2P_SET managed 0 failed")
|
|
|
|
if not dev[2].discover_peer(addr0):
|
|
raise Exception("Could not discover peer")
|
|
peer = dev[2].get_peer(addr0)
|
|
if int(peer['dev_capab'], 16) & 0x08 != 0:
|
|
raise Exception("Managed dev_capab reported: " + peer['dev_capab'])
|
|
dev[2].p2p_stop_find()
|
|
dev[0].p2p_stop_find()
|
|
|
|
def test_p2p_set_ssid_postfix(dev):
|
|
"""P2P_SET ssid_postfix"""
|
|
addr0 = dev[0].p2p_dev_addr()
|
|
addr1 = dev[1].p2p_dev_addr()
|
|
postfix = "12345678901234567890123"
|
|
|
|
try:
|
|
if "OK" not in dev[0].request("P2P_SET ssid_postfix " + postfix):
|
|
raise Exception("P2P_SET ssid_postfix failed")
|
|
dev[0].p2p_start_go(freq="2412")
|
|
pin = dev[1].wps_read_pin()
|
|
dev[0].p2p_go_authorize_client(pin)
|
|
dev[1].p2p_connect_group(addr0, pin, timeout=20, social=True, freq="2412")
|
|
if postfix not in dev[1].get_group_status_field("ssid"):
|
|
raise Exception("SSID postfix missing from status")
|
|
if postfix not in dev[1].group_request("SCAN_RESULTS"):
|
|
raise Exception("SSID postfix missing from scan results")
|
|
finally:
|
|
dev[0].request("P2P_SET ssid_postfix ")
|