Updated through tag hostap_2_5 from git://w1.fi/hostap.git
[mech_eap.git] / libeap / tests / hwsim / test_monitor_interface.py
1 # AP mode using the older monitor interface design
2 # Copyright (c) 2013, Jouni Malinen <j@w1.fi>
3 #
4 # This software may be distributed under the terms of the BSD license.
5 # See README for more details.
6
7 import logging
8 logger = logging.getLogger()
9 import time
10
11 import hwsim_utils
12 import hostapd
13 from wpasupplicant import WpaSupplicant
14
15 def test_monitor_iface_open(dev, apdev):
16     """Open connection using cfg80211 monitor interface on AP"""
17     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
18     wpas.interface_add("wlan5", drv_params="use_monitor=1")
19     id = wpas.add_network()
20     wpas.set_network(id, "mode", "2")
21     wpas.set_network_quoted(id, "ssid", "monitor-iface")
22     wpas.set_network(id, "key_mgmt", "NONE")
23     wpas.set_network(id, "frequency", "2412")
24     wpas.connect_network(id)
25
26     dev[0].connect("monitor-iface", key_mgmt="NONE", scan_freq="2412")
27
28 def test_monitor_iface_wpa2_psk(dev, apdev):
29     """WPA2-PSK connection using cfg80211 monitor interface on AP"""
30     wpas = WpaSupplicant(global_iface='/tmp/wpas-wlan5')
31     wpas.interface_add("wlan5", drv_params="use_monitor=1")
32     id = wpas.add_network()
33     wpas.set_network(id, "mode", "2")
34     wpas.set_network_quoted(id, "ssid", "monitor-iface-wpa2")
35     wpas.set_network(id, "proto", "WPA2")
36     wpas.set_network(id, "key_mgmt", "WPA-PSK")
37     wpas.set_network_quoted(id, "psk", "12345678")
38     wpas.set_network(id, "pairwise", "CCMP")
39     wpas.set_network(id, "group", "CCMP")
40     wpas.set_network(id, "frequency", "2412")
41     wpas.connect_network(id)
42
43     dev[0].connect("monitor-iface-wpa2", psk="12345678", scan_freq="2412")
44
45 def test_monitor_iface_multi_bss(dev, apdev):
46     """AP mode mmonitor interface with hostapd multi-BSS setup"""
47     params = { "ssid": "monitor-iface", "driver_params": "use_monitor=1" }
48     hapd = hostapd.add_ap(apdev[0]['ifname'], params)
49     hostapd.add_bss('phy3', apdev[0]['ifname'] + '-2', 'bss-2.conf')
50     dev[0].connect("monitor-iface", key_mgmt="NONE", scan_freq="2412")
51     dev[1].connect("bss-2", key_mgmt="NONE", scan_freq="2412")
52
53 def test_monitor_iface_unknown_sta(dev, apdev):
54     """AP mode monitor interface and Data frame from unknown STA"""
55     ssid = "monitor-iface-pmf"
56     passphrase = "12345678"
57     params = hostapd.wpa2_params(ssid=ssid, passphrase=passphrase)
58     params["wpa_key_mgmt"] = "WPA-PSK-SHA256"
59     params["ieee80211w"] = "2"
60     params['driver_params'] = "use_monitor=1"
61     hapd = hostapd.add_ap(apdev[0]['ifname'], params)
62
63     bssid = apdev[0]['bssid']
64     addr = dev[0].p2p_interface_addr()
65     dev[0].connect(ssid, psk=passphrase, ieee80211w="2",
66                    key_mgmt="WPA-PSK-SHA256", proto="WPA2",
67                    scan_freq="2412")
68     dev[0].request("DROP_SA")
69     # This protected Deauth will be ignored by the STA
70     hapd.request("DEAUTHENTICATE " + addr)
71     # But the unprotected Deauth from TX frame-from-unassoc-STA will now be
72     # processed
73     dev[0].request("DATA_TEST_CONFIG 1")
74     dev[0].request("DATA_TEST_TX " + bssid + " " + addr + " 0")
75     dev[0].request("DATA_TEST_CONFIG 0")
76     ev = dev[0].wait_event(["CTRL-EVENT-DISCONNECTED"], timeout=5)
77     if ev is None:
78         raise Exception("No disconnection")
79     dev[0].request("DISCONNECT")