import os import platform from rich import print from rich.console import Console from rich.table import Table from rich.panel import Panel from GVA.dns_recon import DNSRecon from GVA.geo import geo_ip_recon from GVA.scanner import NetworkScanner from GVA.subdomain import sub_enum from GVA.jwt import JWTAnalyzer from GVA.assets import Assets from GVA.packet_analysis import PacketAnalysis from GVA.ai_models import NMAP_AI_MODEL from GVA.ai_models import DNS_AI_MODEL from GVA.ai_models import JWT_AI_MODEL assets = Assets() dns_enum = DNSRecon() geo_ip = geo_ip_recon() packetanalysis = PacketAnalysis() jwt_analyzer = JWTAnalyzer() p_ai_models = NMAP_AI_MODEL() dns_ai_models = DNS_AI_MODEL() jwt_ai_model = JWT_AI_MODEL() port_scanner = NetworkScanner() sub_recon = sub_enum() console = Console() def clearscr() -> None: try: osp = platform.system() match osp: case 'Darwin': os.system("clear") case 'Linux': os.system("clear") case 'Windows': os.system("cls") except Exception: pass class Menus(): def nmap_menu(self) -> None: try: table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "AI Options") table.add_row("2", "Set Target") table.add_row("3", "Set Profile") table.add_row("4", "Show options") table.add_row("5", "Run Attack") table.add_row("q", "Quit") console.print(table) self.option = input("Enter your choice: ") match self.option: case "1": clearscr() table0 = Table() table0.add_column("Options", style="cyan") table0.add_column("AI Available", style="green") table0.add_row("1", "OpenAI") table0.add_row("2", "Bard") table0.add_row("3", "LLama2") print(Panel(table0)) self.ai_set_choice = input("Enter AI of Choice: ") match self.ai_set_choice: case "1": self.ai_set_args, self.ai_set = "openai", "openai" self.akey_set = input("Enter OpenAI API: ") print(Panel(f"API-Key Set: {self.akey_set}")) case "2": self.ai_set_args, self.ai_set = "bard", "bard" self.bkey_set = input("Enter Bard AI API: ") print(Panel(f"API-Key Set: {self.bkey_set}")) case "3": clearscr() tablel = Table() tablel.add_column("Options", style="cyan") tablel.add_column("Llama Options", style="cyan") tablel.add_row("1", "Llama Local") tablel.add_row("2", "Llama RunPod") print(tablel) self.ai_set_choice = input("Enter AI of Choice: ") self.ai_set_args = "llama" self.ai_set = "llama" if self.ai_set_choice == "1": self.ai_set = "llama" print(Panel("No Key needed")) print(Panel("Selected LLama")) elif self.ai_set_choice == "2": self.ai_set = "llama-api" self.llamaendpoint = input("Enter Runpod Endpoint ID: ") self.llamakey = input("Enter Runpod API Key: ") print(Panel(f"API-Key Set: {self.llamakey}")) print(Panel(f"Runpod Endpoint Set: {self.llamaendpoint}")) self.nmap_menu() case "2": clearscr() print(Panel("Set Target Hostname or IP")) self.t = input("Enter Target: ") print(Panel(f"Target Set: {self.t}")) self.nmap_menu() case "3": clearscr() table1 = Table() table1.add_column("Options", style="cyan") table1.add_column("Value", style="green") table1.add_row("1", "-Pn -sV -T4 -O -F") table1.add_row("2", "-Pn -T4 -A -v") table1.add_row("3", "-Pn -sS -sU -T4 -A -v") table1.add_row("4", "-Pn -p- -T4 -A -v") table1.add_row("5", "-Pn -sS -sU -T4 -A -PE -PP -PY -g 53 --script=vuln") table1.add_row("6", "-Pn -sV -p- -A") table1.add_row("7", "-Pn -sS -sV -O -T4 -A") table1.add_row("8", "-Pn -sC") table1.add_row("9", "-Pn -p 1-65535 -T4 -A -v") table1.add_row("10", "-Pn -sU -T4") table1.add_row("11", "-Pn -sV --top-ports 100") table1.add_row("12", "-Pn -sS -sV -T4 --script=default,discovery,vuln") table1.add_row("13", "-Pn -F") print(Panel(table1)) self.profile_num = input("Enter your Profile: ") print(Panel(f"Profile Set {self.profile_num}")) self.nmap_menu() case "4": clearscr() table2 = Table() table2.add_column("Options", style="cyan") table2.add_column("Value", style="green") table2.add_row("AI Set", str(self.ai_set_args)) table2.add_row("OpenAI API Key", str(self.akey_set)) table2.add_row("Bard AI API Key", str(self.bkey_set)) table2.add_row("Llama Runpod API Key", str(self.llamakey)) table2.add_row("Runpod Endpoint ID", str(self.llamaendpoint)) table2.add_row("Target", str(self.t)) table2.add_row("Profile", str(self.profile_num)) print(Panel(table2)) self.nmap_menu() case "5": clearscr() pout: str = port_scanner.scanner( AIModels=p_ai_models, ip=self.t, profile=int(self.profile_num), akey=self.akey_set, bkey=self.bkey_set, lkey=self.lkey, lendpoint=self.lendpoint, AI=self.ai_set ) assets.print_output("Nmap", pout, self.ai_set) case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program")) def dns_menu(self) -> None: try: table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "AI Option") table.add_row("2", "Set Target") table.add_row("3", "Show options") table.add_row("4", "Run Attack") table.add_row("q", "Quit") console.print(table) option = input("Enter your choice: ") match option: case "1": clearscr() table0 = Table() table0.add_column("Options", style="cyan") table0.add_column("AI Available", style="green") table0.add_row("1", "OpenAI") table0.add_row("2", "Bard") table0.add_row("3", "LLama2") print(Panel(table0)) self.ai_set_choice = input("Enter AI of Choice: ") match self.ai_set_choice: case "1": self.ai_set_args, self.ai_set = "openai", "openai" self.akey_set = input("Enter OpenAI API: ") print(Panel(f"API-Key Set: {self.akey_set}")) case "2": self.ai_set_args, self.ai_set = "bard", "bard" self.bkey_set = input("Enter Bard AI API: ") print(Panel(f"API-Key Set: {self.bkey_set}")) case "3": clearscr() tablel = Table() tablel.add_column("Options", style="cyan") tablel.add_column("Llama Options", style="cyan") tablel.add_row("1", "Llama Local") tablel.add_row("2", "Llama RunPod") print(tablel) self.ai_set_choice = input("Enter AI of Choice: ") self.ai_set_args = "llama" self.ai_set = "llama" if self.ai_set_choice == "1": self.ai_set = "llama" print(Panel("No Key needed")) print(Panel("Selected LLama")) elif self.ai_set_choice == "2": self.ai_set = "llama-api" self.llamaendpoint = input("Enter Runpod Endpoint ID: ") self.llamakey = input("Enter Runpod API Key: ") print(Panel(f"API-Key Set: {self.llamakey}")) print(Panel(f"Runpod Endpoint Set: {self.llamaendpoint}")) self.dns_menu() case "2": clearscr() print(Panel("Set Target Hostname or IP")) self.t = input("Enter Target: ") print(Panel(f"Target Set:{self.t}")) self.dns_menu() case "3": clearscr() table1 = Table() table1.add_column("Options", style="cyan") table1.add_column("Value", style="green") table1.add_row("AI Set", str(self.ai_set_args)) table1.add_row("OpenAI API Key", str(self.akey_set)) table1.add_row("Bard AI API Key", str(self.bkey_set)) table1.add_row("Llama Runpod API Key", str(self.llamakey)) table1.add_row("Runpod Endpoint ID", str(self.llamaendpoint)) table1.add_row("Target", str(self.t)) print(Panel(table1)) self.dns_menu() case "4": clearscr() dns_output: str = dns_enum.dns_resolver( AIModels=dns_ai_models, target=self.t, akey=self.akey_set, bkey=self.bkey_set, lkey=self.lkey, lendpoint=self.lendpoint, AI=self.ai_set ) assets.print_output("DNS", dns_output, self.ai_set) case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program")) def jwt_menu(self) -> None: try: table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "AI Option") table.add_row("2", "Set Token") table.add_row("3", "Show options") table.add_row("4", "Run Attack") table.add_row("q", "Quit") console.print(table) option = input("Enter your choice: ") match option: case "1": clearscr() table0 = Table() table0.add_column("Options", style="cyan") table0.add_column("AI Available", style="green") table0.add_row("1", "OpenAI") table0.add_row("2", "Bard") table0.add_row("3", "LLama2") print(Panel(table0)) self.ai_set_choice = input("Enter AI of Choice: ") match self.ai_set_choice: case "1": self.ai_set_args, self.ai_set = "openai", "openai" self.akey_set = input("Enter OpenAI API: ") print(Panel(f"API-Key Set: {self.akey_set}")) case "2": self.ai_set_args, self.ai_set = "bard", "bard" self.bkey_set = input("Enter Bard AI API: ") print(Panel(f"API-Key Set: {self.bkey_set}")) case "3": clearscr() tablel = Table() tablel.add_column("Options", style="cyan") tablel.add_column("Llama Options", style="cyan") tablel.add_row("1", "Llama Local") tablel.add_row("2", "Llama RunPod") print(tablel) self.ai_set_choice = input("Enter AI of Choice: ") self.ai_set_args = "llama" self.ai_set = "llama" if self.ai_set_choice == "1": self.ai_set = "llama" print(Panel("No Key needed")) print(Panel("Selected LLama")) elif self.ai_set_choice == "2": self.ai_set = "llama-api" self.llamaendpoint = input("Enter Runpod Endpoint ID: ") self.llamakey = input("Enter Runpod API Key: ") print(Panel(f"API-Key Set: {self.llamakey}")) print(Panel(f"Runpod Endpoint Set: {self.llamaendpoint}")) self.jwt_menu() case "2": clearscr() print(Panel("Set Token value")) self.t = input("Enter TOKEN: ") print(Panel(f"Token Set:{self.t}")) self.jwt_menu() case "3": clearscr() table1 = Table() table1.add_column("Options", style="cyan") table1.add_column("Value", style="green") table1.add_row("AI Set", str(self.ai_set_args)) table1.add_row("OpenAI API Key", str(self.akey_set)) table1.add_row("Bard AI API Key", str(self.bkey_set)) table1.add_row("Llama Runpod API Key", str(self.llamakey)) table1.add_row("Runpod Endpoint ID", str(self.llamaendpoint)) table1.add_row("JWT TOKEN", str(self.t)) print(Panel(table1)) self.jwt_menu() case "4": clearscr() JWT_output: str = jwt_analyzer.analyze( AIModels=jwt_ai_model, token=self.t, openai_api_token=self.akey_set, bard_api_token=self.bkey_set, llama_api_token=self.lkey, llama_endpoint=self.lendpoint, AI=self.ai_set ) assets.print_output("JWT", JWT_output, self.ai_set) case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program")) def pcap_menu(self) -> None: try: table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "Set Target file location") table.add_row("2", "Set Output file location") table.add_row("3", "Set Threads") table.add_row("4", "Show options") table.add_row("5", "Run Attack") table.add_row("q", "Quit") console.print(table) self.option = input("Enter your choice: ") match self.option: case "1": clearscr() print(Panel("Set Target PCAP file Location")) self.t = input("Enter Target: ") print(Panel(f"Target Set: {self.t}")) self.pcap_menu() case "2": clearscr() print(Panel("Set Output file Location")) self.t = input("Enter Location: ") print(Panel(f"Output Set: {self.output_loc}")) self.pcap_menu() case "3": clearscr() print(Panel("Set Number of threads")) self.t = input("Enter Threads: ") print(Panel(f"Threads Set: {self.threads}")) self.pcap_menu() case "4": clearscr() table1 = Table() table1.add_column("Options", style="cyan") table1.add_column("Value", style="green") table1.add_row("Target PCAP file", str(self.t)) table1.add_row("Output location", str(self.output_loc)) table1.add_row("Threads set", str(self.threads)) print(Panel(table1)) self.pcap_menu() case "5": clearscr() packetanalysis.PacketAnalyzer( cap_loc=self.t, save_loc=self.output_loc, max_workers=self.threads ) case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program")) def geo_menu(self) -> None: try: table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "ADD API Key") table.add_row("2", "Set Target") table.add_row("3", "Show options") table.add_row("4", "Run Attack") table.add_row("q", "Quit") console.print(table) self.option = input("Enter your choice: ") match self.option: case "1": clearscr() self.keyset = input("Enter GEO-IP API: ") print(Panel(f"GEOIP API Key Set: {self.keyset}")) self.geo_menu() case "2": clearscr() print(Panel("Set Target Hostname or IP")) self.t = input("Enter Target: ") print(Panel(f"Target Set: {self.t}")) self.geo_menu() case "3": clearscr() table1 = Table() table1.add_column("Options", style="cyan") table1.add_column("Value", style="green") table1.add_row("API Key", str(self.keyset)) table1.add_row("Target", str(self.t)) print(Panel(table1)) self.geo_menu() case "4": clearscr() geo_output: str = geo_ip.geoip(self.keyset, self.t) assets.print_output("GeoIP", str(geo_output), ai="None") case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program")) def sub_menu(self) -> None: try: table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "ADD Subdomain list") table.add_row("2", "Set Target") table.add_row("3", "Show options") table.add_row("4", "Run Attack") table.add_row("q", "Quit") console.print(table) self.option = input("Enter your choice: ") match self.option: case "1": clearscr() print(Panel("Set TXT subdomain file location")) self.list_loc = input("Enter List Location: ") print(Panel(f"Location Set: {self.list_loc}")) self.sub_menu() case "2": clearscr() print(Panel("Set Target Hostname or IP")) self.t = input("Enter Target: ") print(Panel(f"Target Set: {self.t}")) self.sub_menu() case "3": clearscr() table1 = Table() table1.add_column("Options", style="cyan") table1.add_column("Value", style="green") table1.add_row("Location", str(self.list_loc)) table1.add_row("Target", str(self.t)) print(Panel(table1)) self.sub_menu() case "4": clearscr() sub_output: str = sub_recon.sub_enumerator(self.t, self.list_loc) console.print(sub_output, style="bold underline") case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program")) def __init__(self, lkey, threads, output_loc, lendpoint, keyset, t, profile_num, ai_set, akey_set, bkey_set, ai_set_args, llamakey, llamaendpoint) -> None: try: self.lkey = lkey self.threads = threads self.output_loc = output_loc self.lendpoint = lendpoint self.keyset = keyset self.t = t self.profile_num = profile_num self.ai_set = ai_set self.akey_set = akey_set self.bkey_set = bkey_set self.ai_set_args = ai_set_args self.llamakey = llamakey self.llamaendpoint = llamaendpoint table = Table() table.add_column("Options", style="cyan") table.add_column("Utility", style="green") table.add_row("1", "Nmap Enum") table.add_row("2", "DNS Enum") table.add_row("3", "Subdomain Enum") table.add_row("4", "GEO-IP Enum") table.add_row("5", "JWT Analysis") table.add_row("6", "PCAP Analysis") table.add_row("q", "Quit") console.print(table) option = input("Enter your choice: ") match option: case "1": clearscr() self.nmap_menu() case "2": clearscr() self.dns_menu() case "3": clearscr() self.sub_menu() case "4": clearscr() self.geo_menu() case "5": clearscr() self.jwt_menu() case "6": clearscr() self.pcap_menu() case "q": quit() except KeyboardInterrupt: print(Panel("Exiting Program"))