Example #1
0
def msg_handler(m, a):
    try:
        e, attr = genl.py_genlmsg_parse(nl.nlmsg_hdr(m), 0,
                                        nl80211.NL80211_ATTR_MAX, None)
        if nl80211.NL80211_ATTR_WIPHY_NAME in attr:
            print('wiphy %s' %
                  nl.nla_get_string(attr[nl80211.NL80211_ATTR_WIPHY_NAME]))
        if nl80211.NL80211_ATTR_WIPHY_BANDS in attr:
            fpol = nl.nla_policy_array(nl80211.NL80211_FREQUENCY_ATTR_MAX + 1)
            fpol[nl80211.NL80211_FREQUENCY_ATTR_FREQ].type = nl.NLA_U32
            fpol[nl80211.NL80211_FREQUENCY_ATTR_DISABLED].type = nl.NLA_FLAG
            fpol[
                nl80211.NL80211_FREQUENCY_ATTR_PASSIVE_SCAN].type = nl.NLA_FLAG
            fpol[nl80211.NL80211_FREQUENCY_ATTR_NO_IBSS].type = nl.NLA_FLAG
            fpol[nl80211.NL80211_FREQUENCY_ATTR_RADAR].type = nl.NLA_FLAG
            fpol[nl80211.NL80211_FREQUENCY_ATTR_MAX_TX_POWER].type = nl.NLA_U32

            nattrs = nl.nla_get_nested(attr[nl80211.NL80211_ATTR_WIPHY_BANDS])
            for nattr in nattrs:
                handle_band(nattr, fpol)
        if nl80211.NL80211_ATTR_CIPHER_SUITES in attr:
            ciphers = nl.nla_data(attr[nl80211.NL80211_ATTR_CIPHER_SUITES])
            num = len(ciphers) / 4
            if num > 0:
                print("\tSupported Ciphers:")
                for i in range(0, num, 4):
                    print("\t\t* %s" % cipher_name(ciphers[i:i + 4]))
        if nl80211.NL80211_ATTR_SUPPORTED_IFTYPES in attr:
            print("\tSupported interface modes:")
            ifattr = nl.nla_get_nested(
                attr[nl80211.NL80211_ATTR_SUPPORTED_IFTYPES])
            for nl_mode in ifattr:
                print("\t\t* %s" %
                      nl80211.nl80211_iftype2str[nl.nla_type(nl_mode)])
        if nl80211.NL80211_ATTR_SOFTWARE_IFTYPES in attr:
            print("\tsoftware interface modes (can always be added):")
            ifattr = nl.nla_get_nested(
                attr[nl80211.NL80211_ATTR_SOFTWARE_IFTYPES])
            for nl_mode in ifattr:
                print("\t\t* %s" %
                      nl80211.nl80211_iftype2str[nl.nla_type(nl_mode)])
        return nl.NL_SKIP
    except Exception as e:
        (t, v, tb) = sys.exc_info()
        print v.message
        traceback.print_tb(tb)
Example #2
0
def msg_handler(m, a):
	try:
		e, attr = genl.py_genlmsg_parse(nl.nlmsg_hdr(m), 0,
						nl80211.NL80211_ATTR_MAX, None)
		if nl80211.NL80211_ATTR_WIPHY_NAME in attr:
			print('wiphy %s' % nl.nla_get_string(attr[nl80211.NL80211_ATTR_WIPHY_NAME]))
		if nl80211.NL80211_ATTR_WIPHY_BANDS in attr:
			fpol = nl.nla_policy_array(nl80211.NL80211_FREQUENCY_ATTR_MAX + 1)
			fpol[nl80211.NL80211_FREQUENCY_ATTR_FREQ].type = nl.NLA_U32
			fpol[nl80211.NL80211_FREQUENCY_ATTR_DISABLED].type = nl.NLA_FLAG
			fpol[nl80211.NL80211_FREQUENCY_ATTR_PASSIVE_SCAN].type = nl.NLA_FLAG
			fpol[nl80211.NL80211_FREQUENCY_ATTR_NO_IBSS].type = nl.NLA_FLAG
			fpol[nl80211.NL80211_FREQUENCY_ATTR_RADAR].type = nl.NLA_FLAG
			fpol[nl80211.NL80211_FREQUENCY_ATTR_MAX_TX_POWER].type = nl.NLA_U32

			nattrs = nl.nla_get_nested(attr[nl80211.NL80211_ATTR_WIPHY_BANDS])
			for nattr in nattrs:
				handle_band(nattr, fpol)
		if nl80211.NL80211_ATTR_CIPHER_SUITES in attr:
			ciphers = nl.nla_data(attr[nl80211.NL80211_ATTR_CIPHER_SUITES])
			num = len(ciphers) / 4
			if num > 0:
				print("\tSupported Ciphers:");
				for i in range(0, num, 4):
					print("\t\t* %s" % cipher_name(ciphers[i:i+4]))
		if nl80211.NL80211_ATTR_SUPPORTED_IFTYPES in attr:
			print("\tSupported interface modes:")
			ifattr = nl.nla_get_nested(attr[nl80211.NL80211_ATTR_SUPPORTED_IFTYPES])
			for nl_mode in ifattr:
				print("\t\t* %s" % nl80211.nl80211_iftype2str[nl.nla_type(nl_mode)])
		if nl80211.NL80211_ATTR_SOFTWARE_IFTYPES in attr:
			print("\tsoftware interface modes (can always be added):")
			ifattr = nl.nla_get_nested(attr[nl80211.NL80211_ATTR_SOFTWARE_IFTYPES])
			for nl_mode in ifattr:
				print("\t\t* %s" % nl80211.nl80211_iftype2str[nl.nla_type(nl_mode)])
		return nl.NL_SKIP
	except Exception as e:
		(t,v,tb) = sys.exc_info()
		print v.message
		traceback.print_tb(tb)
