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)
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)
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)