示例#1
0
    def _add_command_args(self, commands):
        commands.add_argument(
            '--cracked',
            action='store_true',
            dest='cracked',
            help=Color.s('Display previously-cracked access points'))
        commands.add_argument('-cracked',
                              help=argparse.SUPPRESS,
                              action='store_true',
                              dest='cracked')

        commands.add_argument(
            '--check',
            action='store',
            metavar='file',
            nargs='?',
            const='<all>',
            dest='check_handshake',
            help=Color.
            s('Check a .cap file (or all hs/*.cap files) for WPA handshakes'))
        commands.add_argument('-check',
                              help=argparse.SUPPRESS,
                              action='store',
                              nargs='?',
                              const='<all>',
                              dest='check_handshake')

        commands.add_argument(
            '--crack',
            action='store_true',
            dest='crack_handshake',
            help=Color.s('Show commands to crack a captured handshake'))
示例#2
0
    def dump():
        ''' (Colorful) string representation of the configuration '''
        from util.color import Color

        max_len = 20
        for key in Configuration.__dict__.keys():
            max_len = max(max_len, len(key))

        result = Color.s('{W}%s  Value{W}\n' %
                         'Configuration Key'.ljust(max_len))
        result += Color.s('{W}%s------------------{W}\n' % ('-' * max_len))

        for (key, val) in sorted(Configuration.__dict__.iteritems()):
            if key.startswith('__') or type(
                    val) == staticmethod or val is None:
                continue
            result += Color.s("{G}%s {W} {C}%s{W}\n" %
                              (key.ljust(max_len), val))
        return result
示例#3
0
    def user_wants_to_continue(self, targets_remaining, attacks_remaining=0):
        ''' Asks user if attacks should continue onto other targets '''
        if attacks_remaining == 0 and targets_remaining == 0:
            # No targets or attacksleft, drop out
            return

        prompt_list = []
        if attacks_remaining > 0:
            prompt_list.append(
                Color.s('{C}%d{W} attack(s)' % attacks_remaining))
        if targets_remaining > 0:
            prompt_list.append(
                Color.s('{C}%d{W} target(s)' % targets_remaining))
        prompt = ' and '.join(prompt_list)
        Color.pl('{+} %s remain, do you want to continue?' % prompt)

        prompt = Color.s('{+} type {G}c{W} to {G}continue{W}' +
                         ' or {R}s{W} to {R}stop{W}: ')

        if raw_input(prompt).lower().startswith('s'):
            return False
        else:
            return True