Example #3
0
import sys
import traceback
import struct

from netlink.capi import (nla_policy_array, NLA_FLAG, NLA_U8, NLA_U16, NLA_U32,
                          NLA_U64, NLA_NESTED, nla_put_u32, nla_put,
                          NL_CB_DEFAULT, nlmsg_hdr, NL_SKIP)
from netlink.core import NLM_F_REQUEST, NLM_F_ACK, NLM_F_DUMP
from netlink.genl.capi import py_genlmsg_parse
import py80211.generated.defs as nl80211

from py80211.generated.policy import nl80211_policy
from base import *
import factory

bss_param_policy = nla_policy_array(nl80211.STA_BSS_PARAM_MAX + 1)
bss_param_policy[nl80211.STA_BSS_PARAM_CTS_PROT].type = NLA_FLAG
bss_param_policy[nl80211.STA_BSS_PARAM_SHORT_PREAMBLE].type = NLA_FLAG
bss_param_policy[nl80211.STA_BSS_PARAM_SHORT_SLOT_TIME].type = NLA_FLAG
bss_param_policy[nl80211.STA_BSS_PARAM_DTIM_PERIOD].type = NLA_U8
bss_param_policy[nl80211.STA_BSS_PARAM_BEACON_INTERVAL].type = NLA_U16


class bss_param(nl80211_object):
    pass


bitrate_policy = nla_policy_array(nl80211.RATE_INFO_MAX + 1)
bitrate_policy[nl80211.RATE_INFO_BITRATE].type = NLA_U16
bitrate_policy[nl80211.RATE_INFO_BITRATE32].type = NLA_U32
bitrate_policy[nl80211.RATE_INFO_MCS].type = NLA_U8
Example #4
0
import traceback

from netlink.capi import (nla_policy_array, NLA_U64, NLA_U32, NLA_U16, NLA_U8,
                          NLA_UNSPEC, NLA_FLAG, NL_CB_DEFAULT, nla_put,
                          nla_put_u32, nlmsg_hdr, py_nla_parse_nested, NL_SKIP,
                          nla_nest_start, nla_nest_end)
from netlink.core import NLM_F_REQUEST, NLM_F_ACK, NLM_F_DUMP
from netlink.genl.capi import genlmsg_hdr, py_genlmsg_parse

import py80211.generated.defs as nl80211

from py80211.generated.policy import nl80211_policy
from base import *
import factory

bss_policy = nla_policy_array(nl80211.BSS_MAX + 1)
bss_policy[nl80211.BSS_TSF].type = NLA_U64
bss_policy[nl80211.BSS_FREQUENCY].type = NLA_U32
bss_policy[nl80211.BSS_BSSID].type = NLA_UNSPEC
bss_policy[nl80211.BSS_BEACON_INTERVAL].type = NLA_U16
bss_policy[nl80211.BSS_CAPABILITY].type = NLA_U16
bss_policy[nl80211.BSS_INFORMATION_ELEMENTS].type = NLA_UNSPEC
bss_policy[nl80211.BSS_SIGNAL_MBM].type = NLA_U32
bss_policy[nl80211.BSS_SIGNAL_MBM].signed = True
bss_policy[nl80211.BSS_SIGNAL_UNSPEC].type = NLA_U8
bss_policy[nl80211.BSS_STATUS].type = NLA_U32
bss_policy[nl80211.BSS_SEEN_MS_AGO].type = NLA_U32
bss_policy[nl80211.BSS_BEACON_IES].type = NLA_UNSPEC
bss_policy[nl80211.BSS_BEACON_TSF].type = NLA_U64
bss_policy[nl80211.BSS_CHAN_WIDTH].type = NLA_U32
bss_policy[nl80211.BSS_PRESP_DATA].type = NLA_FLAG
Example #5
0
import sys
import traceback
import struct

