diff --git a/turbolist3r.py b/turbolist3r.py index 947565d..a4f0df3 100644 --- a/turbolist3r.py +++ b/turbolist3r.py @@ -297,12 +297,11 @@ class enumratorBase(object): class enumratorBaseThreaded(multiprocessing.Process, enumratorBase): - def __init__(self, base_url, engine_name, domain, subdomains=None, q=None, lock=threading.Lock(), silent=False, + def __init__(self, base_url, engine_name, domain, subdomains=None, q=None, silent=False, verbose=True): subdomains = subdomains or [] enumratorBase.__init__(self, base_url, engine_name, domain, subdomains, silent=silent, verbose=verbose) multiprocessing.Process.__init__(self) - self.lock = lock self.q = q return @@ -565,7 +564,6 @@ class NetcraftEnum(enumratorBaseThreaded): subdomains = subdomains or [] self.base_url = 'https://searchdns.netcraft.com/?restriction=site+ends+with&host={domain}' self.engine_name = "Netcraft" - self.lock = threading.Lock() super(NetcraftEnum, self).__init__(self.base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) self.q = q @@ -641,6 +639,7 @@ class DNSdumpster(enumratorBaseThreaded): self.threads = 70 self.lock = threading.BoundedSemaphore(value=self.threads) self.q = q + self.lock = None super(DNSdumpster, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) return @@ -698,6 +697,7 @@ class DNSdumpster(enumratorBaseThreaded): return token.strip() def enumerate(self): + self.lock = threading.BoundedSemaphore(value=70) resp = self.req('GET', self.base_url) token = self.get_csrftoken(resp) params = {'csrfmiddlewaretoken': token, 'targetip': self.domain} @@ -739,7 +739,6 @@ class Virustotal(enumratorBaseThreaded): subdomains = subdomains or [] base_url = 'https://www.virustotal.com/en/domain/{domain}/information/' self.engine_name = "Virustotal" - self.lock = threading.Lock() self.q = q super(Virustotal, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) @@ -784,7 +783,6 @@ class ThreatCrowd(enumratorBaseThreaded): subdomains = subdomains or [] base_url = 'https://www.threatcrowd.org/searchApi/v2/domain/report/?domain={domain}' self.engine_name = "ThreatCrowd" - self.lock = threading.Lock() self.q = q super(ThreatCrowd, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) @@ -831,7 +829,6 @@ class CrtSearch(enumratorBaseThreaded): subdomains = subdomains or [] base_url = 'https://crt.sh/?q=%25.{domain}' self.engine_name = "SSL Certificates" - self.lock = threading.Lock() self.q = q super(CrtSearch, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) @@ -878,7 +875,6 @@ class PassiveDNS(enumratorBaseThreaded): subdomains = subdomains or [] base_url = 'http://ptrarchive.com/tools/search.htm?label={domain}' self.engine_name = "PassiveDNS" - self.lock = threading.Lock() self.q = q super(PassiveDNS, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose) @@ -938,9 +934,7 @@ class portscan(): def __init__(self, subdomains, ports): self.subdomains = subdomains self.ports = ports - self.threads = 20 - self.lock = threading.BoundedSemaphore(value=self.threads) - + self.lock = None def port_scan(self, host, ports): openports = [] self.lock.acquire() @@ -959,6 +953,7 @@ class portscan(): print("%s%s%s - %sFound open ports:%s %s%s%s" % (G, host, W, R, W, Y, ', '.join(openports), W)) def run(self): + self.lock = threading.BoundedSemaphore(value=20) for subdomain in self.subdomains: t = threading.Thread(target=self.port_scan, args=(subdomain, self.ports)) t.start()