Spaces:
Sleeping
Sleeping
import json | |
import os | |
import platform | |
import subprocess | |
from typing import Any | |
from rich import print | |
from rich.console import Console | |
from rich.table import Table | |
from rich.panel import Panel | |
from rich.console import Group | |
from rich.align import Align | |
from rich import box | |
from rich.markdown import Markdown | |
console = Console() | |
class Assets(): | |
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 | |
def start_api_app(): | |
CREATE_NEW_CONSOLE = 0x00000010 | |
osp = platform.system() | |
match osp: | |
case 'Darwin': | |
subprocess.Popen(["python3", "llama_api.py"], creationflags=CREATE_NEW_CONSOLE) | |
case 'Linux': | |
subprocess.Popen(["python3", "llama_api.py"]) | |
case 'Windows': | |
subprocess.Popen(["python", "llama_api.py"], creationflags=CREATE_NEW_CONSOLE) | |
def flatten_json(self, data: Any, separator: Any = '.') -> Any: | |
flattened_data = {} | |
for key, value in data.items(): | |
if isinstance(value, dict): | |
nested_data = self.flatten_json(value, separator) | |
for nested_key, nested_value in nested_data.items(): | |
flattened_data[key + separator + nested_key] = nested_value | |
else: | |
flattened_data[key] = value | |
return flattened_data | |
def help_menu() -> None: | |
table = Table(title="Help Menu for GVA") | |
table.add_column("Options", style="cyan") | |
table.add_column("Input Type", style="green") | |
table.add_column("Argument Input", style="green") | |
table.add_column("Discription", style="green") | |
table.add_column("Other internal options", style="green") | |
table.add_row("Attack", "--attack", "TXT/STRING", | |
"The Attack the user whats to run", "sub / dns / nmap / geo") | |
table.add_row("Target", "--target", "IP/HOSTNAME", | |
"The target of the user", "None") | |
table.add_row("Domain List", "--list", "Path to text file", | |
"subdomain dictionary list", "Path") | |
table.add_row("Profile", "--profile", "INT (1-5)", | |
"The type of Nmap Scan the user intends", "None") | |
table.add_row("AI", "--ai", "STRING", | |
"Choose your AI of choice", "bard / openai (default)") | |
table.add_row("menu", "--menu", "BOOL", | |
"Interactive UI menu", "True / False (Default)") | |
table.add_row("Rich Help", "--r", "STRING", | |
"Pritty Help menu", "help") | |
console.print(table) | |
def print_output(self, attack_type: str, jdata: str, ai: str) -> Any: | |
match attack_type: | |
case "Nmap": | |
match ai: | |
case 'openai': | |
data = json.loads(jdata) | |
table = Table(title=f"GVA Report for {attack_type}", show_header=True, header_style="bold magenta") | |
table.add_column("Variables", style="cyan") | |
table.add_column("Results", style="green") | |
for key, value in data.items(): | |
table.add_row(key, value) | |
print(table) | |
case 'bard': | |
data = json.loads(jdata) | |
table = Table(title=f"GVA Report for {attack_type}", show_header=True, header_style="bold magenta") | |
table.add_column("Variables", style="cyan") | |
table.add_column("Results", style="green") | |
for key, value in data.items(): | |
table.add_row(key, value) | |
print(table) | |
case 'llama': | |
ai_out = Markdown(jdata) | |
message_panel = Panel( | |
Align.center( | |
Group("\n", Align.center(ai_out)), | |
vertical="middle", | |
), | |
box=box.ROUNDED, | |
padding=(1, 2), | |
title="[b red]The GVA LLama2", | |
border_style="blue", | |
) | |
print(message_panel) | |
case 'llama-api': | |
ai_out = Markdown(jdata) | |
message_panel = Panel( | |
Align.center( | |
Group("\n", Align.center(ai_out)), | |
vertical="middle", | |
), | |
box=box.ROUNDED, | |
padding=(1, 2), | |
title="[b red]The GVA LLama2", | |
border_style="blue", | |
) | |
print(message_panel) | |
case "DNS": | |
match ai: | |
case 'openai': | |
data = json.loads(jdata) | |
table = Table(title=f"GVA Report for {attack_type}", show_header=True, header_style="bold magenta") | |
table.add_column("Variables", style="cyan") | |
table.add_column("Results", style="green") | |
for key, value in data.items(): | |
table.add_row(key, value) | |
print(table) | |
case 'bard': | |
data = json.loads(jdata) | |
table = Table(title=f"GVA Report for {attack_type}", show_header=True, header_style="bold magenta") | |
table.add_column("Variables", style="cyan") | |
table.add_column("Results", style="green") | |
for key, value in data.items(): | |
table.add_row(key, value) | |
print(table) | |
case 'llama': | |
ai_out = Markdown(jdata) | |
message_panel = Panel( | |
Align.center( | |
Group("\n", Align.center(ai_out)), | |
vertical="middle", | |
), | |
box=box.ROUNDED, | |
padding=(1, 2), | |
title="[b red]The GVA LLama2", | |
border_style="blue", | |
) | |
print(message_panel) | |
case 'llama-api': | |
ai_out = Markdown(jdata) | |
message_panel = Panel( | |
Align.center( | |
Group("\n", Align.center(ai_out)), | |
vertical="middle", | |
), | |
box=box.ROUNDED, | |
padding=(1, 2), | |
title="[b red]The GVA LLama2", | |
border_style="blue", | |
) | |
print(message_panel) | |
case "GeoIP": | |
data = json.loads(jdata) | |
table = Table(title="GVA Report for GeoIP", show_header=True, header_style="bold magenta") | |
table.add_column("Identifiers", style="cyan") | |
table.add_column("Data", style="green") | |
flattened_data: dict = self.flatten_json(data, separator='.') | |
for key, value in flattened_data.items(): | |
value_str = str(value) | |
table.add_row(key, value_str) | |
console = Console() | |
console.print(table) | |