from netlink.capi import (nla_policy_array, NLA_FLAG, NLA_U32, NLA_U16, NLA_U8,
                          NLA_NESTED, NLA_UNSPEC, nla_get_u32, nla_put_u32,
                          nla_put_flag, NL_CB_DEFAULT, NL_SKIP)
from netlink.core import NLM_F_REQUEST, NLM_F_ACK, NLM_F_DUMP
from netlink.genl.capi import py_genlmsg_parse
import generated.defs as nl80211

from generated.policy import nl80211_policy
from base import *
import factory

rate_policy = nla_policy_array(nl80211.BITRATE_ATTR_MAX + 1)
rate_policy[nl80211.BITRATE_ATTR_RATE].type = NLA_U32
rate_policy[nl80211.BITRATE_ATTR_2GHZ_SHORTPREAMBLE].type = NLA_FLAG


class wiphy_rate(nl80211_object):
    pass


freq_policy = nla_policy_array(nl80211.FREQUENCY_ATTR_MAX + 1)
freq_policy[nl80211.FREQUENCY_ATTR_FREQ].type = NLA_U32
freq_policy[nl80211.FREQUENCY_ATTR_DISABLED].type = NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_IBSS].type = NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_IR].type = NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_RADAR].type = NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_MAX_TX_POWER].type = NLA_U32
Example #6
0
import sys
import traceback
import struct

from netlink.capi import (nla_policy_array,
			  NLA_FLAG, NLA_U8, NLA_U16, NLA_U32, NLA_U64, NLA_NESTED,
			  nla_put_u32, nla_put, NL_CB_DEFAULT, nlmsg_hdr, NL_SKIP)
from netlink.core import NLM_F_REQUEST, NLM_F_ACK, NLM_F_DUMP
from netlink.genl.capi import py_genlmsg_parse
import generated.defs as nl80211

from generated.policy import nl80211_policy
from base import *
import factory

bss_param_policy = nla_policy_array(nl80211.STA_BSS_PARAM_MAX + 1)
bss_param_policy[nl80211.STA_BSS_PARAM_CTS_PROT].type = NLA_FLAG
bss_param_policy[nl80211.STA_BSS_PARAM_SHORT_PREAMBLE].type = NLA_FLAG
bss_param_policy[nl80211.STA_BSS_PARAM_SHORT_SLOT_TIME].type = NLA_FLAG
bss_param_policy[nl80211.STA_BSS_PARAM_DTIM_PERIOD].type = NLA_U8
bss_param_policy[nl80211.STA_BSS_PARAM_BEACON_INTERVAL].type = NLA_U16

class bss_param(nl80211_object):
	pass

bitrate_policy = nla_policy_array(nl80211.RATE_INFO_MAX + 1)
bitrate_policy[nl80211.RATE_INFO_BITRATE].type = NLA_U16
bitrate_policy[nl80211.RATE_INFO_BITRATE32].type = NLA_U32
bitrate_policy[nl80211.RATE_INFO_MCS].type = NLA_U8
bitrate_policy[nl80211.RATE_INFO_40_MHZ_WIDTH].type = NLA_FLAG
bitrate_policy[nl80211.RATE_INFO_SHORT_GI].type = NLA_FLAG
Example #7
0
import sys
import traceback

import netlink.capi as nl
import netlink.core as nlc
import netlink.genl.capi as genl
import generated.defs as nl80211

from generated.policy import nl80211_policy
from base import *

rate_policy = nl.nla_policy_array(nl80211.BITRATE_ATTR_MAX + 1)
rate_policy[nl80211.BITRATE_ATTR_RATE].type = nl.NLA_U32
rate_policy[nl80211.BITRATE_ATTR_2GHZ_SHORTPREAMBLE].type = nl.NLA_FLAG

class wiphy_rate(nl80211_object):
	policy = rate_policy
	max_attr = len(rate_policy)
	def __init__(self, attrs):
		nl80211_object.__init__(self, attrs, rate_policy)

