diff --git a/sublist3r.py b/sublist3r.py index 760e5ce..4d04476 100755 --- a/sublist3r.py +++ b/sublist3r.py @@ -152,7 +152,7 @@ class enumratorBase(object): self.silent = silent self.verbose = verbose self.headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', + 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.8', 'Accept-Encoding': 'gzip', @@ -672,58 +672,6 @@ class DNSdumpster(enumratorBaseThreaded): self.subdomains.append(subdomain.strip()) return links - -class Virustotal(enumratorBaseThreaded): - def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True): - subdomains = subdomains or [] - base_url = 'https://www.virustotal.com/ui/domains/{domain}/subdomains' - self.engine_name = "Virustotal" - self.q = q - super(Virustotal, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) - self.url = self.base_url.format(domain=self.domain) - return - - # the main send_req need to be rewritten - def send_req(self, url): - try: - resp = self.session.get(url, headers=self.headers, timeout=self.timeout) - except Exception as e: - self.print_(e) - resp = None - - return self.get_response(resp) - - # once the send_req is rewritten we don't need to call this function, the stock one should be ok - def enumerate(self): - while self.url != '': - resp = self.send_req(self.url) - resp = json.loads(resp) - if 'error' in resp: - self.print_(R + "[!] Error: Virustotal probably now is blocking our requests" + W) - break - if 'links' in resp and 'next' in resp['links']: - self.url = resp['links']['next'] - else: - self.url = '' - self.extract_domains(resp) - return self.subdomains - - def extract_domains(self, resp): - #resp is already parsed as json - try: - for i in resp['data']: - if i['type'] == 'domain': - subdomain = i['id'] - if not subdomain.endswith(self.domain): - continue - if subdomain not in self.subdomains and subdomain != self.domain: - if self.verbose: - self.print_("%s%s: %s%s" % (R, self.engine_name, W, subdomain)) - self.subdomains.append(subdomain.strip()) - except Exception: - pass - - class ThreatCrowd(enumratorBaseThreaded): def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True): subdomains = subdomains or []