def gpl_while_input(title: str, list_of_chooses=[], text_color='magenta', number_color='green', title_color='white', input_text='Number of choose : ', input_color='blue', on_invalid_sleep_time=1, on_invalid_text='Invalid number!', on_exit_request_text='Exit with user request.', on_exit_request_forground_text_color='yellow', exit_option=True, exit_option_text='Exit (or "q").'): if exit_option: list_of_chooses.append(exit_option_text) while True: gpl_clear_and_banner() print(colored(title, title_color)) i = 0 for option in list_of_chooses: i += 1 print("\t" + colored(str(i), number_color) + ' ' + colored(option, text_color)) choose = gpl_input("\n" + input_text, input_color, clear_and_banner_before=False) try: choose = int(choose) except: Handler(Error_Levels.High, on_invalid_text) gpl_sleep(on_invalid_sleep_time) continue else: if choose <= 0 or choose > len(list_of_chooses): Handler(Error_Levels.High, on_invalid_text) gpl_sleep(on_invalid_sleep_time) continue if exit_option and choose == len(list_of_chooses): print( colored(on_exit_request_text, on_exit_request_forground_text_color)) Exit_Request(Exit_Codes.Normal) else: list_of_chooses.pop() return choose
def gpl_confirm(text: str, default_return_value=None, clear_and_banner_before=True): Choose = str.lower( gpl_input(colored('[?] ', 'green') + text + ' [y/n/q] ? ', dont_style=True, clear_and_banner_before=clear_and_banner_before)) if Choose == 'n' or Choose == 'no': return False elif Choose == 'y' or Choose == 'yes': return True else: if default_return_value != None: return default_return_value else: print( colored('[!] ', 'red') + colored( 'Invalid Choose! type once y/yes/n/no/q/exit', 'yellow')) gpl_sleep(1)
def gpl_clear(clear_on_unsuported_OS=True, on_unsuported_OS_text="New page is here:\n-----------------", on_unsuported_OS_text_color='yellow'): global OS if OS == 'Linux': print('\033c') elif OS == 'Windows': print(popen('cls').read()) elif clear_on_unsuported_OS: print(colored(on_unsuported_OS_text, on_unsuported_OS_text_color)) print('\033c')
def Exit_Request(Error_Code, clear_and_banner=True, text_after_clear=None, clear_tmp_folder=True): if clear_and_banner: gpl_clear_and_banner() if text_after_clear: print(text_after_clear) # clean tmp folder if clear_tmp_folder: Clean_Temp_Dir(False) print(colored('Good by..', 'magenta')) exit(Error_Code)
def gpl_sleep(time_by_sec=1, on_exit_request_text='Exit with user request.', on_exit_request_forground_color='yellow', manage_ctrl_C_and_exit=True): try: sleep(time_by_sec) except (KeyboardInterrupt, EOFError): if manage_ctrl_C_and_exit: print( colored(on_exit_request_text, on_exit_request_forground_color)) exit(Exit_Codes.CTRL_C) else: raise KeyboardInterrupt
def gpl_input(text: str, dont_style=False, forground_color='white', clear_and_banner_before=True, on_invalid_after_clear_text=None, clear_before=False, on_exit_request_text='\nExit with user request.', on_exit_request_forground_color='yellow', q_to_exit=True, clear_and_banner_when_exit=True, clear_when_exit=False, get_int=False, get_float=False, get_ip=False, on_invalid_number_text='Invalid number!', on_invalid_sleep_by_sec=1, on_invalid_clear_and_banner=True, on_invalid_ip_text="Invalid IP!"): if clear_and_banner_before and (not clear_before): gpl_clear_and_banner() elif clear_before: gpl_clear() try: while True: if dont_style: choose = input(text) else: choose = input(colored(text, forground_color)) if q_to_exit and (str.lower(choose) == 'q' or str.lower(choose) == 'exit'): if clear_when_exit: gpl_clear() elif clear_and_banner_when_exit: gpl_clear_and_banner() print( colored(on_exit_request_text, on_exit_request_forground_color)) Exit_Request(Exit_Codes.Normal) else: if get_float: try: choose = float(choose) except: Handler(Error_Levels.High, on_invalid_number_text) gpl_sleep(on_invalid_sleep_by_sec) if on_invalid_clear_and_banner: gpl_clear_and_banner() if on_invalid_after_clear_text: print(on_invalid_after_clear_text) else: return choose elif get_int: try: choose = int(choose) except: Handler(Error_Levels.High, on_invalid_number_text) gpl_sleep(on_invalid_sleep_by_sec) if on_invalid_clear_and_banner: gpl_clear_and_banner() if on_invalid_after_clear_text: print(on_invalid_after_clear_text) else: return choose elif get_ip: try: ip_address(choose) except: Handler(Error_Levels.High, on_invalid_ip_text) gpl_sleep(on_invalid_sleep_by_sec) if on_invalid_clear_and_banner: gpl_clear_and_banner() if on_invalid_after_clear_text: print(on_invalid_after_clear_text) else: return choose else: return choose except (KeyboardInterrupt, EOFError): print( colored("\n" + on_exit_request_text, on_exit_request_forground_color)) Exit_Request(Exit_Codes.CTRL_C, text_after_clear=colored('Exit with user request.', 'yellow'))
# import libs from os import name from time import sleep from lib.packages.termcolor import colored from lib.config.Main_Configs import Sleep_On_Unknown_OS """ detect os """ # can be once : ['Linux','Windows','Unknown'] if str.lower(name) == 'nt': OS = 'Windows' elif str.lower(name) == 'posix': OS = 'Linux' else: OS = 'Unknown' print( colored('[!] ', 'red') + colored( 'Your os not support, Sometimes it may be not working. Continue after ' + str(Sleep_On_Unknown_OS) + ' S..')) sleep(Sleep_On_Unknown_OS)
def gpl_clear_and_banner(owners_text='WitBlack', field2_title='', field2_text='', field3_title='', field3_text='', license='FREE'): # plugin_version shuild in globals global Banner_Version if not 'Banner_Version' in globals(): raise Exception( 'Banner_Version not in globals. Run gpl_set_banner_verion first.') gpl_clear() Python_Version = str(version_info[0]) if len(field3_title) > 31: field3_title = field3_title[:31] if len(field2_title) > 31: field3_title = field2_title[:31] print( colored( ' _______________________________________________________________________', 'red')) print( colored('|', 'red') + colored(' ▒███▒ ▒████ █ ', 'magenta') + colored(' |', 'red') + colored(' Programmer info: ', 'white') + colored('|', 'red')) print( colored('|', 'red') + colored('░█▒ ░█ █▒ ▓█ █ ', 'magenta') + colored(' |', 'red') + colored('---------------------------|', 'red')) print( colored('|', 'red') + colored('█▒ █ █▒██▒ █ █ █ ▒███▒', 'magenta') + colored(' |', 'red') + colored(' Programmed by WitBlack ', 'green') + colored('|', 'red')) print( colored('|', 'red') + colored('█ ▒█ █▓ ▒█ █ █ █ █▒ ░█', 'magenta') + colored(' |', 'red') + colored(' Github ~> ', 'white') + colored('|', 'red')) print( colored('|', 'red') + colored('█ ██ ███░ █ █ █ █ █ █▒░ ', 'magenta') + colored(' |', 'red') + colored('Https://github.com/WitBlack', 'blue') + colored('|', 'red')) print( colored('|', 'red') + colored('█ █ ▓█ █ █ █ █ █ ░███▒', 'magenta') + colored(' |', 'red') + colored(' Website ~> ', 'white') + colored('|', 'red')) print( colored('|', 'red') + colored('█▒ █ █ █ █ █ █ ▒█', 'magenta') + colored(' |', 'red') + colored('Https://BugZone.ir ', 'blue') + colored('|', 'red')) print( colored('|', 'red') + colored('▒█░ ░█ █░ ▓█ █ █ █ █▒ ▓█ █░ ▒█', 'magenta') + colored(' |', 'red') + colored(' E-Mail ~> ', 'white') + colored('|', 'red')) print( colored('|', 'red') + colored(' ▒███▒ ▒████ █ █ █ ▒██▒█ ▒███▒', 'magenta') + colored(' |', 'red') + colored('[email protected] ', 'blue') + colored('|', 'red')) print( colored('|', 'red') + colored( ' _________|___________________________|', 'red')) print( colored('|', 'red') + colored('________________________________|', 'red') + colored(' ███ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored(' Information : ', 'white') + colored('|', 'red') + colored(' ███████ █ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored('--------------------------------', 'red') + colored('|', 'red') + colored(' █ █ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored(' Python Version: ', 'blue') + colored(Python_Version + ' ', 'white') + colored('|', 'red') + colored(' █ ███ ███ █ ▒███▒ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored(' LICENSE: ', 'blue') + colored(gpl_fix_spases(license, 22, overflow=False), 'white') + colored('|', 'red') + colored(' █ █▓ ▓█ █▓ ▓█ █ █▒ ░█ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored(' VERSION: ', 'blue') + colored(gpl_fix_spases(Banner_Version, 22, overflow=False), 'white') + colored('|', 'red') + colored(' █ █ █ █ █ █ █▒░ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored(' OS: ', 'blue') + colored(gpl_fix_spases(OS, 27, overflow=False), 'white') + colored('|', 'red') + colored(' █ █ █ █ █ █ ░███▒ ', 'magenta') + colored('|', 'red')) print( colored('|', 'red') + colored(' Owners: ', 'blue') + colored(gpl_fix_spases(owners_text, 23, overflow=False), 'white') + colored('|', 'red') + colored(' █ █ █ █ █ █ ▒█ ', 'magenta') + colored('|', 'red')) print( colored('| ', 'red') + colored(field2_title, 'blue') + colored( gpl_fix_spases(field2_text, 31 - len(field2_title), overflow=False), 'white') + colored('|', 'red') + colored(' █ █▓ ▓█ █▓ ▓█ █░ █░ ▒█ ', 'magenta') + colored('|', 'red')) print( colored('| ', 'red') + colored(field3_title, 'blue') + colored( gpl_fix_spases(field3_text, 31 - len(field3_title), overflow=False), 'white') + colored('|', 'red') + colored(' █ ███ ███ ▒██ ▒███▒ ', 'magenta') + colored('|', 'red')) print( colored( '|________________________________|_____________________________________|', 'red')) print( colored('| Warning:', 'red') + colored( " Don't break or kill script while process runing. ", 'yellow') + colored('|', 'red')) print( colored( '|______________________________________________________________________|\n', 'red'))
def Handler(Error_Level, Title, Description=None, Clear_Page=True): if Error_Level == Error_Levels.Critical: print(colored('[!] ', 'red') + colored(Title, 'yellow')) if Clear_Page: Exit_Request(Exit_Codes.Crash) else: Exit_Request(Exit_Codes.Crash, clear_and_banner=False) elif Error_Level == Error_Levels.High: print(colored('[!] ', 'red') + colored(Title, 'yellow')) elif Error_Level == Error_Levels.Confirm: print(colored('[?] ', 'yellow') + colored(Title, 'white')) elif Error_Level == Error_Levels.Failed_Job: print(colored('[-] ', 'yellow') + colored(Title, 'red')) elif Error_Level == Error_Levels.Alert: print(colored('[+] ', 'green') + colored(Title, 'white')) elif Error_Level == Error_Levels.Info: print(colored('[*] ', 'magenta') + colored(Title, 'white')) else: print(Title) # show description if Description != None: if Error_Level == None: print(Description) else: print(colored("Description:\t", 'blue') + colored(Description, 'white'))
def gpl_ask_load_from_file( just_ask=False, read_lines=False, read_content=False, read_bytes=False, ask_address_text='Enter address/name of file to load (q to exit): ', ask_address_text_color='white', on_file_not_exists_text='File not exists or not a file!', on_file_not_exists_text_color='red', on_file_not_exists_sleep_by_sec=1, on_file_not_have_enough_access_text='File not have enough access to read.', on_file_not_have_enough_access_text_color='red', on_file_not_have_enough_access_sleep_by_sec=1, on_file_is_dir_text="It's a directory. should be a file.", on_file_is_dir_text_color='red', on_file_is_dir_sleep_by_sec=1): while True: gpl_clear() address = gpl_input(ask_address_text, ask_address_text_color) if not exists(address): print( colored(on_file_not_exists_text, on_file_not_exists_text_color)) gpl_sleep(on_file_not_exists_sleep_by_sec) elif isfile(address): if just_ask: return address elif read_content: try: file = open(address, 'r') data = file.read() except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_have_enough_access_sleep_by_sec) else: file.close() return data elif read_lines: try: file = open(address, 'r') data = file.readlines() except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_exists_sleep_by_sec) else: file.close() lst = [] for item in data: if item[-1:] == "\n": lst.append(item[:-1]) else: lst.append(item) return lst elif read_bytes: try: file = open(address, 'rb') data = file.read() except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_exists_sleep_by_sec) else: file.close() return data elif isdir(address): print(colored(on_file_is_dir_text, on_file_is_dir_text_color)) gpl_sleep(on_file_is_dir_sleep_by_sec)
def gpl_ask_save_to_file( just_ask=False, bytes_to_write=b'', string_to_write='', is_string_to_write=True, ask_address_text='Enter address/name of file to load (q to exit): ', ask_address_text_color='white', on_ask_overwrite_text='This is a file, Overwrite [y/n/q] ? ', on_ask_overwrite_text_color='yellow', on_file_not_have_enough_access_text='File not have enough access to write.', on_file_not_have_enough_access_text_color='red', on_file_not_have_enough_access_sleep_by_sec=1, on_file_is_dir_text='This is a directory. Should be file.', on_file_is_dir_text_color='red', on_file_is_dir_sleep_by_sec=1): while True: gpl_clear() address = gpl_input(ask_address_text, ask_address_text_color) if not exists(address): if just_ask: return address elif is_string_to_write: try: file = open(address, 'w') file.write(string_to_write) except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_have_enough_access_sleep_by_sec) else: file.close() return else: try: file = open(address, 'wb') file.write(bytes_to_write) except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_have_enough_access_sleep_by_sec) else: file.close() return elif isdir(address): print(colored(on_file_is_dir_text, on_file_is_dir_text_color)) gpl_sleep(on_file_is_dir_sleep_by_sec) elif isfile(address): gpl_clear() choose = gpl_input(on_ask_overwrite_text, on_ask_overwrite_text_color) if choose.lower() == 'y' or choose.lower() == 'yes': if just_ask: return address elif is_string_to_write: try: file = open(address, 'w') file.write(string_to_write) except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_have_enough_access_sleep_by_sec) else: file.close() return else: try: file = open(address, 'wb') file.write(bytes_to_write) except: print( colored(on_file_not_have_enough_access_text, on_file_not_have_enough_access_text_color)) gpl_sleep(on_file_not_have_enough_access_sleep_by_sec) else: file.close() return
def Generate_Menu(Plugin_List): ret = colored('Select Once:\n\n', 'white') for Plugin in Plugin_List: ret += colored("\n" + str(Plugin['ID']), 'green') + ' ' + colored( Plugin['Title'], 'white') return ret
from os import remove, mkdir, listdir, system from sys import argv, exc_info from shutil import rmtree from threading import Thread from subprocess import call # dont needed at launcher.py # just import to check installed or not from requests import get from importlib import reload from scapy.all import IP except: # failed to load external try: print( colored('[!] ', 'red') + colored('Some depends not installed.', 'yellow')) print(colored('Run "pip install -r requires.txt"', 'blue')) except: print( '\x1b[0;31m[!] ERROR: Internal "termcolor" package dameged :(\x1b[0m' ) exit(1) # load configs try: import lib.config.Exit_Codes as Exit_Codes import lib.config.Error_Levels as Error_Levels import lib.config.Main_Configs as Main_Configs except: print(