Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Z4nzu
GitHub Repository: Z4nzu/hackingtool
Path: blob/master/tools/tool_manager.py
1761 views
1
# coding=utf-8
2
import os
3
import sys
4
from time import sleep
5
6
from core import HackingTool
7
from core import HackingToolsCollection
8
from rich.console import Console
9
from rich.theme import Theme
10
from rich.table import Table
11
from rich.panel import Panel
12
from rich.prompt import Prompt
13
14
_theme = Theme({"purple": "#7B61FF"})
15
console = Console(theme=_theme)
16
17
18
class UpdateTool(HackingTool):
19
TITLE = "Update Tool or System"
20
DESCRIPTION = "Update Tool or System"
21
22
def __init__(self):
23
super(UpdateTool, self).__init__([
24
("Update System", self.update_sys),
25
("Update Hackingtool", self.update_ht)
26
], installable=False, runnable=False)
27
28
def update_sys(self):
29
os.system("sudo apt update && sudo apt full-upgrade -y")
30
os.system("sudo apt-get install tor openssl curl && sudo apt-get update tor openssl curl")
31
os.system("sudo apt-get install python3-pip")
32
33
def update_ht(self):
34
os.system("sudo chmod +x /etc/;"
35
"sudo chmod +x /usr/share/doc;"
36
"sudo rm -rf /usr/share/doc/hackingtool/;"
37
"cd /etc/;"
38
"sudo rm -rf /etc/hackingtool/;"
39
"mkdir hackingtool;"
40
"cd hackingtool;"
41
"git clone https://github.com/Z4nzu/hackingtool.git;"
42
"cd hackingtool;"
43
"sudo chmod +x install.sh;"
44
"./install.sh")
45
46
47
class UninstallTool(HackingTool):
48
TITLE = "Uninstall HackingTool"
49
DESCRIPTION = "Uninstall HackingTool"
50
51
def __init__(self):
52
super(UninstallTool, self).__init__([
53
('Uninstall', self.uninstall)
54
], installable=False, runnable=False)
55
56
def uninstall(self):
57
console.print("hackingtool started to uninstall..\n")
58
sleep(1)
59
os.system("sudo chmod +x /etc/;"
60
"sudo chmod +x /usr/share/doc;"
61
"sudo rm -rf /usr/share/doc/hackingtool/;"
62
"cd /etc/;"
63
"sudo rm -rf /etc/hackingtool/;")
64
console.print("\n[bold green]Hackingtool Successfully Uninstalled... Goodbye.[/bold green]")
65
sys.exit()
66
67
68
class ToolManager(HackingToolsCollection):
69
TITLE = "Update or Uninstall | Hackingtool"
70
TOOLS = [
71
UpdateTool(),
72
UninstallTool()
73
]
74
75
def pretty_print(self):
76
table = Table(title="Tool Manager — Update / Uninstall", show_lines=True, expand=True)
77
table.add_column("Title", style="purple", no_wrap=True)
78
table.add_column("Description", style="purple")
79
80
for t in self.TOOLS:
81
desc = getattr(t, "DESCRIPTION", "") or ""
82
table.add_row(t.TITLE, desc.strip().replace("\n", " "))
83
84
panel = Panel(table, title="[purple]Available Manager Tools[/purple]", border_style="purple")
85
console.print(panel)
86
87
def show_options(self, parent=None):
88
console.print("\n")
89
panel = Panel.fit("[bold magenta]Tool Manager[/bold magenta]\nSelect an action to run.", border_style="purple")
90
console.print(panel)
91
92
table = Table(title="[bold cyan]Available Options[/bold cyan]", show_lines=True, expand=True)
93
table.add_column("Index", justify="center", style="bold yellow")
94
table.add_column("Tool Name", justify="left", style="bold green")
95
table.add_column("Description", justify="left", style="white")
96
97
for i, tool in enumerate(self.TOOLS):
98
title = getattr(tool, "TITLE", tool.__class__.__name__)
99
desc = getattr(tool, "DESCRIPTION", "—")
100
table.add_row(str(i + 1), title, desc)
101
102
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
103
console.print(table)
104
105
try:
106
choice = int(Prompt.ask("[bold cyan]Select an option[/bold cyan]", default="99"))
107
if 1 <= choice <= len(self.TOOLS):
108
selected = self.TOOLS[choice - 1]
109
if hasattr(selected, "show_options"):
110
selected.show_options(parent=self)
111
elif hasattr(selected, "run"):
112
selected.run()
113
else:
114
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
115
elif choice == 99:
116
return 99
117
except Exception:
118
console.print("[bold red]Invalid choice. Try again.[/bold red]")
119
120
return self.show_options(parent=parent)
121
122
123
if __name__ == "__main__":
124
manager = ToolManager()
125
manager.pretty_print()
126
manager.show_options()
127
128