def export(table, db=None, valid=False, limit=None, path=None, format='csv', show=False): """ OneForAll数据库导出模块 Example: python3 dbexport.py --table name --format csv --dir= ./result.csv python3 dbexport.py --db result.db --table name --show False Note: 参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html', 'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods' 参数path默认None使用OneForAll结果目录自动生成路径 :param str table: 要导出的表 :param str db: 要导出的数据库路径(默认为results/result.sqlite3) :param bool valid: 只导出有效的子域结果(默认False) :param str limit: 导出限制条件(默认None) :param str format: 导出文件格式(默认csv) :param str path: 导出文件路径(默认None) :param bool show: 终端显示导出数据(默认False) """ database = Database(db) rows = database.export_data(table, valid, limit) format = utils.check_format(format, len(rows)) path = utils.check_path(path, table, format) if show: print(rows.dataset) data = rows.export(format) database.close() utils.save_data(path, data) logger.log('INFOR', f'{table}主域的子域结果 {path}') data_dict = rows.as_dict() return data_dict
def run(self): start = time.time() logger.log('INFOR', f'开始执行{self.source}模块') self.subdomains = utils.get_domains(self.target) self.format = utils.check_format(self.format, len(self.subdomains)) timestamp = utils.get_timestamp() name = f'takeover_check_result_{timestamp}' self.path = utils.check_path(self.path, name, self.format) if self.subdomains: logger.log('INFOR', f'正在检查子域接管风险') self.fingerprints = get_fingerprint() self.results.headers = ['subdomain', 'cname'] # 创建待检查的子域队列 for domain in self.subdomains: self.subdomainq.put(domain) # 检查线程 for _ in range(self.thread): check_thread = Thread(target=self.check, daemon=True) check_thread.start() # 进度线程 progress_thread = Thread(target=self.progress, daemon=True) progress_thread.start() self.subdomainq.join() self.save() else: logger.log('FATAL', f'获取域名失败') end = time.time() elapse = round(end - start, 1) logger.log( 'INFOR', f'{self.source}模块耗时{elapse}秒' f'发现{len(self.results)}个子域存在接管风险') logger.log('INFOR', f'子域接管风险检查结果 {self.path}') logger.log('INFOR', f'结束执行{self.source}模块')
def export(table, db=None, valid=None, dpath=None, format='csv', show=False): """ OneForAll数据库导出模块 Example: python3 dbexport.py --table name --format csv --dir= ./result.csv python3 dbexport.py --db result.db --table name --show False Note: 参数port可选值有'small', 'medium', 'large', 'xlarge',详见config.py配置 参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html', 'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods' 参数dpath为None默认使用OneForAll结果目录 :param str table: 要导出的表 :param str db: 要导出的数据库路径(默认为results/result.sqlite3) :param int valid: 导出子域的有效性(默认None) :param str format: 导出格式(默认csv) :param str dpath: 导出目录(默认None) :param bool show: 终端显示导出数据(默认False) """ format = utils.check_format(format) dpath = utils.check_dpath(dpath) database = Database(db) rows = database.export_data(table, valid) # 意外情况导出全部子域 if show: print(rows.dataset) if format == 'txt': data = str(rows.dataset) else: data = rows.export(format) database.close() fpath = dpath.joinpath(f'{table}_subdomain.{format}') utils.save_data(fpath, data)
def export(table, db=None, valid=None, path=None, format='csv', show=False): """ OneForAll数据库导出模块 Example: python3 dbexport.py --table name --format csv --dir= ./result.csv python3 dbexport.py --db result.db --table name --show False Note: 参数port可选值有'small', 'medium', 'large', 'xlarge',详见config.py配置 参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html', 'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods' 参数path默认None使用OneForAll结果目录生成路径 :param str table: 要导出的表 :param str db: 要导出的数据库路径(默认为results/result.sqlite3) :param int valid: 导出子域的有效性(默认None) :param str format: 导出文件格式(默认csv) :param str path: 导出文件路径(默认None) :param bool show: 终端显示导出数据(默认False) """ database = Database(db) rows = database.export_data(table, valid) format = utils.check_format(format, len(rows)) path = utils.check_path(path, table, format) if show: print(rows.dataset) if format == 'txt': data = str(rows.dataset) else: data = rows.export(format) database.close() utils.save_data(path, data)
def run(self): start = time.time() logger.log('INFOR', f'Start running {self.source} module') self.subdomains = utils.get_domains(self.target) self.format = utils.check_format(self.format, len(self.subdomains)) timestamp = utils.get_timestamp() name = f'takeover_check_result_{timestamp}' self.path = utils.check_path(self.path, name, self.format) if self.subdomains: logger.log('INFOR', f'Checking subdomain takeover') self.fingerprints = get_fingerprint() self.results.headers = ['subdomain', 'cname'] # 创建待检查的子域队列 for domain in self.subdomains: self.subdomainq.put(domain) # 检查线程 for _ in range(self.thread): check_thread = Thread(target=self.check, daemon=True) check_thread.start() # 进度线程 progress_thread = Thread(target=self.progress, daemon=True) progress_thread.start() self.subdomainq.join() self.save() else: logger.log('FATAL', f'Failed to obtain domain') end = time.time() elapse = round(end - start, 1) logger.log( 'INFOR', f'{self.source} module takes {elapse} seconds, ' f'There are {len(self.results)} subdomains exists takeover') logger.log('INFOR', f'Subdomain takeover results: {self.path}') logger.log('INFOR', f'Finished {self.source} module')
def run(self): start = time.time() logger.log('INFOR', f'正在检查子域接管风险') self.format = utils.check_format(self.format) self.dpath = utils.check_dpath(self.dpath) self.subdomains = utils.get_domains(self.target) if self.subdomains: self.fingerprints = get_fingerprint() self.results.headers = ['subdomain', 'cname'] for domain in self.subdomains: self.domainq.put(domain) threads = [] for _ in range(self.thread): thread = Thread(target=self.check, daemon=True) thread.start() threads.append(thread) for thread in threads: thread.join() self.save() else: logger.log('FATAL', f'获取域名失败') end = time.time() elapsed = round(end - start, 1) logger.log( 'INFOR', f'{self.source}模块耗时{elapsed}秒' f'发现{len(self.results)}个子域存在接管风险')
def do_export(fmt, path, rows, show, domain, target): fmt = utils.check_format(fmt) path = utils.check_path(path, target, fmt) if show: print(rows.dataset) data = rows.export(fmt) utils.save_to_file(path, data) logger.log('ALERT', f'The subdomain result for {domain}: {path}') data = rows.as_dict() return data, fmt, path
def export_data(format, path, rows, show, table_name, target): format = utils.check_format(format, len(rows)) path = utils.check_path(path, target, format) if show: print(rows.dataset) data = rows.export(format) utils.save_data(path, data) logger.log('ALERT', f'The subdomain result for {table_name}: {path}') data = rows.as_dict() return data, format, path
def run(self): start = time.time() logger.log('INFOR', f'Start running {self.source} module') if isinstance(self.targets, set): self.subdomains = self.targets else: self.subdomains = utils.get_domains(self.target, self.targets) self.fmt = utils.check_format(self.fmt) timestamp = utils.get_timestamp() name = f'takeover_check_result_{timestamp}' self.path = utils.check_path(self.path, name, self.fmt) if self.subdomains: logger.log('INFOR', f'Checking subdomain takeover') self.fingerprints = get_fingerprint() self.results.headers = ['subdomain', 'cname'] for domain in self.subdomains: self.queue.put(domain) progress_thread = Thread(target=self.progress, name='ProgressThread', daemon=True) progress_thread.start() for i in range(self.thread): check_thread = Thread(target=self.check, name=f'CheckThread{i}', daemon=True) check_thread.start() self.queue.join() self.save() else: logger.log('FATAL', f'Failed to obtain domain') end = time.time() elapse = round(end - start, 1) logger.log( 'ALERT', f'{self.source} module takes {elapse} seconds, ' f'There are {len(self.results)} subdomains exists takeover') logger.log('INFOR', f'Subdomain takeover results: {self.path}') logger.log('INFOR', f'Finished {self.source} module')
def export(table, db=None, alive=False, limit=None, path=None, format='csv', show=False): """ OneForAll export from database module Example: python3 dbexport.py --table name --format csv --dir= ./result.csv python3 dbexport.py --db result.db --table name --show False Note: --alive True/False Only export alive subdomains or not (default False) --format rst/csv/tsv/json/yaml/html/jira/xls/xlsx/dbf/latex/ods (result format) --path Result directory (default directory is ./results) :param str table: Table to be exported :param str db: Database path to be exported (default ./results/result.sqlite3) :param bool alive: Only export the results of alive subdomains (default False) :param str limit: Export limit (default None) :param str format: Result format (default csv) :param str path: Result directory (default None) :param bool show: Displays the exported data in terminal (default False) """ database = Database(db) rows = database.export_data(table, alive, limit) format = utils.check_format(format, len(rows)) path = utils.check_path(path, table, format) if show: print(rows.dataset) data = rows.export(format) database.close() utils.save_data(path, data) logger.log('ALERT', f'The subdomain result for {table}: {path}') data_dict = rows.as_dict() return data_dict
def run(self): start = time.time() logger.log('INFOR', f'开始执行{self.source}模块') self.format = utils.check_format(self.format) self.dpath = utils.check_dpath(self.dpath) self.subdomains = utils.get_domains(self.target) if self.subdomains: logger.log('INFOR', f'正在检查子域接管风险') self.fingerprints = get_fingerprint() self.results.headers = ['subdomain', 'cname'] # 创建待检查的子域队列 for domain in self.subdomains: self.subdomainq.put(domain) # 设置进度 self.bar.total = self.subdomainq.qsize() self.bar.desc = 'Progress' self.bar.ncols = True # 进度线程 threads = [] thread = Thread(target=self.progress, daemon=True) thread.start() threads.append(thread) # 检查线程 for _ in range(self.thread): thread = Thread(target=self.check, daemon=True) thread.start() threads.append(thread) for thread in threads: thread.join() self.save() else: logger.log('FATAL', f'获取域名失败') end = time.time() elapsed = round(end - start, 1) logger.log('INFOR', f'{self.source}模块耗时{elapsed}秒' f'发现{len(self.results)}个子域存在接管风险') logger.log('DEBUG', f'结束执行{self.source}模块')
def export(target, type='target', db=None, alive=False, limit=None, path=None, format='csv', show=False): """ OneForAll export from database module Example: python3 dbexport.py --target name --format csv --dir= ./result.csv python3 dbexport.py --db result.db --target name --show False python3 dbexport.py --target table_name --tb True --show False Note: --format rst/csv/tsv/json/yaml/html/jira/xls/xlsx/dbf/latex/ods (result format) --path Result directory (default directory is ./results) :param str target: Table to be exported :param str type: Type of target :param str db: Database path to be exported (default ./results/result.sqlite3) :param bool alive: Only export the results of alive subdomains (default False) :param str limit: Export limit (default None) :param str format: Result format (default csv) :param str path: Result directory (default None) :param bool show: Displays the exported data in terminal (default False) """ if type == 'target': database = Database(db) domains = utils.get_domains(target) datas = [] if domains: for domain in domains: table_name = domain_to_table(domain) rows = database.export_data(table_name, alive, limit) if rows is None: continue format = utils.check_format(format, len(rows)) path = utils.check_path(path, target, format) if show: print(rows.dataset) data = rows.export(format) utils.save_data(path, data) logger.log('ALERT', f'The subdomain result for {table_name}: {path}') data = rows.as_dict() datas.extend(data) database.close() if len(domains) > 1: utils.export_all(alive, format, path, datas) elif type == 'table': database = Database(db) rows = database.export_data(target, alive, limit) format = utils.check_format(format, len(rows)) path = utils.check_path(path, target, format) if show: print(rows.dataset) data = rows.export(format) database.close() utils.save_data(path, data) logger.log('ALERT', f'The subdomain result for {target}: {path}') data_dict = rows.as_dict() return data_dict