tests: Extend ap_pmf_inject_auth coverage for addresses/frames

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2019-08-29 11:52:26 +03:00
parent 3394def5a8
commit 1ccde13b86

View file

@ -549,34 +549,62 @@ def test_ap_pmf_inject_auth(dev, apdev):
dev[0].connect(ssid, psk="12345678", ieee80211w="2",
key_mgmt="WPA-PSK-SHA256", proto="WPA2",
scan_freq="2412")
hapd.wait_sta()
hwsim_utils.test_connectivity(dev[0], hapd)
bssid = hapd.own_addr().replace(':', '')
addr = dev[0].own_addr().replace(':', '')
# Inject an unprotected Authentication frame claiming to be from the
# associated STA.
auth = "b0003a01" + bssid + addr + bssid + '1000000001000000'
# associated STA, from another STA, from the AP's own address, from all
# zeros and all ones addresses, and from a multicast address.
hapd.request("SET ext_mgmt_frame_handling 1")
res = hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=%s" % auth)
failed = False
addresses = [ addr, "021122334455", bssid, 6*"00", 6*"ff", 6*"01" ]
for a in addresses:
auth = "b0003a01" + bssid + a + bssid + '1000000001000000'
res = hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=%s" % auth)
if "OK" not in res:
failed = True
hapd.request("SET ext_mgmt_frame_handling 0")
if "OK" not in res:
if failed:
raise Exception("MGMT_RX_PROCESS failed")
time.sleep(0.1)
ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=0.1)
if ev:
raise Exception("Unexpected disconnection reported on the STA")
# Verify that original association is still functional.
hwsim_utils.test_connectivity(dev[0], hapd)
# Inject an unprotected Association Request frame claiming to be from the
# associated STA.
auth = "00003a01" + bssid + addr + bssid + '2000' + '31040500' + '0008746573742d706d66' + '010802040b160c121824' + '301a0100000fac040100000fac040100000fac06c0000000000fac06'
# Inject an unprotected Association Request frame (with and without RSNE)
# claiming to be from the set of test addresses.
hapd.request("SET ext_mgmt_frame_handling 1")
res = hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=%s" % auth)
for a in addresses:
assoc = "00003a01" + bssid + a + bssid + '2000' + '31040500' + '0008746573742d706d66' + '010802040b160c121824' + '301a0100000fac040100000fac040100000fac06c0000000000fac06'
res = hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=%s" % assoc)
if "OK" not in res:
failed = True
assoc = "00003a01" + bssid + a + bssid + '2000' + '31040500' + '0008746573742d706d66' + '010802040b160c121824' + '3000'
res = hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=%s" % assoc)
if "OK" not in res:
failed = True
assoc = "00003a01" + bssid + a + bssid + '2000' + '31040500' + '0008746573742d706d66' + '010802040b160c121824'
res = hapd.request("MGMT_RX_PROCESS freq=2412 datarate=0 ssi_signal=-30 frame=%s" % assoc)
if "OK" not in res:
failed = True
hapd.request("SET ext_mgmt_frame_handling 0")
if "OK" not in res:
if failed:
raise Exception("MGMT_RX_PROCESS failed")
time.sleep(5)
ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=0.1)
if ev:
raise Exception("Unexpected disconnection reported on the STA")
# Verify that original association is still functional.
hwsim_utils.test_connectivity(dev[0], hapd)