mirror of
https://github.com/shmilylty/OneForAll.git
synced 2026-08-26 12:57:50 +08:00
修复路径问题和解包错误问题
This commit is contained in:
@@ -169,7 +169,7 @@ class AIOBrute(Module):
|
|||||||
参数valid可选值1,0,None,分别表示导出有效,无效,全部子域
|
参数valid可选值1,0,None,分别表示导出有效,无效,全部子域
|
||||||
参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
|
参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
|
||||||
'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
|
'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
|
||||||
参数path为None会根据format参数和域名名称在项目结果目录生成相应文件
|
参数path默认None使用OneForAll结果目录生成路径
|
||||||
|
|
||||||
:param str target: 单个域名或者每行一个域名的文件路径
|
:param str target: 单个域名或者每行一个域名的文件路径
|
||||||
:param int process: 爆破的进程数(默认CPU核心数)
|
:param int process: 爆破的进程数(默认CPU核心数)
|
||||||
@@ -323,9 +323,9 @@ class AIOBrute(Module):
|
|||||||
rx_queue))
|
rx_queue))
|
||||||
# 队列不空就一直取数据存数据库
|
# 队列不空就一直取数据存数据库
|
||||||
while not rx_queue.empty():
|
while not rx_queue.empty():
|
||||||
source, results = rx_queue.get()
|
results = rx_queue.get()
|
||||||
# 将结果存入数据库中
|
# 将结果存入数据库中
|
||||||
db.save_db(self.domain, results, source)
|
db.save_db(self.domain, results, self.source)
|
||||||
|
|
||||||
end = time.time()
|
end = time.time()
|
||||||
self.elapsed = round(end - start, 1)
|
self.elapsed = round(end - start, 1)
|
||||||
@@ -335,14 +335,14 @@ class AIOBrute(Module):
|
|||||||
f'发现{self.domain}的域名{length}个')
|
f'发现{self.domain}的域名{length}个')
|
||||||
logger.log('DEBUG', f'{self.source}模块发现{self.domain}的域名:\n'
|
logger.log('DEBUG', f'{self.source}模块发现{self.domain}的域名:\n'
|
||||||
f'{self.subdomains}')
|
f'{self.subdomains}')
|
||||||
|
if not self.path:
|
||||||
|
name = f'{self.domain}_brute.{self.format}'
|
||||||
|
self.path = config.result_save_path.joinpath(name)
|
||||||
# 数据库导出
|
# 数据库导出
|
||||||
if self.export:
|
if self.export:
|
||||||
if not self.path:
|
|
||||||
name = f'{self.domain}_brute.{self.format}'
|
|
||||||
self.path = config.result_save_path.joinpath(name)
|
|
||||||
dbexport.export(self.domain,
|
dbexport.export(self.domain,
|
||||||
valid=self.valid,
|
valid=self.valid,
|
||||||
dpath=self.path,
|
path=self.path,
|
||||||
format=self.format,
|
format=self.format,
|
||||||
show=self.show)
|
show=self.show)
|
||||||
|
|
||||||
|
|||||||
+17
-14
@@ -147,29 +147,32 @@ def get_semaphore():
|
|||||||
return 800
|
return 800
|
||||||
|
|
||||||
|
|
||||||
def check_dpath(dpath=None):
|
def check_path(path, table, format):
|
||||||
"""
|
"""
|
||||||
检查结果输出目录路径
|
检查结果输出目录路径
|
||||||
|
|
||||||
:param dpath: 传入的目录路径
|
:param path: 保存路径
|
||||||
|
:param table: 导出表名
|
||||||
|
:param format: 保存格式
|
||||||
:return: 目录路径
|
:return: 目录路径
|
||||||
"""
|
"""
|
||||||
if dpath is None:
|
default_path = config.result_save_path.joinpath(f'{table}.{format}')
|
||||||
return config.result_save_path
|
|
||||||
try:
|
try:
|
||||||
path = Path(dpath)
|
path = Path(path)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.log('ERROR', e.args)
|
logger.log('ERROR', e.args)
|
||||||
path = config.result_save_path
|
path = default_path
|
||||||
else:
|
else:
|
||||||
if not path.is_dir():
|
if path.exists():
|
||||||
logger.log('ERROR', f'{path}不是目录')
|
logger.log('ALERT', f'存在{path}路径将会覆盖')
|
||||||
path = config.result_save_path
|
parent_path = path.parent
|
||||||
if not path.exists():
|
if not parent_path.exists():
|
||||||
logger.log('ALERT', f'不存在{path}将会新建此目录')
|
logger.log('ALERT', f'不存在{parent_path}目录将会新建')
|
||||||
path.mkdir(parents=True, exist_ok=True)
|
parent_path.mkdir(parents=True, exist_ok=True)
|
||||||
if path.resolve() == config.result_save_path:
|
if not path:
|
||||||
logger.log('ALERT', f'使用默认结果输出目录{path}')
|
path = default_path
|
||||||
|
if path.resolve() == default_path:
|
||||||
|
logger.log('DEBUG', f'使用路径{path}')
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -10,7 +10,8 @@ import urllib3
|
|||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
# 版本信息
|
# 版本信息
|
||||||
oneforall_version = 'v0.0.8#dev' # OneForAll处于开发中,会进行版本快速迭代,请每次在使用前进行更新!
|
# OneForAll处于开发中,会进行版本快速迭代,请每次在使用前进行更新!
|
||||||
|
oneforall_version = 'v0.0.8#dev'
|
||||||
|
|
||||||
# 路径设置
|
# 路径设置
|
||||||
oneforall_relpath = pathlib.Path(__file__).parent # oneforall代码相对路径
|
oneforall_relpath = pathlib.Path(__file__).parent # oneforall代码相对路径
|
||||||
@@ -64,7 +65,8 @@ enable_fake_header = True # 启用伪造请求头
|
|||||||
request_delay = 1 # 请求时延
|
request_delay = 1 # 请求时延
|
||||||
request_timeout = 30 # 请求超时
|
request_timeout = 30 # 请求超时
|
||||||
request_verify = False # 请求SSL验证
|
request_verify = False # 请求SSL验证
|
||||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # 禁用安全警告信息
|
# 禁用安全警告信息
|
||||||
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||||
|
|
||||||
# 搜索模块设置
|
# 搜索模块设置
|
||||||
enable_recursive_search = False # 递归搜索子域
|
enable_recursive_search = False # 递归搜索子域
|
||||||
@@ -112,10 +114,10 @@ get_redirects = True # 允许请求跳转
|
|||||||
fake_header = True # 使用伪造请求头
|
fake_header = True # 使用伪造请求头
|
||||||
|
|
||||||
# 限制同一时间打开的连接总数
|
# 限制同一时间打开的连接总数
|
||||||
limit_open_conn = 500 # 默认500
|
limit_open_conn = 30 # 默认30
|
||||||
|
|
||||||
# 限制同一时间在同一个端点((host, port, is_ssl) 3者都一样的情况)打开的连接数
|
# 限制同一时间在同一个端点((host, port, is_ssl) 3者都一样的情况)打开的连接数
|
||||||
limit_per_host = 50 # 0表示不限制
|
limit_per_host = 0 # 0表示不限制
|
||||||
|
|
||||||
subdomains_common = {'i', 'w', 'm', 'en', 'us', 'zh', 'w3', 'app', 'bbs',
|
subdomains_common = {'i', 'w', 'm', 'en', 'us', 'zh', 'w3', 'app', 'bbs',
|
||||||
'web', 'www', 'job', 'docs', 'news', 'blog', 'data',
|
'web', 'www', 'job', 'docs', 'news', 'blog', 'data',
|
||||||
|
|||||||
@@ -25,20 +25,20 @@ def export(table, db=None, valid=None, path=None, format='csv', show=False):
|
|||||||
参数port可选值有'small', 'medium', 'large', 'xlarge',详见config.py配置
|
参数port可选值有'small', 'medium', 'large', 'xlarge',详见config.py配置
|
||||||
参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
|
参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
|
||||||
'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
|
'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
|
||||||
参数dpath为None默认使用OneForAll结果目录
|
参数path默认None使用OneForAll结果目录生成路径
|
||||||
|
|
||||||
:param str table: 要导出的表
|
:param str table: 要导出的表
|
||||||
:param str db: 要导出的数据库路径(默认为results/result.sqlite3)
|
:param str db: 要导出的数据库路径(默认为results/result.sqlite3)
|
||||||
:param int valid: 导出子域的有效性(默认None)
|
:param int valid: 导出子域的有效性(默认None)
|
||||||
:param str format: 导出格式(默认csv)
|
:param str format: 导出格式(默认csv)
|
||||||
:param str path: 导出目录(默认None)
|
:param str path: 导出路径(默认None)
|
||||||
:param bool show: 终端显示导出数据(默认False)
|
:param bool show: 终端显示导出数据(默认False)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
dir_path = utils.check_dpath(path)
|
|
||||||
database = Database(db)
|
database = Database(db)
|
||||||
rows = database.export_data(table, valid)
|
rows = database.export_data(table, valid)
|
||||||
format = utils.check_format(format, len(rows))
|
format = utils.check_format(format, len(rows))
|
||||||
|
path = utils.check_path(path, table, format)
|
||||||
if show:
|
if show:
|
||||||
print(rows.dataset)
|
print(rows.dataset)
|
||||||
if format == 'txt':
|
if format == 'txt':
|
||||||
@@ -46,8 +46,7 @@ def export(table, db=None, valid=None, path=None, format='csv', show=False):
|
|||||||
else:
|
else:
|
||||||
data = rows.export(format)
|
data = rows.export(format)
|
||||||
database.close()
|
database.close()
|
||||||
file_path = dir_path.joinpath(f'{table}.{format}')
|
utils.save_data(path, data)
|
||||||
utils.save_data(file_path, data)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|||||||
Reference in New Issue
Block a user