Beispiel #1
0
    def __init__(self, args):
        super(HttpScan, self).__init__(args)
        self.session = requesocks.session()

        adapters.DEFAULT_RETRIES = self.args.max_retries
        self.tor = None
        if self.args.tor:
            self.out.log("Enabling TOR")
            self.tor = Torify()
            self.session.proxies = {'http': 'socks5://127.0.0.1:9050',
                                    'https': 'socks5://127.0.0.1:9050'}
            if self.args.check_tor:
                # Check TOR
                self.out.log("Checking IP via TOR")
                rip, tip = self.tor.check_ip(verbose=True)
                if tip is None:
                    self.out.log('TOR is not working properly!', logging.ERROR)
                    exit(-1)

        if self.args.cookies is not None:
            if path.exists(self.args.cookies) and path.isfile(self.args.cookies):
                self.cookies = MozillaCookieJar(self.args.cookies)
                self.cookies.load()
            else:
                # self.out.log('Could not find cookie file: %s' % self.args.load_cookies, logging.ERROR)
                self.cookies = Cookies.from_request(self.args.cookies)
        else:
            self.cookies = None

        self.ua = UserAgent() if self.args.user_agent is None else self.args.user_agent
Beispiel #2
0
class HttpScan(DummyScan):

    def __init__(self, args):
        super(HttpScan, self).__init__(args)
        self.session = requesocks.session()

        adapters.DEFAULT_RETRIES = self.args.max_retries
        self.tor = None
        if self.args.tor:
            self.out.log("Enabling TOR")
            self.tor = Torify()
            self.session.proxies = {'http': 'socks5://127.0.0.1:9050',
                                    'https': 'socks5://127.0.0.1:9050'}
            if self.args.check_tor:
                # Check TOR
                self.out.log("Checking IP via TOR")
                rip, tip = self.tor.check_ip(verbose=True)
                if tip is None:
                    self.out.log('TOR is not working properly!', logging.ERROR)
                    exit(-1)

        if self.args.cookies is not None:
            if path.exists(self.args.cookies) and path.isfile(self.args.cookies):
                self.cookies = MozillaCookieJar(self.args.cookies)
                self.cookies.load()
            else:
                # self.out.log('Could not find cookie file: %s' % self.args.load_cookies, logging.ERROR)
                self.cookies = Cookies.from_request(self.args.cookies)
        else:
            self.cookies = None

        self.ua = UserAgent() if self.args.user_agent is None else self.args.user_agent

    def filter(self, response):
        if response is None:
            return False

        # Filter responses and save responses that are matching ignore, allow rules
        if (self.args.allow is None and self.args.ignore is None) or \
                (self.args.allow is not None and response.status_code in self.args.allow) or \
                (self.args.ignore is not None and response.status_code not in self.args.ignore):
            # TODO: add regex search
            return True

        return False

    def scan_url(self, url):
        # TODO: add options
        r = None
        ex = None
        try:
            r = self.session.get(url)
        except Exception as e:
            ex = e
        finally:
            self.cb_response(url, r, ex)
        return r, ex

    def scan_host(self, host, urls):
        res = []

        for u in urls:
            url = get_full_url(host, u)
            r, ex = self.scan_url(url)
            self.out.logger.write_response(url, r, ex)
            if self.filter(r):
                self.out.write(url, r, ex)
                res.append((url, r, ex))
        return res

    def cb_scan_done(self, future):
        pass

    def cb_response(self, url, reponse, exception):
        pass
Beispiel #3
0
 def __init__(self, args):
     super(FutureScan, self).__init__(args)
     self.executor = futures.ThreadPoolExecutor(max_workers=args.threads)
     self.hosts = file_to_list(args.hosts, 'Hosts file not found!')
     self.urls = file_to_list(args.urls, 'Urls file not found!')
     self.tor = Torify()