def run(self): """ OneForAll running entrance :return: All subdomain results :rtype: list """ print(oneforall_banner) dt = datetime.now().strftime('%Y-%m-%d %H:%M:%S') print(f'[*] Starting OneForAll @ {dt}\n') logger.log('DEBUG', 'Python ' + utils.python_version()) logger.log('DEBUG', 'OneForAll ' + version) utils.check_dep() self.access_internet, self.in_china = utils.get_net_env() if self.access_internet and settings.enable_check_version: utils.check_version(version) logger.log('INFOR', 'Start running OneForAll') self.config_param() self.check_param() self.domains = utils.get_domains(self.target, self.targets) count = len(self.domains) logger.log('INFOR', f'Got {count} domains') if not count: logger.log('FATAL', 'Failed to obtain domain') exit(1) for domain in self.domains: self.domain = utils.get_main_domain(domain) self.main() if count > 1: utils.export_all(self.alive, self.fmt, self.path, self.datas) logger.log('INFOR', 'Finished OneForAll')
def run(self): logger.log('INFOR', f'Start running {self.source} module') if self.in_china is None: _, self.in_china = utils.get_net_env() self.domains = utils.get_domains(self.target, self.targets) for self.domain in self.domains: self.results = list() # 置空 all_subdomains = list() self.init_dict_path() self.check_brute_params() if self.recursive_brute: logger.log( 'INFOR', f'Start recursively brute the 1 layer subdomain' f' of {self.domain}') valid_subdomains = self.main(self.domain) all_subdomains.extend(valid_subdomains) # 递归爆破下一层的子域 # fuzz模式不使用递归爆破 if self.recursive_brute: for layer_num in range(1, self.recursive_depth): # 之前已经做过1层子域爆破 当前实际递归层数是layer+1 logger.log( 'INFOR', f'Start recursively brute the {layer_num + 1} ' f'layer subdomain of {self.domain}') for subdomain in all_subdomains: self.place = '*.' + subdomain # 进行下一层子域爆破的限制条件 num = subdomain.count('.') - self.domain.count('.') if num == layer_num: valid_subdomains = self.main(subdomain) all_subdomains.extend(valid_subdomains) logger.log( 'INFOR', f'Finished {self.source} module to brute {self.domain}') if not self.path: name = f'{self.domain}_brute_result.{self.fmt}' self.path = settings.result_save_dir.joinpath(name) # 数据库导出 if self.export: export.export_data(self.domain, alive=self.alive, limit='resolve', path=self.path, fmt=self.fmt)
def run(self): logger.log('INFOR', f'Start running {self.source} module') if self.in_china is None: _, self.in_china = utils.get_net_env() self.domains = utils.get_domains(self.target, self.targets) for self.domain in self.domains: self.results = list() # 置空 all_subdomains = list() self.init_dict_path() self.check_brute_params() if self.recursive_brute: logger.log('INFOR', f'Start recursively brute the 1 layer subdomain' f' of {self.domain}') valid_subdomains = self.main(self.domain) all_subdomains.extend(valid_subdomains) # Recursively # Fuzz mode does not use recursive blasting if self.recursive_brute: for layer_num in range(1, self.recursive_depth): # I have done 1 layer of subdomain blasting before, and the actual number of recursive layers is layer+1 logger.log('INFOR', f'Start recursively brute the {layer_num + 1} ' f'layer subdomain of {self.domain}') for subdomain in all_subdomains: self.place = '*.' + subdomain # Restrictions for the next level of subdomain blasting num = subdomain.count('.') - self.domain.count('.') if num == layer_num: valid_subdomains = self.main(subdomain) all_subdomains.extend(valid_subdomains) logger.log('INFOR', f'Finished {self.source} module to brute {self.domain}') if not self.path: name = f'{self.domain}_brute_result.{self.fmt}' self.path = settings.result_save_dir.joinpath(name) # Database export if self.export: export.export_data(self.domain, alive=self.alive, limit='resolve', path=self.path, fmt=self.fmt)