'Process the Dot11 packets and add any desired clients to
observed_clients.
:param self: A Deauthentication object.
:param packet: A scapy.layers.RadioTap object.
:type self: Deauthentication
:type packet: scapy.layers.RadioTap
:return: list with the crafted Deauth/Disas packets
:rtype: list
.. note: addr1 = Destination address
addr2 = Sender address
Also this finds devices that are not associated with any
access point as they respond to the access point probes.'

def get_packet(self, packet):

    channels = []
    if packet.haslayer(dot11.Dot11):
        receiver = packet.addr1
        sender = packet.addr2
        if self._is_frenzy:
            bssid = packet.addr3
            try:
                channel = ord(packet[dot11.Dot11Elt][2].info)
                if (channel not in constants.ALL_2G_CHANNELS):
                    return (channels, self.packets_to_send)
                channels.append(str(channel))
            except (TypeError, IndexError):
                return (channels, self.packets_to_send)
            if (bssid == self._data.rogue_ap_mac):
                return (channels, self.packets_to_send)
        else:
            bssid = self._data.target_ap_bssid
            channels.append(self._data.target_ap_channel)
        non_valid_list = (self._non_client_addresses + self._observed_clients)
        if ((receiver not in non_valid_list) and (sender not in non_valid_list)):
            if (receiver == bssid):
                self._observed_clients.append(sender)
                self.packets_to_send += self._craft_packet(sender, receiver, bssid)
                self.packets_to_send += self._craft_packet(receiver, sender, bssid)
            elif (sender == bssid):
                self._observed_clients.append(receiver)
                self.packets_to_send += self._craft_packet(receiver, sender, bssid)
                self.packets_to_send += self._craft_packet(sender, receiver, bssid)
    return (channels, self.packets_to_send)