示例#4
0
    def _add_global_args(self, glob):
        glob.add_argument(
            '-v',
            '--verbose',
            action='count',
            default=0,
            dest='verbose',
            help=Color.
            s('Shows more options ({C}-h -v{W}). Prints tool outputs. (default: {G}quiet{W})'
              ))

        glob.add_argument(
            '-i',
            action='store',
            dest='interface',
            metavar='[interface]',
            type=str,
            help=Color.s('Wireless interface to use (default: {G}ask{W})'))

        glob.add_argument(
            '-c',
            action='store',
            dest='channel',
            metavar='[channel]',
            type=int,
            help=Color.s(
                'Wireless channel to scan (default: {G}all channels{W})'))
        glob.add_argument('--channel',
                          help=argparse.SUPPRESS,
                          action='store',
                          dest='channel',
                          type=int)

        glob.add_argument(
            '-mac',
            '---random-mac',
            action='store_true',
            dest='random_mac',
            help=Color.s(
                'Randomize wireless card MAC address (default: {G}off{W})'))

        glob.add_argument(
            '-p',
            action='store',
            dest='scan_time',
            nargs='?',
            const=10,
            metavar='scantime',
            type=int,
            help=Color.
            s('{G}Pillage{W}: Attack all targets after {C}scantime{W} seconds'
              ))
        glob.add_argument('--pillage',
                          help=argparse.SUPPRESS,
                          action='store',
                          dest='scan_time',
                          nargs='?',
                          const=10,
                          type=int)

        glob.add_argument(
            '--kill',
            action='store_true',
            dest='kill_conflicting_processes',
            help=Color.
            s('Kill processes that conflict with Airmon/Airodump (default: {G}off{W})'
              ))

        glob.add_argument(
            '-5',
            '--5ghz',
            action='store_true',
            dest='five_ghz',
            help=self._verbose('Include 5Ghz channels (default: {G}off{W})'))

        glob.add_argument(
            '-b',
            action='store',
            dest='target_bssid',
            metavar='[bssid]',
            type=str,
            help=self._verbose(
                'BSSID (e.g. {GR}AA:BB:CC:DD:EE:FF{W}) of access point to attack'
            ))
        glob.add_argument('--bssid',
                          help=argparse.SUPPRESS,
                          action='store',
                          dest='target_bssid',
                          type=str)

        glob.add_argument(
            '-e',
            action='store',
            dest='target_essid',
            metavar='[essid]',
            type=str,
            help=self._verbose(
                'ESSID (e.g. {GR}NETGEAR07{W}) of access point to attack'))
        glob.add_argument('--essid',
                          help=argparse.SUPPRESS,
                          action='store',
                          dest='target_essid',
                          type=str)

        glob.add_argument(
            '-E',
            action='store',
            dest='ignore_essid',
            metavar='[text]',
            type=str,
            default=None,
            help=self._verbose(
                'Hides targets with ESSIDs that match the given text'))
        glob.add_argument('--ignore-essid',
                          help=argparse.SUPPRESS,
                          action='store',
                          dest='ignore_essid',
                          type=str)

        glob.add_argument(
            '--showb',
            action='store_true',
            dest='show_bssids',
            help=self._verbose('Show BSSIDs of targets while scanning'))

        glob.add_argument(
            '--nodeauths',
            action='store_true',
            dest='no_deauth',
            help=Color.
            s('Passive mode: Never deauthenticates clients (default: {G}deauth targets{W})'
              ))
        glob.add_argument('--no-deauths',
                          action='store_true',
                          dest='no_deauth',
                          help=argparse.SUPPRESS)
        glob.add_argument('-nd',
                          action='store_true',
                          dest='no_deauth',
                          help=argparse.SUPPRESS)

        glob.add_argument(
            '--num-deauths',
            action='store',
            type=int,
            dest='num_deauths',
            metavar="[num]",
            default=None,
            help=self._verbose(
                'Number of deauth packets to send (default: {G}%d{W})' %
                self.config.num_deauths))
