优化覆盖率

This commit is contained in:
JrD
2020-09-09 16:05:34 +08:00
parent 05ac53b8d5
commit e91f61d2f9
3 changed files with 30 additions and 39 deletions
-14
View File
@@ -324,18 +324,6 @@ def remove_invalid_string(string):
return re.sub(r'[\000-\010]|[\013-\014]|[\016-\037]', r'', string) return re.sub(r'[\000-\010]|[\013-\014]|[\016-\037]', r'', string)
def check_value(values):
if not isinstance(values, dict):
return values
for key, value in values.items():
if value is None:
continue
if isinstance(value, str) and len(value) > 32767:
# Excel文件中单元格值长度不能超过32767
values[key] = value[:32767]
return values
def export_all_results(path, name, format, datas): def export_all_results(path, name, format, datas):
path = check_path(path, name, format) path = check_path(path, name, format)
logger.log('ALERT', f'The subdomain result for all main domains: {path}') logger.log('ALERT', f'The subdomain result for all main domains: {path}')
@@ -347,8 +335,6 @@ def export_all_results(path, name, format, datas):
row.pop('response') row.pop('response')
keys = row.keys() keys = row.keys()
values = row.values() values = row.values()
if format in {'xls', 'xlsx'}:
values = check_value(values)
row_list.append(Record(keys, values)) row_list.append(Record(keys, values))
rows = RecordCollection(iter(row_list)) rows = RecordCollection(iter(row_list))
content = rows.export(format) content = rows.export(format)
+19 -21
View File
@@ -15,10 +15,6 @@ from common.database import Database
from config.log import logger from config.log import logger
def domain_to_table(table):
return table.replace('.', '_') + "_now_result"
def export(target, type='target', db=None, alive=False, limit=None, path=None, format='csv', show=False): def export(target, type='target', db=None, alive=False, limit=None, path=None, format='csv', show=False):
""" """
OneForAll export from database module OneForAll export from database module
@@ -52,6 +48,20 @@ def export(target, type='target', db=None, alive=False, limit=None, path=None, f
rows = database.export_data(table_name, alive, limit) rows = database.export_data(table_name, alive, limit)
if rows is None: if rows is None:
continue continue
data = export_data(format, path, rows, show, table_name, target)
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)
data = export_data(format, path, rows, show, target, target)
database.close()
return data
def export_data(format, path, rows, show, table_name, target):
format = utils.check_format(format, len(rows)) format = utils.check_format(format, len(rows))
path = utils.check_path(path, target, format) path = utils.check_path(path, target, format)
if show: if show:
@@ -60,23 +70,11 @@ def export(target, type='target', db=None, alive=False, limit=None, path=None, f
utils.save_data(path, data) utils.save_data(path, data)
logger.log('ALERT', f'The subdomain result for {table_name}: {path}') logger.log('ALERT', f'The subdomain result for {table_name}: {path}')
data = rows.as_dict() data = rows.as_dict()
datas.extend(data) return data, format, path
database.close()
if len(domains) > 1:
utils.export_all(alive, format, path, datas) def domain_to_table(table):
elif type == 'table': return table.replace('.', '_') + "_now_result"
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
if __name__ == '__main__': if __name__ == '__main__':
+10 -3
View File
@@ -6,11 +6,18 @@ Example
""" """
from oneforall import OneForAll from oneforall import OneForAll
from dbexport import export
if __name__ == '__main__':
test = OneForAll(target='freebuf.com') def oneforall(target):
test = OneForAll(target=target)
test.brute = True test.brute = True
test.req = True test.req = True
test.takeover = True test.takeover = True
test.run() test.run()
result = test.datas
if __name__ == '__main__':
TARGET = 'freebuf.com'
oneforall(target=TARGET)
export(target=TARGET)