mirror of
https://github.com/vanhoefm/fragattacks.git
synced 2024-11-28 18:28:23 -05:00
tests: Additional P2P_SET coverage
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
25057d9227
commit
1872c52b8e
123
tests/hwsim/test_p2p_set.py
Normal file
123
tests/hwsim/test_p2p_set.py
Normal file
@ -0,0 +1,123 @@
|
||||
# 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_event(["CTRL-EVENT-CONNECTED"], timeout=20)
|
||||
if ev is None:
|
||||
raise Exception("Reassociation with the GO 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_status_field("ssid"):
|
||||
raise Exception("SSID postfix missing from status")
|
||||
if postfix not in dev[1].request("SCAN_RESULTS"):
|
||||
raise Exception("SSID postfix missing from scan results")
|
||||
finally:
|
||||
dev[0].request("P2P_SET ssid_postfix ")
|
Loading…
Reference in New Issue
Block a user