Example #1
0
    def __init__(self):
        self.about = AboutProject()
        self.url_req = URLRequest()

        Cmd.doc_header = "Core Commands"
        Cmd.prompt = "{}belati{} > ".format(UNDERLINE, ENDC)
        Cmd.path_complete

        Cmd.__init__(self)

        self.list_parameter = ['domain', 'username', 'email', 'orgcomp', 'proxy', 'proxy_file']
        self.parameters = {}
        self.multiple_proxy_list = []
        self.current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')

        self.show_banner()
        self.conf = Config()
        self.db = Database()
Example #2
0
    def __init__(self):
        self.about = AboutProject()
        self.url_req = URLRequest()

        # Passing arguments
        parser = argparse.ArgumentParser(
            description='=[ {} {} by {}] ({})'.format(
                self.about.__name__, self.about.__version__,
                self.about.__author__, self.about.__giturl__))
        parser.add_argument(
            '-d',
            action='store',
            dest='domain',
            help=
            'Perform OSINT from Domain e.g petruknisme.com(without protocol http/https)'
        )
        parser.add_argument('-u',
                            action='store',
                            dest='username',
                            help='Perform OSINT from username e.g petruknisme')
        parser.add_argument('-e',
                            action='store',
                            dest='email',
                            help='Perform OSINT from email address')
        parser.add_argument(
            '-c',
            action='store',
            dest='orgcomp',
            help=
            'Perform OSINT from Organization or Company Name, use double quote'
        )
        parser.add_argument('-o',
                            action='store',
                            dest='output_files',
                            help='Save log for output files')
        parser.add_argument('--db-file',
                            action='store',
                            dest='db_file_location',
                            help='Specify Database File Location(SQLite3)')
        parser.add_argument(
            '--single-proxy',
            action='store',
            dest='single_proxy',
            help='Proxy support with single IP (ex: http://127.0.0.1:8080)')
        parser.add_argument('--proxy-file',
                            action='store',
                            dest='proxy_file_location',
                            help='Proxy support from Proxy List File')
        parser.add_argument('--auto-proxy',
                            action='store_true',
                            dest='auto_proxy',
                            default=True,
                            help='Auto Proxy Support( Coming soon )')
        parser.add_argument('--version',
                            action='version',
                            version='=[ {} {} by {}] ({})'.format(
                                self.about.__name__, self.about.__version__,
                                self.about.__author__, self.about.__giturl__))
        results = parser.parse_args()

        domain = results.domain
        username = results.username
        email = results.email
        orgcomp = results.orgcomp
        single_proxy = results.single_proxy
        proxy_file_location = results.proxy_file_location
        proxy = ""
        self.multiple_proxy_list = []

        self.show_banner()

        conf = Config()
        self.db = Database()

        # Setup project
        self.project_id = self.db.create_new_project(domain, orgcomp,
                                                     datetime.datetime.now())
        log.console_log("{}[+] Creating New Belati Project... {}".format(G, W))
        log.console_log(
            "---------------------------------------------------------")
        log.console_log("Project ID: {}".format(str(self.project_id)))
        log.console_log("Project Domain: {}".format(domain))
        log.console_log("Project Organization/Company: {}".format(orgcomp))
        log.console_log(
            "---------------------------------------------------------")

        if domain is not None:
            if single_proxy is not None:
                log.console_log("{}[*] Checking Proxy Status... {}".format(
                    G, W))
                if self.check_single_proxy_status(single_proxy, "http://" +
                                                  str(domain)) == 'ok':
                    proxy = single_proxy
                else:
                    log.console_log(
                        '{}[-] Please use another proxy or disable proxy! {}'.
                        format(R, W))
                    sys.exit()

            if proxy_file_location is not None:
                log.console_log(
                    "{}[*] Checking Proxy Status from file {}{}".format(
                        G, proxy_file_location, W))
                self.check_multiple_proxy_status(proxy_file_location,
                                                 "http://" + str(domain))
                proxy = self.multiple_proxy_list

            extract_domain = tldextract.extract(domain)

            self.check_domain(self.url_req.ssl_checker(domain), proxy)
            self.banner_grab(self.url_req.ssl_checker(domain), proxy)

            if extract_domain.subdomain == "":
                self.robots_scraper(self.url_req.ssl_checker(domain), proxy)
                self.enumerate_subdomains(domain, proxy)
                self.scan_DNS_zone(domain)
                self.harvest_email_search(domain, proxy)
                self.harvest_email_pgp(domain, proxy)
            else:
                domain = extract_domain.domain + '.' + extract_domain.suffix
                self.robots_scraper(self.url_req.ssl_checker(domain), proxy)
                self.enumerate_subdomains(domain, proxy)
                self.scan_DNS_zone(domain)
                self.harvest_email_search(domain, proxy)
                self.harvest_email_pgp(domain, proxy)

            self.harvest_document(domain, proxy)

        if username is not None:
            self.username_checker(username)

        if orgcomp is not None:
            self.gather_company(orgcomp, proxy)

        if email is not None:
            log.console_log("This feature will be coming soon. Be patient :)")

        log.console_log(
            "{}All done sir! All log saved in log directory and dowloaded file saved in belatiFiles {}"
            .format(Y, W))