mirror of
https://github.com/shmilylty/OneForAll.git
synced 2026-08-26 12:57:50 +08:00
1.在结果里添加利用的DNS记录查询类型type,子域层数level。
2.把结果中valid,new放在结果首列 3.修改结果中的elapsed为elapse
This commit is contained in:
@@ -56,22 +56,24 @@ class Database(object):
|
|||||||
return
|
return
|
||||||
logger.log('TRACE', f'正在创建{table_name}表')
|
logger.log('TRACE', f'正在创建{table_name}表')
|
||||||
self.query(f'create table "{table_name}" ('
|
self.query(f'create table "{table_name}" ('
|
||||||
|
f'type text,'
|
||||||
|
f'valid int,'
|
||||||
|
f'new int,'
|
||||||
f'id integer primary key,'
|
f'id integer primary key,'
|
||||||
f'url text,'
|
f'url text,'
|
||||||
f'subdomain text,'
|
f'subdomain text,'
|
||||||
f'port int,'
|
f'port int,'
|
||||||
|
f'level int,'
|
||||||
f'ips text,'
|
f'ips text,'
|
||||||
f'status int,'
|
f'status int,'
|
||||||
f'reason text,'
|
f'reason text,'
|
||||||
f'valid int,'
|
|
||||||
f'new int,'
|
|
||||||
f'title text,'
|
f'title text,'
|
||||||
f'banner text,'
|
f'banner text,'
|
||||||
f'header text,'
|
f'header text,'
|
||||||
f'response text,'
|
f'response text,'
|
||||||
f'module text,'
|
f'module text,'
|
||||||
f'source text,'
|
f'source text,'
|
||||||
f'elapsed float,'
|
f'elapse float,'
|
||||||
f'count int)')
|
f'count int)')
|
||||||
|
|
||||||
def save_db(self, table_name, results, module_name=None):
|
def save_db(self, table_name, results, module_name=None):
|
||||||
@@ -89,12 +91,12 @@ class Database(object):
|
|||||||
try:
|
try:
|
||||||
self.conn.bulk_query(
|
self.conn.bulk_query(
|
||||||
f'insert into "{table_name}" ('
|
f'insert into "{table_name}" ('
|
||||||
f'id, url, subdomain, port, ips, status, reason, valid,'
|
f'id, type, valid, new, url, subdomain, port, level, ips,'
|
||||||
f'new, title, banner, header, response, module, source, '
|
f'status, reason, title, banner, header, response, module,'
|
||||||
f'elapsed, count)'
|
f'source, elapse, count)'
|
||||||
f'values (:id, :url, :subdomain, :port, :ips, :status,'
|
f'values (:id, :type, :valid, :new, :url, :subdomain,'
|
||||||
f':reason, :valid, :new, :title, :banner, :header,'
|
f':port, :level, :ips, :status, :reason, :title, :banner,'
|
||||||
f':response, :module, :source,:elapsed, :count)',
|
f':header, :response, :module, :source,:elapse, :count)',
|
||||||
results)
|
results)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.log('ERROR', e.args)
|
logger.log('ERROR', e.args)
|
||||||
@@ -215,8 +217,8 @@ class Database(object):
|
|||||||
:param any valid: 有效性
|
:param any valid: 有效性
|
||||||
"""
|
"""
|
||||||
table_name = table_name.replace('.', '_')
|
table_name = table_name.replace('.', '_')
|
||||||
query = f'select id, url, subdomain, port, ips, status, reason,' \
|
query = f'select id, type, valid, new, url, subdomain, port, level, ips,' \
|
||||||
f'valid, new, title, banner from "{table_name}"'
|
f' status, reason, title, banner from "{table_name}"'
|
||||||
if valid:
|
if valid:
|
||||||
where = f' where valid = 1'
|
where = f' where valid = 1'
|
||||||
query += where
|
query += where
|
||||||
|
|||||||
+17
-11
@@ -28,13 +28,14 @@ class Module(object):
|
|||||||
self.delay = config.request_delay # 请求睡眠时延
|
self.delay = config.request_delay # 请求睡眠时延
|
||||||
self.timeout = config.request_timeout # 请求超时时间
|
self.timeout = config.request_timeout # 请求超时时间
|
||||||
self.verify = config.request_verify # 请求SSL验证
|
self.verify = config.request_verify # 请求SSL验证
|
||||||
self.domain = '' # 要进行子域名收集的域名
|
self.domain = str() # 当前进行子域名收集的主域
|
||||||
|
self.type = 'A' # 对主域进行子域收集时利用的DNS记录查询类型(默认利用A记录)
|
||||||
self.subdomains = set() # 存放发现的子域
|
self.subdomains = set() # 存放发现的子域
|
||||||
self.records = dict() # 存放子域解析记录
|
self.records = dict() # 存放子域解析记录
|
||||||
self.results = list() # 存放模块结果
|
self.results = list() # 存放模块结果
|
||||||
self.start = time.time() # 模块开始执行时间
|
self.start = time.time() # 模块开始执行时间
|
||||||
self.end = None # 模块结束执行时间
|
self.end = None # 模块结束执行时间
|
||||||
self.elapsed = None # 模块执行耗时
|
self.elapse = None # 模块执行耗时
|
||||||
|
|
||||||
def check(self, *apis):
|
def check(self, *apis):
|
||||||
"""
|
"""
|
||||||
@@ -59,9 +60,9 @@ class Module(object):
|
|||||||
输出模块结束信息
|
输出模块结束信息
|
||||||
"""
|
"""
|
||||||
self.end = time.time()
|
self.end = time.time()
|
||||||
self.elapsed = round(self.end - self.start, 1)
|
self.elapse = round(self.end - self.start, 1)
|
||||||
logger.log('DEBUG', f'结束执行{self.source}模块收集{self.domain}的子域')
|
logger.log('DEBUG', f'结束执行{self.source}模块收集{self.domain}的子域')
|
||||||
logger.log('INFOR', f'{self.source}模块耗时{self.elapsed}秒发现子域'
|
logger.log('INFOR', f'{self.source}模块耗时{self.elapse}秒发现子域'
|
||||||
f'{len(self.subdomains)}个')
|
f'{len(self.subdomains)}个')
|
||||||
logger.log('DEBUG', f'{self.source}模块发现{self.domain}的子域\n'
|
logger.log('DEBUG', f'{self.source}模块发现{self.domain}的子域\n'
|
||||||
f'{self.subdomains}')
|
f'{self.subdomains}')
|
||||||
@@ -234,7 +235,7 @@ class Module(object):
|
|||||||
result = {'domain': self.domain,
|
result = {'domain': self.domain,
|
||||||
'name': self.module,
|
'name': self.module,
|
||||||
'source': self.source,
|
'source': self.source,
|
||||||
'elapsed': self.elapsed,
|
'elapse': self.elapse,
|
||||||
'count': len(self.subdomains),
|
'count': len(self.subdomains),
|
||||||
'subdomains': list(self.subdomains),
|
'subdomains': list(self.subdomains),
|
||||||
'records': self.records}
|
'records': self.records}
|
||||||
@@ -247,43 +248,48 @@ class Module(object):
|
|||||||
"""
|
"""
|
||||||
if not len(self.subdomains): # 该模块一个子域都没有发现的情况
|
if not len(self.subdomains): # 该模块一个子域都没有发现的情况
|
||||||
result = {'id': None,
|
result = {'id': None,
|
||||||
|
'type': self.type,
|
||||||
|
'valid': None,
|
||||||
|
'new': None,
|
||||||
'url': None,
|
'url': None,
|
||||||
'subdomain': None,
|
'subdomain': None,
|
||||||
'port': None,
|
'port': None,
|
||||||
|
'level': None,
|
||||||
'ips': None,
|
'ips': None,
|
||||||
'status': None,
|
'status': None,
|
||||||
'reason': None,
|
'reason': None,
|
||||||
'valid': None,
|
|
||||||
'new': None,
|
|
||||||
'title': None,
|
'title': None,
|
||||||
'banner': None,
|
'banner': None,
|
||||||
'header': None,
|
'header': None,
|
||||||
'response': None,
|
'response': None,
|
||||||
'module': self.module,
|
'module': self.module,
|
||||||
'source': self.source,
|
'source': self.source,
|
||||||
'elapsed': self.elapsed,
|
'elapse': self.elapse,
|
||||||
'count': 0}
|
'count': 0}
|
||||||
self.results.append(result)
|
self.results.append(result)
|
||||||
else:
|
else:
|
||||||
for subdomain in self.subdomains:
|
for subdomain in self.subdomains:
|
||||||
url = 'http://' + subdomain
|
url = 'http://' + subdomain
|
||||||
|
level = subdomain.count('.') - self.domain.count('.')
|
||||||
ips = self.records.get(subdomain)
|
ips = self.records.get(subdomain)
|
||||||
result = {'id': None,
|
result = {'id': None,
|
||||||
|
'type': self.type,
|
||||||
|
'valid': None,
|
||||||
|
'new': None,
|
||||||
'url': url,
|
'url': url,
|
||||||
'subdomain': subdomain,
|
'subdomain': subdomain,
|
||||||
'port': None,
|
'port': None,
|
||||||
|
'level': level,
|
||||||
'ips': ips,
|
'ips': ips,
|
||||||
'status': None,
|
'status': None,
|
||||||
'reason': None,
|
'reason': None,
|
||||||
'valid': None,
|
|
||||||
'new': None,
|
|
||||||
'title': None,
|
'title': None,
|
||||||
'banner': None,
|
'banner': None,
|
||||||
'module': self.module,
|
'module': self.module,
|
||||||
'header': None,
|
'header': None,
|
||||||
'response': None,
|
'response': None,
|
||||||
'source': self.source,
|
'source': self.source,
|
||||||
'elapsed': self.elapsed,
|
'elapse': self.elapse,
|
||||||
'count': len(self.subdomains)}
|
'count': len(self.subdomains)}
|
||||||
self.results.append(result)
|
self.results.append(result)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# coding=utf-8
|
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
@@ -305,7 +304,7 @@ def export_all(format, path, datas):
|
|||||||
row.pop('response')
|
row.pop('response')
|
||||||
row.pop('module')
|
row.pop('module')
|
||||||
row.pop('source')
|
row.pop('source')
|
||||||
row.pop('elapsed')
|
row.pop('elapse')
|
||||||
row.pop('count')
|
row.pop('count')
|
||||||
keys = row.keys()
|
keys = row.keys()
|
||||||
values = row.values()
|
values = row.values()
|
||||||
|
|||||||
Reference in New Issue
Block a user