예제 #1
0
 def run(self, domain, data, port):
     logger.log('INFOR', f'Start Finder module')
     existing_subdomains = set(map(lambda x: x.get('subdomain'),
                                   data))  # 已有的子域
     found_subdomains = find_subdomains(domain, data)
     new_subdomains = found_subdomains - existing_subdomains
     if not len(new_subdomains):
         self.finish()  # 未发现新的子域就直接返回
     self.subdomains = new_subdomains
     self.finish()
     self.gen_result()
     resolved_data = resolve.run_resolve(domain, self.results)
     request.run_request(domain, resolved_data, port)
예제 #2
0
 def run(self, data, port):
     logger.log('INFOR', f'Start altdns module')
     self.now_subdomains = utils.get_subdomains(data)
     self.get_words()
     self.extract_words()
     self.gen_new_subdomains()
     self.subdomains = self.new_subdomains - self.now_subdomains
     count = len(self.subdomains)
     logger.log('INFOR', f'The altdns module generated {count} new subdomains')
     self.end = time.time()
     self.elapse = round(self.end - self.start, 1)
     self.gen_result()
     resolved_data = resolve.run_resolve(self.domain, self.results)
     valid_data = wildcard.deal_wildcard(resolved_data)  # Force open pan-analysis processing
     request.run_request(self.domain, valid_data, port)
예제 #3
0
    def main(self):
        """
        OneForAll main process

        :return: subdomain results
        :rtype: list
        """
        self.old_table = self.domain + '_old_result'
        self.new_table = self.domain + '_now_result'
        self.origin_table = self.domain + '_origin_result'
        self.resolve_table = self.domain + '_resolve_result'

        collect = Collect(self.domain, export=False)
        collect.run()
        if self.brute:
            # Due to there will be a large number of dns resolution requests,
            # may cause other network tasks to be error
            brute = Brute(self.domain, word=True, export=False)
            brute.check_env = False
            brute.quite = True
            brute.run()

        # Database processing
        self.deal_db()
        # Mark the new discovered subdomain
        self.data = self.mark()

        # Export results without resolve
        if not self.dns:
            return self.export(self.domain)

        # Resolve subdomains
        self.data = resolve.run_resolve(self.domain, self.data)
        # Save resolve results
        resolve.save_data(self.resolve_table, self.data)

        # Export results without HTTP request
        if not self.req:
            return self.export(self.resolve_table)

        # HTTP request
        self.data = request.run_request(self.domain, self.data, self.port)
        # Save HTTP request result
        request.save_data(self.domain, self.data)

        # Add the final result list to the total data list
        self.datas.extend(self.data)

        # Export
        self.export(self.domain)

        # Scan subdomain takeover
        if self.takeover:
            subdomains = utils.get_subdomains(self.data)
            takeover = Takeover(subdomains)
            takeover.run()
        return self.data
예제 #4
0
    def main(self):
        """
        OneForAll实际运行主流程

        :return: 子域结果
        :rtype: list
        """
        self.old_table = self.domain + '_old_result'
        self.new_table = self.domain + '_now_result'
        self.origin_table = self.domain + '_origin_result'
        self.resolve_table = self.domain + '_resolve_result'

        collect = Collect(self.domain, export=False)
        collect.run()
        if self.brute:
            # 由于爆破会有大量dns解析请求 并发爆破可能会导致其他任务中的网络请求异常
            brute = Brute(self.domain, word=True, export=False)
            brute.check_env = False
            brute.run()

        # 有关数据库处理
        self.deal_db()
        # 标记新发现子域
        self.data = self.mark()

        # 不解析子域直接导出结果
        if not self.dns:
            return self.export(self.domain)

        # 解析子域
        self.data = resolve.run_resolve(self.domain, self.data)
        # 保存解析结果
        resolve.save_data(self.resolve_table, self.data)

        # 不请求子域直接导出结果
        if not self.req:
            return self.export(self.resolve_table)

        # 请求子域
        self.data = request.run_request(self.domain, self.data, self.port)
        # 保存请求结果
        request.save_data(self.domain, self.data)

        # 将最终结果列表添加到总的数据列表中
        self.datas.extend(self.data)

        # 数据库导出
        self.export(self.domain)

        # 子域接管检查
        if self.takeover:
            subdomains = utils.get_subdomains(self.data)
            takeover = Takeover(subdomains)
            takeover.run()
        return self.data