示例#5
0
    def _add_wps_args(self, wps):
        wps.add_argument(
            '--wps',
            action='store_true',
            dest='wps_filter',
            help=Color.s('Filter to display only WPS-enabled networks'))
        wps.add_argument('-wps',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wps_filter')
        wps.add_argument(
            '--bully',
            action='store_true',
            dest='use_bully',
            help=Color.
            s('Use {C}bully{W} instead of {C}reaver{W} for WPS attacks (default: {G}reaver{W})'
              ))
        wps.add_argument(
            '--no-wps',
            action='store_true',
            dest='no_wps',
            help=Color.
            s('{O}NEVER{W} use WPS attacks (Pixie-Dust) on non-WEP networks (default: {G}off{W})'
              ))
        wps.add_argument(
            '--wps-only',
            action='store_true',
            dest='wps_only',
            help=Color.
            s('{G}ALWAYS{W} use WPS attacks (Pixie-Dust) on non-WEP networks (default: {G}off{W})'
              ))

        # Same as --wps-only
        wps.add_argument('--pixie',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wps_only')

        wps.add_argument(
            '--pixiet',
            action='store',
            dest='wps_pixie_timeout',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Time to wait before failing PixieDust attack (default: {G}%d sec{W})'
                % self.config.wps_pixie_timeout))
        wps.add_argument(
            '--pixiest',
            action='store',
            dest='wps_pixie_step_timeout',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Time to wait for a step to progress before failing PixieDust attack (default: {G}%d sec{W})'
                % self.config.wps_pixie_step_timeout))
        wps.add_argument(
            '--wpsmf',
            action='store',
            dest='wps_fail_threshold',
            metavar='[fails]',
            type=int,
            help=self._verbose(
                'Maximum number of WPS Failures before failing attack (default: {G}%d{W})'
                % self.config.wps_fail_threshold))
        wps.add_argument('-wpsmf',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wps_fail_threshold',
                         type=int)
        wps.add_argument(
            '--wpsmt',
            action='store',
            dest='wps_timeout_threshold',
            metavar='[timeouts]',
            type=int,
            help=self._verbose(
                'Maximum number of Timeouts before stopping (default: {G}%d{W})'
                % self.config.wps_timeout_threshold))
        wps.add_argument('-wpsmt',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wps_timeout_threshold',
                         type=int)
        wps.add_argument(
            '--ignore-ratelimit',
            action='store_false',
            dest='wps_skip_rate_limit',
            help=Color.s(
                'Ignores attack if WPS is rate-limited (default: {G}on{W})'))
        wps.add_argument('-ignore-ratelimit',
                         help=argparse.SUPPRESS,
                         action='store_false',
                         dest='wps_skip_rate_limit')
