diff --git a/oneforall/common/database.py b/oneforall/common/database.py index a2ca170..fbdfe97 100644 --- a/oneforall/common/database.py +++ b/oneforall/common/database.py @@ -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 diff --git a/oneforall/common/module.py b/oneforall/common/module.py index 175aea1..ce5538b 100644 --- a/oneforall/common/module.py +++ b/oneforall/common/module.py @@ -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) diff --git a/oneforall/common/utils.py b/oneforall/common/utils.py index d018286..d919c99 100644 --- a/oneforall/common/utils.py +++ b/oneforall/common/utils.py @@ -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()