freq_policy = nl.nla_policy_array(nl80211.FREQUENCY_ATTR_MAX + 1)
freq_policy[nl80211.FREQUENCY_ATTR_FREQ].type = nl.NLA_U32
freq_policy[nl80211.FREQUENCY_ATTR_DISABLED].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_IBSS].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_PASSIVE_SCAN].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_RADAR].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_MAX_TX_POWER].type = nl.NLA_U32
freq_policy[nl80211.FREQUENCY_ATTR_NO_HT40_MINUS].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_HT40_PLUS].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_80MHZ].type = nl.NLA_FLAG
Example #8
0
import sys
import traceback

import netlink.capi as nl
import netlink.core as nlc
import netlink.genl.capi as genl
import generated.defs as nl80211

from generated.policy import nl80211_policy
from base import *

rate_policy = nl.nla_policy_array(nl80211.BITRATE_ATTR_MAX + 1)
rate_policy[nl80211.BITRATE_ATTR_RATE].type = nl.NLA_U32
rate_policy[nl80211.BITRATE_ATTR_2GHZ_SHORTPREAMBLE].type = nl.NLA_FLAG


class wiphy_rate(nl80211_object):
    policy = rate_policy
    max_attr = len(rate_policy)

    def __init__(self, attrs):
        nl80211_object.__init__(self, attrs, rate_policy)


freq_policy = nl.nla_policy_array(nl80211.FREQUENCY_ATTR_MAX + 1)
freq_policy[nl80211.FREQUENCY_ATTR_FREQ].type = nl.NLA_U32
freq_policy[nl80211.FREQUENCY_ATTR_DISABLED].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_IBSS].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_PASSIVE_SCAN].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_RADAR].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_MAX_TX_POWER].type = nl.NLA_U32
Example #9
0
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
import sys
import traceback
import struct

import netlink.capi as nl
import netlink.core as nlc
import netlink.genl.capi as genl
import generated.defs as nl80211

from generated.policy import nl80211_policy
from base import *
import factory

rate_policy = nl.nla_policy_array(nl80211.BITRATE_ATTR_MAX + 1)
rate_policy[nl80211.BITRATE_ATTR_RATE].type = nl.NLA_U32
rate_policy[nl80211.BITRATE_ATTR_2GHZ_SHORTPREAMBLE].type = nl.NLA_FLAG

class wiphy_rate(nl80211_object):
	pass

freq_policy = nl.nla_policy_array(nl80211.FREQUENCY_ATTR_MAX + 1)
freq_policy[nl80211.FREQUENCY_ATTR_FREQ].type = nl.NLA_U32
freq_policy[nl80211.FREQUENCY_ATTR_DISABLED].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_IBSS].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_IR].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_RADAR].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_MAX_TX_POWER].type = nl.NLA_U32
freq_policy[nl80211.FREQUENCY_ATTR_NO_HT40_MINUS].type = nl.NLA_FLAG
freq_policy[nl80211.FREQUENCY_ATTR_NO_HT40_PLUS].type = nl.NLA_FLAG
Example #10
0
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
import sys
import traceback

import netlink.capi as nl
import netlink.core as nlc
import netlink.genl.capi as genl
import generated.defs as nl80211

from generated.policy import nl80211_policy
from base import *
import factory

bss_policy = nl.nla_policy_array(nl80211.BSS_MAX + 1)
bss_policy[nl80211.BSS_TSF].type = nl.NLA_U64
bss_policy[nl80211.BSS_FREQUENCY].type = nl.NLA_U32
bss_policy[nl80211.BSS_BSSID].type = nl.NLA_UNSPEC
bss_policy[nl80211.BSS_BEACON_INTERVAL].type = nl.NLA_U16
bss_policy[nl80211.BSS_CAPABILITY].type = nl.NLA_U16
bss_policy[nl80211.BSS_INFORMATION_ELEMENTS].type = nl.NLA_UNSPEC
bss_policy[nl80211.BSS_SIGNAL_MBM].type = nl.NLA_U32
bss_policy[nl80211.BSS_SIGNAL_MBM].signed = True
bss_policy[nl80211.BSS_SIGNAL_UNSPEC].type = nl.NLA_U8
bss_policy[nl80211.BSS_STATUS].type = nl.NLA_U32
bss_policy[nl80211.BSS_SEEN_MS_AGO].type = nl.NLA_U32
bss_policy[nl80211.BSS_BEACON_IES].type = nl.NLA_UNSPEC
bss_policy[nl80211.BSS_BEACON_TSF].type = nl.NLA_U64
bss_policy[nl80211.BSS_CHAN_WIDTH].type = nl.NLA_U32
bss_policy[nl80211.BSS_PRESP_DATA].type = nl.NLA_FLAG