示例#6
0
    def _add_wpa_args(self, wpa):
        wpa.add_argument(
            '--wpa',
            action='store_true',
            dest='wpa_filter',
            help=Color.
            s('Filter to display only WPA-encrypted networks (includes WPS)'))
        wpa.add_argument('-wpa',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wpa_filter')

        wpa.add_argument(
            '--wpadt',
            action='store',
            dest='wpa_deauth_timeout',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Time to wait between sending Deauths (default: {G}%d sec{W})'
                % self.config.wpa_deauth_timeout))
        wpa.add_argument('-wpadt',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wpa_deauth_timeout',
                         type=int)

        wpa.add_argument(
            '--wpat',
            action='store',
            dest='wpa_attack_timeout',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Time to wait before failing WPA attack (default: {G}%d sec{W})'
                % self.config.wpa_attack_timeout))
        wpa.add_argument('-wpat',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wpa_attack_timeout',
                         type=int)

        wpa.add_argument(
            '--new-hs',
            action='store_true',
            dest='ignore_old_handshakes',
            help=Color.
            s('Captures new handshakes, ignores existing handshakes in ./hs (default: {G}off{W})'
              ))

        wpa.add_argument(
            '--hs-dir',
            action='store',
            dest='wpa_handshake_dir',
            metavar='[dir]',
            type=str,
            help=self._verbose(
                'Directory to store handshake files (default: {G}%s{W})' %
                self.config.wpa_handshake_dir))
        wpa.add_argument('-hs-dir',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wpa_handshake_dir',
                         type=str)

        wpa.add_argument(
            '--dict',
            action='store',
            dest='wordlist',
            metavar='[file]',
            type=str,
            help=Color.s(
                'File containing passwords for cracking (default: {G}%s{W})') %
            self.config.wordlist)

        # TODO: Uncomment the --strip option once it works
        '''
        wpa.add_argument('--strip',
            action='store_true',
            dest='wpa_strip_handshake',
            default=False,
            help=Color.s('Strip unnecessary packets from handshake capture using tshark'))
        '''
        wpa.add_argument('-strip',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wpa_strip_handshake')
示例#7
0
    def _add_wep_args(self, wep):
        # WEP
        wep.add_argument(
            '--wep',
            action='store_true',
            dest='wep_filter',
            help=Color.
            s('Filter to display only WEP-encrypted networks (default: {G}off{W})'
              ))
        wep.add_argument('-wep',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_filter')

        wep.add_argument(
            '--require-fakeauth',
            action='store_true',
            dest='require_fakeauth',
            help=Color.s(
                'Fails attacks if fake-auth fails (default: {G}off{W})'))
        wep.add_argument('--nofakeauth',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='require_fakeauth')
        wep.add_argument('-nofakeauth',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='require_fakeauth')

        wep.add_argument(
            '--pps',
            action='store',
            dest='wep_pps',
            metavar='[pps]',
            type=int,
            help=self._verbose(
                'Packets Per Second to replay (default: {G}%d pps{W})' %
                self.config.wep_pps))
        wep.add_argument('-pps',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wep_pps',
                         type=int)

        wep.add_argument(
            '--wept',
            action='store',
            dest='wep_timeout',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Seconds to wait before failing (default: {G}%d sec{W})' %
                self.config.wep_timeout))
        wep.add_argument('-wept',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wep_timeout',
                         type=int)

        wep.add_argument(
            '--wepca',
            action='store',
            dest='wep_crack_at_ivs',
            metavar='[ivs]',
            type=int,
            help=self._verbose(
                'Start cracking at this many IVs (default: {G}%d ivs{W})' %
                self.config.wep_crack_at_ivs))
        wep.add_argument('-wepca',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wep_crack_at_ivs',
                         type=int)

        wep.add_argument(
            '--weprs',
            action='store',
            dest='wep_restart_stale_ivs',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Restart aireplay if no new IVs appear (default: {G}%d sec{W})'
                % self.config.wep_restart_stale_ivs))
        wep.add_argument('-weprs',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wep_restart_stale_ivs',
                         type=int)

        wep.add_argument(
            '--weprc',
            action='store',
            dest='wep_restart_aircrack',
            metavar='[seconds]',
            type=int,
            help=self._verbose(
                'Restart aircrack after this delay (default: {G}%d sec{W})' %
                self.config.wep_restart_aircrack))
        wep.add_argument('-weprc',
                         help=argparse.SUPPRESS,
                         action='store',
                         dest='wep_restart_aircrack',
                         type=int)

        wep.add_argument('--arpreplay',
                         action='store_true',
                         dest='wep_attack_replay',
                         help=self._verbose(
                             'Use ARP-replay WEP attack (default: {G}on{W})'))
        wep.add_argument('-arpreplay',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_attack_replay')

        wep.add_argument(
            '--fragment',
            action='store_true',
            dest='wep_attack_fragment',
            help=self._verbose(
                'Use fragmentation WEP attack (default: {G}on{W})'))
        wep.add_argument('-fragment',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_attack_fragment')

        wep.add_argument(
            '--chopchop',
            action='store_true',
            dest='wep_attack_chopchop',
            help=self._verbose('Use chop-chop WEP attack (default: {G}on{W})'))
        wep.add_argument('-chopchop',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_attack_chopchop')

        wep.add_argument('--caffelatte',
                         action='store_true',
                         dest='wep_attack_caffe',
                         help=self._verbose(
                             'Use caffe-latte WEP attack (default: {G}on{W})'))
        wep.add_argument('-caffelatte',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_attack_caffelatte')

        wep.add_argument(
            '--p0841',
            action='store_true',
            dest='wep_attack_p0841',
            help=self._verbose('Use p0841 WEP attack (default: {G}on{W})'))
        wep.add_argument('-p0841',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_attack_p0841')

        wep.add_argument('--hirte',
                         action='store_true',
                         dest='wep_attack_hirte',
                         help=self._verbose(
                             'Use ARP-replay WEP attack (default: {G}on{W})'))
        wep.add_argument('-hirte',
                         help=argparse.SUPPRESS,
                         action='store_true',
                         dest='wep_attack_hirte')
示例#8
0
 def _verbose(self, msg):
     if self.verbose:
         return Color.s(msg)
     else:
         return argparse.SUPPRESS