diff --git a/oneforall/aiobrute.py b/oneforall/aiobrute.py index 3857e37..ba70f7b 100644 --- a/oneforall/aiobrute.py +++ b/oneforall/aiobrute.py @@ -302,7 +302,7 @@ class AIOBrute(Module): logger.log('DEBUG', f'{self.source}模块发现{self.domain}的域名:\n' f'{self.subdomains}') if not self.path: - name = f'{self.domain}_brute.{self.format}' + name = f'{self.domain}_brute_result.{self.format}' self.path = config.result_save_path.joinpath(name) # 数据库导出 if self.export: diff --git a/oneforall/common/utils.py b/oneforall/common/utils.py index e3a1cdb..e7227a4 100644 --- a/oneforall/common/utils.py +++ b/oneforall/common/utils.py @@ -288,17 +288,18 @@ def check_value(values): return values -def export_all(format, datas): +def export_all(format, path, datas): """ 将所有结果数据导出到一个文件 - :param format: 导出文件的格式 - :param datas: 待导出的结果数据 + :param str format: 导出文件格式 + :param str path: 导出文件路径 + :param list datas: 待导出的结果数据 """ format = check_format(format, len(datas)) timestamp = get_timestamp() - name = f'all_subdomain_{timestamp}' - path = check_path(None, name, format) + name = f'all_subdomain_result_{timestamp}' + path = check_path(path, name, format) row_list = list() for row in datas: row.pop('header') diff --git a/oneforall/dbexport.py b/oneforall/dbexport.py index bf53faa..7ffad61 100644 --- a/oneforall/dbexport.py +++ b/oneforall/dbexport.py @@ -30,8 +30,8 @@ def export(table, db=None, valid=None, path=None, format='csv', show=False): :param str table: 要导出的表 :param str db: 要导出的数据库路径(默认为results/result.sqlite3) :param int valid: 导出子域的有效性(默认None) - :param str format: 导出格式(默认csv) - :param str path: 导出路径(默认None) + :param str format: 导出文件格式(默认csv) + :param str path: 导出文件路径(默认None) :param bool show: 终端显示导出数据(默认False) """ diff --git a/oneforall/oneforall.py b/oneforall/oneforall.py index b54a475..e6c255f 100644 --- a/oneforall/oneforall.py +++ b/oneforall/oneforall.py @@ -65,6 +65,7 @@ class OneForAll(object): 参数port可选值有'default', 'small', 'large', 详见config.py配置 参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html', 'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods' + 参数path默认None使用OneForAll结果目录生成路径 :param str target: 单个域名或者每行一个域名的文件路径(必需参数) :param bool brute: 使用爆破模块(默认False) @@ -72,12 +73,14 @@ class OneForAll(object): :param bool req: HTTP请求子域(默认True) :param str port: 请求验证子域的端口范围(默认只探测80端口) :param int valid: 导出子域的有效性(默认None) - :param str format: 导出格式(默认csv) + :param str format: 导出文件格式(默认csv) + :param str path: 导出文件路径(默认None) :param bool takeover: 检查子域接管(默认False) :param bool show: 终端显示导出数据(默认False) """ - def __init__(self, target, brute=None, dns=None, req=None, port='default', - valid=None, format='csv', takeover=False, show=False): + def __init__(self, target, brute=None, dns=None, req=None, + port='default', valid=None, format='csv', path=None, + takeover=False, show=False): self.target = target self.port = port self.domains = set() @@ -90,6 +93,7 @@ class OneForAll(object): self.takeover = takeover self.valid = valid self.format = format + self.path = path self.show = show def main(self): @@ -197,8 +201,7 @@ class OneForAll(object): if self.domains: for self.domain in self.domains: self.main() - if len(self.domains) >= 2: - utils.export_all(self.format, self.datas) + utils.export_all(self.format, self.path, self.datas) else: logger.log('FATAL', f'获取域名失败') logger.log('INFOR', f'结束运行OneForAll')