Я пытаюсь заставить мой код работать с потоками, но он застревает, иногда в sqlite (запрос кажется не окончательным sh), а иногда в очереди (также останавливается и не продолжает выполнять код). Не знаю, как справиться с этой проблемой (она работает только в том случае, если она не является многопоточной, то есть по одному, что немного раздражает при грубой силе).
Заранее благодарен за любую помощь.
Весь код можно найти здесь: https://pastebin.com/aRNREBjp
Когда я запускаю этот словарь с 1500, он работает: https://pastebin.com/G54LyF2u
Но на этом с 5000 застрять: https://pastebin.com/1gGYCRV4
def runBrute(self, domain, wordlist, resolver, outfile, n_threads):
self.print_notif("Beginning brute force...")
# Parse Word List
file = open(wordlist)
content = file.read()
wordlists = content.splitlines()
# for sub in wordlists:
for sub in wordlists:
self.q.put(sub)
for t in range(int(n_threads)):
# start all threads
worker = Thread(target=self.resolve, args=(domain, resolver, outfile))
# daemon thread means a thread that will end when the main thread ends
worker.daemon = True
worker.start()
self.q.join()
def resolve(self, root, name_server, outfile):
while True:
# get the subdomain from the queue
sub = self.q.get()
# scan the subdomain
resolver = dns.resolver.Resolver()
resolver.nameservers = [name_server, ]
domain = sub + "." + root
# probably should check other records (A, AAAA, MX, NS), but this will do for now.
try:
answers = resolver.query(domain, RECORD_TYPE_A).rrset[0]
self.print_yay(f"{domain} => {answers}")
reversed_dns = []
try:
reversed_dns = socket.gethostbyaddr(str(answers))
except:
reversed_dns.append('')
val = (domain, str(answers), reversed_dns[0])
try:
self.cursor.execute("INSERT INTO servers (domain, address, reverse_dns) VALUES (%s, %s, %s)", val)
except:
pass
except:
pass
# we're done with scanning that subdomain
self.q.task_done()