1.在结果里添加利用的DNS记录查询类型type,子域层数level。

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