예제 #5
0
 def run(self, domain, data, port):
     logger.log('INFOR', f'Start Finder module')
     existing_subdomains = set(map(lambda x: x.get('subdomain'), data))  # 已有的子域
     found_subdomains = find_subdomains(domain, data)
     new_subdomains = found_subdomains - existing_subdomains
     if not len(new_subdomains):
         self.finish()  # 未发现新的子域就直接返回
         return data
     self.subdomains = new_subdomains
     self.gen_result()
     temp_data = resolve.run_resolve(domain, self.results)
     fina_data = request.run_request(domain, temp_data, port)
     data = data + fina_data
     self.finish()
     logger.log('INFOR', f'Saving finder results')
     utils.save_db(domain, data, 'finder')
     return data
예제 #6
0
파일: altdns.py 프로젝트: yut0u/OneForAll
 def run(self, data, port):
     logger.log('INFOR', f'Start altdns module')
     self.now_subdomains = utils.get_subdomains(data)
     self.get_words()
     self.extract_words()
     self.gen_new_subdomains()
     self.subdomains = self.new_subdomains - self.now_subdomains
     count = len(self.subdomains)
     logger.log('INFOR',
                f'The altdns module generated {count} new subdomains')
     self.end = time.time()
     self.elapse = round(self.end - self.start, 1)
     self.gen_result()
     temp_data = resolve.run_resolve(self.domain, self.results)
     fina_data = request.run_request(self.domain, temp_data, port)
     data = data + fina_data
     logger.log('INFOR', f'Saving altdns results')
     utils.save_db(self.domain, data, 'altdns')
     return data
예제 #7
0
    def main(self):
        """
        OneForAll main process

        :return: subdomain results
        :rtype: list
        """
        utils.init_table(self.domain)

        if not self.access_internet:
            logger.log('ALERT', 'Because it cannot access the Internet, '
                                'OneForAll will not execute the subdomain collection module!')
        if self.access_internet:
            self.enable_wildcard = wildcard.detect_wildcard(self.domain)

            collect = Collect(self.domain)
            collect.run()

        srv = BruteSRV(self.domain)
        srv.run()

        if self.brute:
            # Due to there will be a large number of dns resolution requests,
            # may cause other network tasks to be error
            brute = Brute(self.domain, word=True, export=False)
            brute.enable_wildcard = self.enable_wildcard
            brute.in_china = self.in_china
            brute.quite = True
            brute.run()

        utils.deal_data(self.domain)
        # Export results without resolve
        if not self.dns:
            return self.export_data()

        self.data = utils.get_data(self.domain)

        # Resolve subdomains
        utils.clear_data(self.domain)
        self.data = resolve.run_resolve(self.domain, self.data)
        # Save resolve results
        resolve.save_db(self.domain, self.data)

        # Export results without HTTP request
        if not self.req:
            return self.export_data()

        if self.enable_wildcard:
            # deal wildcard
            self.data = wildcard.deal_wildcard(self.data)

        # HTTP request
        utils.clear_data(self.domain)
        request.run_request(self.domain, self.data, self.port)

        # Finder module
        if settings.enable_finder_module:
            finder = Finder()
            finder.run(self.domain, self.data, self.port)

        # altdns module
        if settings.enable_altdns_module:
            altdns = Altdns(self.domain)
            altdns.run(self.data, self.port)

        # Information enrichment module
        if settings.enable_enrich_module:
            enrich = Enrich(self.domain)
            enrich.run()

        # Export
        self.datas.extend(self.export_data())

        # Scan subdomain takeover
        if self.takeover:
            subdomains = utils.get_subdomains(self.data)
            takeover = Takeover(targets=subdomains)
            takeover.run()
        return self.data