diff --git a/oneforall/common/request.py b/oneforall/common/request.py index 05a07bf..d72d063 100644 --- a/oneforall/common/request.py +++ b/oneforall/common/request.py @@ -37,8 +37,7 @@ def get_ports(port): if not ports: # 意外情况 logger.log('ERROR', f'指定探测端口范围有误') ports = {80} - if ports == {80}: - logger.log('INFOR', f'探测默认端口范围') + logger.log('INFOR', f'探测端口范围:{ports}') return ports @@ -208,3 +207,8 @@ async def bulk_get_request(datas, port): logger.log('INFOR', f'完成异步进行子域的GET请求') return new_datas + + +def run_bulk_query(datas, port): + new_datas = asyncio.run(bulk_get_request(datas, port)) + return new_datas diff --git a/oneforall/common/resolve.py b/oneforall/common/resolve.py index c8bb881..dd1e75b 100644 --- a/oneforall/common/resolve.py +++ b/oneforall/common/resolve.py @@ -2,7 +2,7 @@ import asyncio import functools import tqdm -import dns.resolver +from dns.resolver import Resolver import config from config import logger @@ -12,7 +12,7 @@ def dns_resolver(): """ dns解析器 """ - resolver = dns.resolver.Resolver() + resolver = Resolver() resolver.nameservers = config.resolver_nameservers resolver.timeout = config.resolver_timeout resolver.lifetime = config.resolver_lifetime @@ -35,9 +35,26 @@ async def dns_query_a(hostname): return answer +async def aiodns_query_a(hostname): + """ + 异步查询A记录 + + :param str hostname: 主机名 + :return: 查询结果 + """ + try: + loop = asyncio.get_event_loop() + answer = await loop.getaddrinfo(hostname, 'http') + except BaseException as exception: + logger.log('TRACE', exception.args) + answer = exception + return answer + + def resolve_callback(future, index, datas): """ 解析结果回调处理 + :param future: future对象 :param index: 下标 :param datas: 结果集 @@ -48,8 +65,8 @@ def resolve_callback(future, index, datas): datas[index]['ips'] = str(e.args) datas[index]['valid'] = 0 else: - if isinstance(answer, dns.resolver.Answer): - ips = {item.address for item in answer} + if isinstance(answer, list): + ips = {item[4][0] for item in answer} datas[index]['ips'] = str(ips)[1:-1] else: datas[index]['ips'] = 'Something error' @@ -69,7 +86,7 @@ async def bulk_query_a(datas): for i, data in enumerate(datas): if not data.get('ips'): subdomain = data.get('subdomain') - task = asyncio.ensure_future(dns_query_a(subdomain)) + task = asyncio.ensure_future(aiodns_query_a(subdomain)) task.add_done_callback(functools.partial(resolve_callback, index=i, datas=datas)) # 回调 @@ -85,3 +102,8 @@ async def bulk_query_a(datas): # await asyncio.wait(tasks) # 等待所有task完成 logger.log('INFOR', '完成异步查询子域的A记录') return datas + + +def run_bulk_query(datas): + new_datas = asyncio.run(bulk_query_a(datas)) + return new_datas diff --git a/oneforall/modules/datasets/ip138.py b/oneforall/modules/datasets/ip138.py index b792a23..e54945c 100644 --- a/oneforall/modules/datasets/ip138.py +++ b/oneforall/modules/datasets/ip138.py @@ -19,7 +19,6 @@ class IP138(Query): self.proxy = self.get_proxy(self.source) data = {'domain': self.domain} self.addr = self.addr.format(domain=self.domain) - print(self.addr) resp = self.get(self.addr, data=data) if not resp: return diff --git a/oneforall/takeover.py b/oneforall/takeover.py index d3fda80..ab6849d 100644 --- a/oneforall/takeover.py +++ b/oneforall/takeover.py @@ -129,7 +129,7 @@ class Takeover(Module): bar.update() if done == bar.total: # 完成队列中所有子域的检查退出 break - bar.close() + # bar.close() def run(self): start = time.time()