Skip to content

Commit 729d649

Browse files
authored
Fixed cannot pickle '_thread.lock' error in python 3.8+
Fixed #236: cannot pickle '_thread.lock' object in python 3.8
2 parents 6af1b8c + da45743 commit 729d649

File tree

1 file changed

+7
-14
lines changed

1 file changed

+7
-14
lines changed

sublist3r.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,10 @@ def enumerate(self, altquery=False):
257257

258258

259259
class enumratorBaseThreaded(multiprocessing.Process, enumratorBase):
260-
def __init__(self, base_url, engine_name, domain, subdomains=None, q=None, lock=threading.Lock(), silent=False, verbose=True):
260+
def __init__(self, base_url, engine_name, domain, subdomains=None, q=None, silent=False, verbose=True):
261261
subdomains = subdomains or []
262262
enumratorBase.__init__(self, base_url, engine_name, domain, subdomains, silent=silent, verbose=verbose)
263263
multiprocessing.Process.__init__(self)
264-
self.lock = lock
265264
self.q = q
266265
return
267266

@@ -525,7 +524,6 @@ def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True):
525524
subdomains = subdomains or []
526525
self.base_url = 'https://searchdns.netcraft.com/?restriction=site+ends+with&host={domain}'
527526
self.engine_name = "Netcraft"
528-
self.lock = threading.Lock()
529527
super(NetcraftEnum, self).__init__(self.base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose)
530528
self.q = q
531529
return
@@ -538,10 +536,10 @@ def req(self, url, cookies=None):
538536
self.print_(e)
539537
resp = None
540538
return resp
541-
539+
542540
def should_sleep(self):
543541
time.sleep(random.randint(1, 2))
544-
return
542+
return
545543

546544
def get_next(self, resp):
547545
link_regx = re.compile('<a.*?href="(.*?)">Next Page')
@@ -602,9 +600,8 @@ def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True):
602600
base_url = 'https://dnsdumpster.com/'
603601
self.live_subdomains = []
604602
self.engine_name = "DNSdumpster"
605-
self.threads = 70
606-
self.lock = threading.BoundedSemaphore(value=self.threads)
607603
self.q = q
604+
self.lock = None
608605
super(DNSdumpster, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose)
609606
return
610607

@@ -645,6 +642,7 @@ def get_csrftoken(self, resp):
645642
return token.strip()
646643

647644
def enumerate(self):
645+
self.lock = threading.BoundedSemaphore(value=70)
648646
resp = self.req('GET', self.base_url)
649647
token = self.get_csrftoken(resp)
650648
params = {'csrfmiddlewaretoken': token, 'targetip': self.domain}
@@ -680,7 +678,6 @@ def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True):
680678
subdomains = subdomains or []
681679
base_url = 'https://www.virustotal.com/ui/domains/{domain}/subdomains'
682680
self.engine_name = "Virustotal"
683-
self.lock = threading.Lock()
684681
self.q = q
685682
super(Virustotal, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose)
686683
self.url = self.base_url.format(domain=self.domain)
@@ -732,7 +729,6 @@ def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True):
732729
subdomains = subdomains or []
733730
base_url = 'https://www.threatcrowd.org/searchApi/v2/domain/report/?domain={domain}'
734731
self.engine_name = "ThreatCrowd"
735-
self.lock = threading.Lock()
736732
self.q = q
737733
super(ThreatCrowd, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose)
738734
return
@@ -771,7 +767,6 @@ def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True):
771767
subdomains = subdomains or []
772768
base_url = 'https://crt.sh/?q=%25.{domain}'
773769
self.engine_name = "SSL Certificates"
774-
self.lock = threading.Lock()
775770
self.q = q
776771
super(CrtSearch, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose)
777772
return
@@ -818,13 +813,11 @@ def extract_domains(self, resp):
818813
print(e)
819814
pass
820815

821-
822816
class PassiveDNS(enumratorBaseThreaded):
823817
def __init__(self, domain, subdomains=None, q=None, silent=False, verbose=True):
824818
subdomains = subdomains or []
825819
base_url = 'https://api.sublist3r.com/search.php?domain={domain}'
826820
self.engine_name = "PassiveDNS"
827-
self.lock = threading.Lock()
828821
self.q = q
829822
super(PassiveDNS, self).__init__(base_url, self.engine_name, domain, subdomains, q=q, silent=silent, verbose=verbose)
830823
return
@@ -862,8 +855,7 @@ class portscan():
862855
def __init__(self, subdomains, ports):
863856
self.subdomains = subdomains
864857
self.ports = ports
865-
self.threads = 20
866-
self.lock = threading.BoundedSemaphore(value=self.threads)
858+
self.lock = None
867859

868860
def port_scan(self, host, ports):
869861
openports = []
@@ -883,6 +875,7 @@ def port_scan(self, host, ports):
883875
print("%s%s%s - %sFound open ports:%s %s%s%s" % (G, host, W, R, W, Y, ', '.join(openports), W))
884876

885877
def run(self):
878+
self.lock = threading.BoundedSemaphore(value=20)
886879
for subdomain in self.subdomains:
887880
t = threading.Thread(target=self.port_scan, args=(subdomain, self.ports))
888881
t.start()

0 commit comments

Comments
 (0)