def brute(self): """ 枚举域名的SRV记录 """ names_path = data_storage_path.joinpath('srv_names.json') with open(names_path) as fp: names_dict = json.load(fp) query_map = map(lambda name: name + self.domain, names_dict) tasks = [] for query in query_map: tasks.append(self.query(query)) task_group = asyncio.gather(*tasks, loop=self.loop) self.loop.run_until_complete(asyncio.gather(task_group)) self.loop.close() results = task_group.result() for result in results: if result: for answer in result: subdomain = utils.match_subdomain(self.domain, answer.host) if subdomain: self.subdomains = self.subdomains.union(subdomain) else: logger.log('DEBUG', f'{answer.host}不是{self.domain}的子域') if not len(self.subdomains): logger.log('DEBUG', f'没有找到{self.domain}的SRV记录')
def gen_names(self): path = data_storage_path.joinpath('srv_prefixes.json') with open(path) as file: prefixes = json.load(file) names = map(lambda prefix: prefix + self.domain, prefixes) for name in names: self.names_que.put(name)
def brute(self): """ 枚举域名的SRV记录 """ path = data_storage_path.joinpath('srv_prefixes.json') with open(path) as file: prefixes = json.load(file) names = map(lambda prefix: prefix + self.domain, prefixes) tasks = [] for name in names: tasks.append(self.query(name)) loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) group = asyncio.gather(*tasks) results = loop.run_until_complete(group) for answer in results: if answer is None: continue for item in answer: subdomains = utils.match_subdomain(self.domain, str(item)) self.subdomains = self.subdomains.union(subdomains) if not len(self.subdomains): logger.log('DEBUG', f'没有找到{self.domain}的SRV记录')