Beispiel #1
0
    def send_add_lvap(self, lvap, block, set_mask):
        """Send a ADD_LVAP message.
        Args:
            lvap: an LVAP object
        Returns:
            None
        Raises:
            TypeError: if lvap is not an LVAP object.
        """

        flags = Container(authenticated=lvap.authentication_state,
                          associated=lvap.association_state,
                          set_mask=set_mask)

        encap = EtherAddress("00:00:00:00:00:00")

        if lvap.encap:
            encap = lvap.encap

        add_lvap = Container(version=PT_VERSION,
                             type=PT_ADD_LVAP,
                             length=51,
                             seq=self.wtp.seq,
                             module_id=lvap.module_id,
                             flags=flags,
                             assoc_id=lvap.assoc_id,
                             hwaddr=block.hwaddr.to_raw(),
                             channel=block.channel,
                             band=block.band,
                             supported_band=lvap.supported_band,
                             sta=lvap.addr.to_raw(),
                             encap=encap.to_raw(),
                             net_bssid=lvap.net_bssid.to_raw(),
                             lvap_bssid=lvap.lvap_bssid.to_raw(),
                             ssids=[])

        if lvap.ssid:
            b_ssid = lvap.ssid.to_raw()
            tmp = Container(length=len(b_ssid), ssid=b_ssid)
            add_lvap.ssids.append(tmp)
            add_lvap.length = add_lvap.length + len(b_ssid) + 1
        else:
            add_lvap.ssids.append(Container(length=0, ssid=b''))
            add_lvap.length = add_lvap.length + 1

        for ssid in lvap.ssids:
            b_ssid = ssid.to_raw()
            tmp = Container(length=len(b_ssid), ssid=b_ssid)
            add_lvap.ssids.append(tmp)
            add_lvap.length = add_lvap.length + len(b_ssid) + 1

        LOG.info("Add lvap %s", lvap)

        print(add_lvap)

        msg = ADD_LVAP.build(add_lvap)
        self.stream.write(msg)
    def send_add_lvap(self, lvap, block, set_mask):
        """Send a ADD_LVAP message."""

        flags = Container(authenticated=lvap.authentication_state,
                          associated=lvap.association_state,
                          set_mask=set_mask)

        encap = EtherAddress("00:00:00:00:00:00")
        if lvap.encap:
            encap = lvap.encap

        bssid = EtherAddress()
        if lvap.bssid:
            bssid = lvap.bssid

        ssid = SSID()
        if lvap.ssid:
            ssid = lvap.ssid

        msg = Container(length=78,
                        flags=flags,
                        assoc_id=lvap.assoc_id,
                        module_id=get_xid(),
                        hwaddr=block.hwaddr.to_raw(),
                        channel=block.channel,
                        band=block.band,
                        supported_band=lvap.supported_band,
                        sta=lvap.addr.to_raw(),
                        encap=encap.to_raw(),
                        bssid=bssid.to_raw(),
                        ssid=ssid.to_raw(),
                        networks=[])

        for network in lvap.networks:
            msg.length = msg.length + 6 + WIFI_NWID_MAXSIZE + 1
            msg.networks.append(
                Container(bssid=network[0].to_raw(), ssid=network[1].to_raw()))

        xid = self.send_message(PT_ADD_LVAP, msg)

        lvap.pending.append(xid)
    def send_add_lvap(self, lvap, block, set_mask):
        """Send a ADD_LVAP message.
        Args:
            lvap: an LVAP object
        Returns:
            None
        Raises:
            TypeError: if lvap is not an LVAP object.
        """

        flags = Container(authenticated=lvap.authentication_state,
                          associated=lvap.association_state,
                          set_mask=set_mask)

        encap = EtherAddress("00:00:00:00:00:00")

        if lvap.encap:
            encap = lvap.encap

        add_lvap = Container(version=PT_VERSION,
                             type=PT_ADD_LVAP,
                             length=44,
                             seq=self.wtp.seq,
                             flags=flags,
                             assoc_id=lvap.assoc_id,
                             hwaddr=block.hwaddr.to_raw(),
                             channel=block.channel,
                             band=block.band,
                             sta=lvap.addr.to_raw(),
                             encap=encap.to_raw(),
                             net_bssid=lvap.net_bssid.to_raw(),
                             lvap_bssid=lvap.lvap_bssid.to_raw(),
                             ssids=[])

        if lvap.ssid:
            b_ssid = lvap.ssid.to_raw()
            tmp = Container(length=len(b_ssid), ssid=b_ssid)
            add_lvap.ssids.append(tmp)
            add_lvap.length = add_lvap.length + len(b_ssid) + 1
        else:
            add_lvap.ssids.append(Container(length=0, ssid=b''))
            add_lvap.length = add_lvap.length + 1

        for ssid in lvap.ssids:
            b_ssid = ssid.to_raw()
            tmp = Container(length=len(b_ssid), ssid=b_ssid)
            add_lvap.ssids.append(tmp)
            add_lvap.length = add_lvap.length + len(b_ssid) + 1

        LOG.info("Add lvap %s", lvap)

        msg = ADD_LVAP.build(add_lvap)
        self.stream.write(msg)
Beispiel #4
0
    def __start_adv(self):
        """Star ctrl advertising."""

        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        info = fcntl.ioctl(sock.fileno(), 0x8927, struct.pack('256s',
                           self.__ifname[:15].encode('utf-8')))

        src = EtherAddress(':'.join(['%02x' % char for char in info[18:24]]))
        dst = EtherAddress("FF:FF:FF:FF:FF:FF")

        adv = Container(dst=dst.to_raw(),
                        src=src.to_raw(),
                        eth_type=0xEEEE,
                        ctrl=self.__ctrl_ip.packed,
                        port=self.__ctrl_port)

        self.__msg = CTRL_ADV.build(adv)

        self.__auto_cfg = \
            tornado.ioloop.PeriodicCallback(self.__auto_cfg_loop, 2000)

        self.__auto_cfg.start()
Beispiel #5
0
    def __start_adv(self):
        """Star ctrl advertising."""

        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

        info = fcntl.ioctl(sock.fileno(), 0x8927, struct.pack('256s',
                           self.__ifname[:15].encode('utf-8')))

        src = EtherAddress(':'.join(['%02x' % char for char in info[18:24]]))
        dst = EtherAddress("FF:FF:FF:FF:FF:FF")

        adv = Container(dst=dst.to_raw(),
                        src=src.to_raw(),
                        eth_type=0xEEEE,
                        ctrl=self.__ctrl_ip.packed,
                        port=self.__ctrl_port)

        self.__msg = CTRL_ADV.build(adv)

        self.__auto_cfg = \
            tornado.ioloop.PeriodicCallback(self.__auto_cfg_loop, 2000)

        self.__auto_cfg.start()