Exemple #1
0
    def brute_country_code(self, query):
        utils.print_info("Brute the query with country code")
        #  && country=US
        raw_query = utils.just_b64_decode(utils.url_decode(query))
        if 'country' in query:
            raw_query = query.replace(
                utils.get_country_code(raw_query, source='fofa'), '[replace]')
        else:
            raw_query += '&& country:"[replace]"'

        for country_code in utils.full_country_code:
            query = raw_query.replace('[replace]', country_code)
            query = utils.url_encode(utils.just_b64_encode(query))
            url = 'https://fofa.so/result?page={0}&qbase64={1}'.format(
                str(1), query)

            self.sending(url)
Exemple #2
0
    def pages(self, page_num):
        for i in range(2, int(page_num) + 1):
            utils.print_info("Get more result from page: {0}".format(str(i)))

            query = utils.url_encode(
                utils.just_b64_encode(self.options['fofa_query']))
            url = 'https://fofa.so/result?page={0}&qbase64={1}'.format(
                str(i), query)
            utils.print_debug(self.options, url)
            r = sender.send_get(self.options, url, self.cookies)

            if r.status_code == 200:
                response = r.text
                if 'class="error"' in response:
                    utils.print_bad("Reach to the limit at page {0}".format(
                        str(i)))
                    return
                else:
                    soup = utils.soup(response)
                    self.analyze(soup)
Exemple #3
0
    def initial(self):
        # prepare url
        query = utils.url_encode(
            utils.just_b64_encode(self.options['fofa_query']))
        url = 'https://fofa.so/result?page={0}&qbase64={1}'.format(
            str(1), query)

        self.sending(url)

        # brute the country
        if self.options['brute']:
            self.brute_country_code(query)

        # repeat the routine with filter by city
        query_by_cities = self.optimize(query)
        if query_by_cities:
            for item in query_by_cities:
                utils.print_info(
                    "Get more result by filter with {0} city".format(
                        item.get('city')))
                self.sending(item.get('url'))
                time.sleep(1)