mirror of
https://github.com/Z4nzu/hackingtool
synced 2026-05-23 08:58:22 +00:00
Update all tools with NEW(design)
This commit is contained in:
parent
9f6287310b
commit
79e907f5ce
18 changed files with 976 additions and 163 deletions
|
|
@ -201,7 +201,6 @@ def interact_menu():
|
|||
console.print("\n[bold red]Interrupted by user — exiting[/bold red]")
|
||||
break
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
if system() == "Linux":
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from rich.console import Console
|
|||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
from rich.text import Text
|
||||
from rich.table import Table
|
||||
|
||||
from core import HackingTool
|
||||
from core import HackingToolsCollection
|
||||
|
|
@ -59,3 +60,70 @@ class AnonSurfTools(HackingToolsCollection):
|
|||
AnonymouslySurf(),
|
||||
Multitor(),
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Anonymously Hiding Tools", show_lines=True, expand=True)
|
||||
table.add_column("Title", style="magenta", no_wrap=True)
|
||||
table.add_column("Description", style="magenta")
|
||||
table.add_column("Project URL", style="magenta", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc).strip().replace("\n", " "), str(url))
|
||||
|
||||
panel = Panel(table, title=f"[{P_COLOR}]Available Tools[/ {P_COLOR}]", border_style=P_COLOR)
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
console.print(Panel.fit(
|
||||
"[bold magenta]Anonymously Hiding Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style=P_COLOR
|
||||
))
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# delegate if collection-style interface exists
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# otherwise, if the tool has actions or a run method, prefer those
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = AnonSurfTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from rich.console import Console
|
|||
from rich.prompt import Prompt
|
||||
from rich.panel import Panel
|
||||
from rich.text import Text
|
||||
from rich.table import Table
|
||||
|
||||
from core import HackingTool
|
||||
from core import HackingToolsCollection
|
||||
|
|
@ -148,3 +149,70 @@ class Saphyra(HackingTool):
|
|||
class DDOSTools(HackingToolsCollection):
|
||||
TITLE = "DDOS Attack Tools"
|
||||
TOOLS = [SlowLoris(), Asyncrone(), UFONet(), GoldenEye(), Saphyra()]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="DDOS Attack Tools", show_lines=True, expand=True)
|
||||
table.add_column("Title", style="magenta", no_wrap=True)
|
||||
table.add_column("Description", style="magenta")
|
||||
table.add_column("Project URL", style="magenta", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc).strip().replace("\n", " "), str(url))
|
||||
|
||||
panel = Panel(table, title=f"[{P_COLOR}]Available Tools[/ {P_COLOR}]", border_style=P_COLOR)
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
console.print(Panel.fit(
|
||||
"[bold magenta]DDOS Attack Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style=P_COLOR
|
||||
))
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# If tool exposes show_options (collection-style), delegate to it
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# Otherwise, if runnable, call its run method
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = DDOSTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from rich.console import Console
|
|||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.text import Text
|
||||
from rich.prompt import Prompt
|
||||
|
||||
console = Console()
|
||||
PURPLE_STYLE = "bold magenta"
|
||||
|
|
@ -62,14 +63,74 @@ class ExploitFrameworkTools(HackingToolsCollection):
|
|||
Web2Attack()
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Exploit framework", show_lines=True, expand=True)
|
||||
table.add_column("Title", style="magenta", no_wrap=True)
|
||||
table.add_column("Description", style="magenta")
|
||||
table.add_column("Project URL", style="magenta", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc).strip().replace("\n", " "), str(url))
|
||||
|
||||
panel = Panel(table, title=f"[magenta]Available Tools[/magenta]", border_style=PURPLE_STYLE)
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
console.print(Panel.fit(
|
||||
"[bold magenta]Exploit Framework Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style=PURPLE_STYLE
|
||||
))
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# If tool exposes show_options (collection-style), delegate to it
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# Otherwise, if runnable, call its run method
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
# --- Optional helper: pretty-print the tools list into a magenta-styled table.
|
||||
# This function is non-invasive (does not change program logic) — call it from
|
||||
# your UI code whenever you want a colored overview in terminal.
|
||||
# This helper is non-invasive and does not change tool logic.
|
||||
def render_tools_table(tools, title: str | None = None):
|
||||
"""
|
||||
Render a list of HackingTool instances (or objects with TITLE/DESCRIPTION/PROJECT_URL)
|
||||
as a rich table in magenta style. This helper does not modify any tool logic.
|
||||
as a rich table in magenta style.
|
||||
"""
|
||||
tbl = Table(title=title or "Tools", show_lines=False, header_style=PURPLE_STYLE)
|
||||
tbl.add_column("Name", style=PURPLE_STYLE, no_wrap=True)
|
||||
|
|
@ -83,3 +144,9 @@ def render_tools_table(tools, title: str | None = None):
|
|||
tbl.add_row(name, desc, url)
|
||||
|
||||
console.print(Panel(tbl, border_style=PURPLE_STYLE, title=Text(title or "Toolset", style=PURPLE_STYLE)))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = ExploitFrameworkTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ from core import HackingToolsCollection
|
|||
from rich.console import Console
|
||||
from rich.panel import Panel
|
||||
from rich.text import Text
|
||||
from rich.table import Table
|
||||
from rich.prompt import Prompt
|
||||
|
||||
console = Console()
|
||||
PURPLE_STYLE = "bold magenta"
|
||||
|
|
@ -106,3 +108,72 @@ class ForensicTools(HackingToolsCollection):
|
|||
Guymager(),
|
||||
Toolsley()
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Forensic Tools", show_lines=True, expand=True)
|
||||
table.add_column("Title", style=PURPLE_STYLE, no_wrap=True)
|
||||
table.add_column("Description", style=PURPLE_STYLE)
|
||||
table.add_column("Project URL", style=PURPLE_STYLE, no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc).replace("\n", " "), str(url))
|
||||
|
||||
console.print(Panel(table, title=f"[magenta]Available Tools[/magenta]", border_style=PURPLE_STYLE))
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
console.print(Panel.fit(
|
||||
"[bold magenta]Forensic Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to run or view options.",
|
||||
border_style=PURPLE_STYLE
|
||||
))
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# delegate to collection-like tools if available
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# if tool exposes actions (like BulkExtractor) and has a menu, try to show it
|
||||
elif hasattr(selected, "show_actions"):
|
||||
selected.show_actions(parent=self)
|
||||
# otherwise try to call run if present
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = ForensicTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import os
|
|||
import socket
|
||||
import subprocess
|
||||
import webbrowser
|
||||
import sys
|
||||
|
||||
from core import HackingTool
|
||||
from core import HackingToolsCollection
|
||||
|
|
@ -12,6 +13,7 @@ from rich.console import Console
|
|||
from rich.panel import Panel
|
||||
from rich.text import Text
|
||||
from rich.prompt import Prompt
|
||||
from rich.table import Table
|
||||
|
||||
console = Console()
|
||||
PURPLE_STYLE = "bold magenta"
|
||||
|
|
@ -41,9 +43,6 @@ class Dracnmap(HackingTool):
|
|||
RUN_COMMANDS = ["cd Dracnmap;sudo ./dracnmap-v2.2.sh"]
|
||||
PROJECT_URL = "https://github.com/Screetsec/Dracnmap"
|
||||
|
||||
# def __init__(self):
|
||||
# super(Dracnmap, self).__init__(runnable = False)
|
||||
|
||||
|
||||
class PortScan(HackingTool):
|
||||
TITLE = "Port scanning"
|
||||
|
|
@ -106,9 +105,6 @@ class ReconSpider(HackingTool):
|
|||
RUN_COMMANDS = ["cd reconspider;python3 reconspider.py"]
|
||||
PROJECT_URL = "https://github.com/bhavsec/reconspider"
|
||||
|
||||
# def __init__(self):
|
||||
# super(ReconSpider, self).__init__(runnable = False)
|
||||
|
||||
|
||||
class IsItDown(HackingTool):
|
||||
TITLE = "IsItDown (Check Website Down/Up)"
|
||||
|
|
@ -235,3 +231,72 @@ class InformationGatheringTools(HackingToolsCollection):
|
|||
PortScannerRanger(),
|
||||
Breacher()
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Information Gathering Tools", show_lines=True, expand=True)
|
||||
table.add_column("Title", style=PURPLE_STYLE, no_wrap=True)
|
||||
table.add_column("Description", style=PURPLE_STYLE)
|
||||
table.add_column("Project URL", style=PURPLE_STYLE, no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc).replace("\n", " "), str(url))
|
||||
|
||||
console.print(Panel(table, title=f"[magenta]Available Tools[/magenta]", border_style=PURPLE_STYLE))
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
console.print(Panel.fit(
|
||||
"[bold magenta]Information Gathering Collection[/bold magenta]\n"
|
||||
"Select a tool to view/run it or return to the previous menu.",
|
||||
border_style=PURPLE_STYLE
|
||||
))
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# delegate to collection-style tools if available
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# if tool exposes actions/menu, try to call it
|
||||
elif hasattr(selected, "show_actions"):
|
||||
selected.show_actions(parent=self)
|
||||
# otherwise try to call run if present
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = InformationGatheringTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -74,7 +75,47 @@ class OtherTools(HackingToolsCollection):
|
|||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Other Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# If tool exposes show_options (collection-style), delegate to it
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# Otherwise, if runnable, call its run method
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = OtherTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -15,8 +16,8 @@ console = Console(theme=_theme)
|
|||
|
||||
class TheFatRat(HackingTool):
|
||||
TITLE = "The FatRat"
|
||||
DESCRIPTION = "TheFatRat Provides An Easy way to create Backdoors and \n" \
|
||||
"Payload which can bypass most anti-virus"
|
||||
DESCRIPTION = "TheFatRat Provides An Easy way to create Backdoors and Payloads " \
|
||||
"which can bypass most anti-virus"
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/Screetsec/TheFatRat.git",
|
||||
"cd TheFatRat && sudo chmod +x setup.sh"
|
||||
|
|
@ -31,8 +32,7 @@ class TheFatRat(HackingTool):
|
|||
])
|
||||
|
||||
def update(self):
|
||||
os.system(
|
||||
"cd TheFatRat && bash update && chmod +x setup.sh && bash setup.sh")
|
||||
os.system("cd TheFatRat && bash update && chmod +x setup.sh && bash setup.sh")
|
||||
|
||||
def troubleshoot(self):
|
||||
os.system("cd TheFatRat && sudo chmod +x chk_tools && ./chk_tools")
|
||||
|
|
@ -40,9 +40,8 @@ class TheFatRat(HackingTool):
|
|||
|
||||
class Brutal(HackingTool):
|
||||
TITLE = "Brutal"
|
||||
DESCRIPTION = "Brutal is a toolkit to quickly create various payload," \
|
||||
"powershell attack,\nvirus attack and launch listener for " \
|
||||
"a Human Interface Device"
|
||||
DESCRIPTION = "Brutal is a toolkit to quickly create various payloads, powershell attacks, " \
|
||||
"virus attacks and launch listener for a Human Interface Device"
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/Screetsec/Brutal.git",
|
||||
"cd Brutal && sudo chmod +x Brutal.sh"
|
||||
|
|
@ -52,22 +51,22 @@ class Brutal(HackingTool):
|
|||
|
||||
def show_info(self):
|
||||
super(Brutal, self).show_info()
|
||||
print("""
|
||||
[!] Requirement
|
||||
>> Arduino Software (I used v1.6.7)
|
||||
>> TeensyDuino
|
||||
>> Linux udev rules
|
||||
>> Copy and paste the PaensyLib folder inside your Arduino libraries
|
||||
console.print("""
|
||||
[!] Requirement
|
||||
>> Arduino Software (I used v1.6.7)
|
||||
>> TeensyDuino
|
||||
>> Linux udev rules
|
||||
>> Copy and paste the PaensyLib folder inside your Arduino libraries
|
||||
|
||||
[!] Kindly Visit below link for Installation for Arduino
|
||||
>> https://github.com/Screetsec/Brutal/wiki/Install-Requirements
|
||||
""")
|
||||
[!] Visit for Installation for Arduino:
|
||||
>> https://github.com/Screetsec/Brutal/wiki/Install-Requirements
|
||||
""")
|
||||
|
||||
|
||||
class Stitch(HackingTool):
|
||||
TITLE = "Stitch"
|
||||
DESCRIPTION = "Stitch is Cross Platform Python Remote Administrator Tool\n\t" \
|
||||
"[!] Refer Below Link For Wins & MAc Os"
|
||||
DESCRIPTION = "Stitch is Cross Platform Python Remote Administrator Tool\n" \
|
||||
"[!] Refer Below Link For Wins & Mac OS"
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/nathanlopez/Stitch.git",
|
||||
"cd Stitch && sudo pip install -r lnx_requirements.txt"
|
||||
|
|
@ -78,10 +77,8 @@ class Stitch(HackingTool):
|
|||
|
||||
class MSFVenom(HackingTool):
|
||||
TITLE = "MSFvenom Payload Creator"
|
||||
DESCRIPTION = "MSFvenom Payload Creator (MSFPC) is a wrapper to generate \n" \
|
||||
"multiple types of payloads, based on users choice.\n" \
|
||||
"The idea is to be as simple as possible (only requiring " \
|
||||
"one input) \nto produce their payload."
|
||||
DESCRIPTION = "MSFvenom Payload Creator (MSFPC) is a wrapper to generate multiple types of payloads, " \
|
||||
"based on user choice. Simplifies payload creation."
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/g0tmi1k/msfpc.git",
|
||||
"cd msfpc;sudo chmod +x msfpc.sh"
|
||||
|
|
@ -92,9 +89,7 @@ class MSFVenom(HackingTool):
|
|||
|
||||
class Venom(HackingTool):
|
||||
TITLE = "Venom Shellcode Generator"
|
||||
DESCRIPTION = "venom 1.0.11 (malicious_server) was build to take " \
|
||||
"advantage of \n apache2 webserver to deliver payloads " \
|
||||
"(LAN) using a fake webpage written in html"
|
||||
DESCRIPTION = "Venom 1.0.11 (malicious_server) exploits apache2 webserver to deliver LAN payloads via fake webpages."
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/r00t-3xp10it/venom.git",
|
||||
"sudo chmod -R 775 venom*/ && cd venom*/ && cd aux && sudo bash setup.sh",
|
||||
|
|
@ -106,8 +101,7 @@ class Venom(HackingTool):
|
|||
|
||||
class Spycam(HackingTool):
|
||||
TITLE = "Spycam"
|
||||
DESCRIPTION = "Script to generate a Win32 payload that takes the webcam " \
|
||||
"image every 1 minute and send it to the attacker"
|
||||
DESCRIPTION = "Generates a Win32 payload that captures webcam images every 1 minute and sends them to the attacker."
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/indexnotfound404/spycam.git",
|
||||
"cd spycam && bash install.sh && chmod +x spycam"
|
||||
|
|
@ -118,19 +112,20 @@ class Spycam(HackingTool):
|
|||
|
||||
class MobDroid(HackingTool):
|
||||
TITLE = "Mob-Droid"
|
||||
DESCRIPTION = "Mob-Droid helps you to generate metasploit payloads in " \
|
||||
"easy way\n without typing long commands and save your time"
|
||||
DESCRIPTION = "Generates metasploit payloads easily without typing long commands."
|
||||
INSTALL_COMMANDS = [
|
||||
"git clone https://github.com/kinghacker0/mob-droid.git"]
|
||||
"git clone https://github.com/kinghacker0/mob-droid.git"
|
||||
]
|
||||
RUN_COMMANDS = ["cd mob-droid;sudo python mob-droid.py"]
|
||||
PROJECT_URL = "https://github.com/kinghacker0/Mob-Droid"
|
||||
|
||||
|
||||
class Enigma(HackingTool):
|
||||
TITLE = "Enigma"
|
||||
DESCRIPTION = "Enigma is a Multiplatform payload dropper"
|
||||
DESCRIPTION = "Enigma is a Multiplatform payload dropper."
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/UndeadSec/Enigma.git"]
|
||||
"sudo git clone https://github.com/UndeadSec/Enigma.git"
|
||||
]
|
||||
RUN_COMMANDS = ["cd Enigma;sudo python enigma.py"]
|
||||
PROJECT_URL = "https://github.com/UndeadSec/Enigma"
|
||||
|
||||
|
|
@ -159,10 +154,48 @@ class PayloadCreatorTools(HackingToolsCollection):
|
|||
url = getattr(t, "PROJECT_URL", "") or ""
|
||||
table.add_row(t.TITLE, desc.strip().replace("\n", " "), url)
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
console.print(Panel(table, title="[purple]Available Tools[/purple]", border_style="purple"))
|
||||
|
||||
def show_options(self):
|
||||
console.print("\n")
|
||||
console.print(Panel.fit(
|
||||
"[bold purple]Payload Creator Collection[/bold purple]\n"
|
||||
"Select a tool to run it or exit.",
|
||||
border_style="purple"
|
||||
))
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
desc = getattr(tool, "DESCRIPTION", "") or "—"
|
||||
table.add_row(str(i + 1), tool.TITLE, desc.replace("\n", " "))
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "run"):
|
||||
selected.run()
|
||||
elif hasattr(selected, "show_actions"):
|
||||
selected.show_actions()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
|
||||
return self.show_options()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = PayloadCreatorTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -263,13 +264,56 @@ class PhishingAttackTools(HackingToolsCollection):
|
|||
)
|
||||
desc = self._get_attr_fallback(t, "DESCRIPTION", "Description", "description", "INSTALL_COMMANDS", default="") or ""
|
||||
# prefer PROJECT_URL but also accept project_url or project_url-like fields
|
||||
url = self._get_attr_fallback(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "PROJECT_URL", "project_url", "projectUrl", default="") or ""
|
||||
url = self._get_attr_fallback(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="") or ""
|
||||
table.add_row(str(title), str(desc).strip().replace("\n", " "), str(url))
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Phishing Attack Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr_fallback(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr_fallback(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# If tool exposes show_options (collection-style), delegate to it
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# Otherwise, if runnable, call its run method
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
# Preserve any before_run hooks if present
|
||||
elif hasattr(selected, "before_run"):
|
||||
selected.before_run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = PhishingAttackTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -51,6 +52,12 @@ class PostExploitationTools(HackingToolsCollection):
|
|||
ChromeKeyLogger()
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Post-Exploitation Tools", show_lines=True, expand=True)
|
||||
table.add_column("Title", style="purple", no_wrap=True)
|
||||
|
|
@ -58,14 +65,58 @@ class PostExploitationTools(HackingToolsCollection):
|
|||
table.add_column("Project URL", style="purple", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
desc = getattr(t, "DESCRIPTION", "") or ""
|
||||
url = getattr(t, "PROJECT_URL", "") or ""
|
||||
table.add_row(t.TITLE, desc.strip().replace("\n", " "), url)
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="").strip().replace("\n", " ")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc or "—"), str(url))
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Post-Exploitation Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# Delegate to collection-style show_options if available
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# Otherwise call run if available
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
# If tool exposes before_run (like Vegile), call it to preserve original behavior
|
||||
elif hasattr(selected, "before_run"):
|
||||
selected.before_run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = PostExploitationTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -43,6 +44,12 @@ class RemoteAdministrationTools(HackingToolsCollection):
|
|||
Pyshell()
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Remote Administration Tools (RAT)", show_lines=True, expand=True)
|
||||
table.add_column("Title", style="purple", no_wrap=True)
|
||||
|
|
@ -50,14 +57,58 @@ class RemoteAdministrationTools(HackingToolsCollection):
|
|||
table.add_column("Project URL", style="purple", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
desc = getattr(t, "DESCRIPTION", "") or ""
|
||||
url = getattr(t, "PROJECT_URL", "") or ""
|
||||
table.add_row(t.TITLE, desc.strip().replace("\n", " "), url)
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="").strip().replace("\n", " ")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc or "—"), str(url))
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Remote Administration Tools (RAT) Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
# If tool exposes show_options (collection-style), delegate to it
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
# Otherwise, if runnable, call its run method
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
# Preserve any before_run hooks if present
|
||||
elif hasattr(selected, "before_run"):
|
||||
selected.before_run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = RemoteAdministrationTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -63,6 +64,12 @@ class ReverseEngineeringTools(HackingToolsCollection):
|
|||
Jadx()
|
||||
]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Reverse Engineering Tools", show_lines=True, expand=True)
|
||||
table.add_column("Title", style="purple", no_wrap=True)
|
||||
|
|
@ -70,14 +77,55 @@ class ReverseEngineeringTools(HackingToolsCollection):
|
|||
table.add_column("Project URL", style="purple", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
desc = getattr(t, "DESCRIPTION", "") or ""
|
||||
url = getattr(t, "PROJECT_URL", "") or ""
|
||||
table.add_row(t.TITLE, desc.strip().replace("\n", " "), url)
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="").strip().replace("\n", " ")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc or "—"), str(url))
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Reverse Engineering Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
elif hasattr(selected, "before_run"):
|
||||
selected.before_run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = ReverseEngineeringTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -14,37 +15,25 @@ console = Console(theme=_theme)
|
|||
class Sqlmap(HackingTool):
|
||||
TITLE = "Sqlmap tool"
|
||||
DESCRIPTION = "sqlmap is an open source penetration testing tool that " \
|
||||
"automates the process of \n" \
|
||||
"detecting and exploiting SQL injection flaws and taking " \
|
||||
"over of database servers \n " \
|
||||
"[!] python3 sqlmap.py -u [<http://example.com>] --batch --banner \n " \
|
||||
"More Usage [!] https://github.com/sqlmapproject/sqlmap/wiki/Usage"
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev"]
|
||||
"automates the process of detecting and exploiting SQL injection flaws " \
|
||||
"and taking over database servers. [!] python3 sqlmap.py -u [http://example.com] --batch --banner. More usage: https://github.com/sqlmapproject/sqlmap/wiki/Usage"
|
||||
INSTALL_COMMANDS = ["sudo git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev"]
|
||||
RUN_COMMANDS = ["cd sqlmap-dev;python3 sqlmap.py --wizard"]
|
||||
PROJECT_URL = "https://github.com/sqlmapproject/sqlmap"
|
||||
|
||||
|
||||
class NoSqlMap(HackingTool):
|
||||
TITLE = "NoSqlMap"
|
||||
DESCRIPTION = "NoSQLMap is an open source Python tool designed to \n " \
|
||||
"audit for as well as automate injection attacks and exploit.\n " \
|
||||
"\033[91m " \
|
||||
"[*] Please Install MongoDB \n "
|
||||
INSTALL_COMMANDS = [
|
||||
"git clone https://github.com/codingo/NoSQLMap.git",
|
||||
"sudo chmod -R 755 NoSQLMap;cd NoSQLMap;python setup.py install"
|
||||
]
|
||||
DESCRIPTION = "NoSQLMap is an open source Python tool designed to audit and automate injection attacks. [*] Please install MongoDB."
|
||||
INSTALL_COMMANDS = ["git clone https://github.com/codingo/NoSQLMap.git",
|
||||
"sudo chmod -R 755 NoSQLMap;cd NoSQLMap;python setup.py install"]
|
||||
RUN_COMMANDS = ["python NoSQLMap"]
|
||||
PROJECT_URL = "https://github.com/codingo/NoSQLMap"
|
||||
|
||||
|
||||
class SQLiScanner(HackingTool):
|
||||
TITLE = "Damn Small SQLi Scanner"
|
||||
DESCRIPTION = "Damn Small SQLi Scanner (DSSS) is a fully functional SQL " \
|
||||
"injection\nvulnerability scanner also supporting GET and " \
|
||||
"POST parameters.\n" \
|
||||
"[*]python3 dsss.py -h[help] | -u[URL]"
|
||||
DESCRIPTION = "DSSS is a fully functional SQL injection vulnerability scanner also supporting GET and POST parameters. Usage: python3 dsss.py -h | -u [URL]"
|
||||
INSTALL_COMMANDS = ["git clone https://github.com/stamparm/DSSS.git"]
|
||||
PROJECT_URL = "https://github.com/stamparm/DSSS"
|
||||
|
||||
|
|
@ -54,15 +43,9 @@ class SQLiScanner(HackingTool):
|
|||
|
||||
class Explo(HackingTool):
|
||||
TITLE = "Explo"
|
||||
DESCRIPTION = "Explo is a simple tool to describe web security issues " \
|
||||
"in a human and machine readable format.\n " \
|
||||
"Usage:- \n " \
|
||||
"[1] explo [--verbose|-v] testcase.yaml \n " \
|
||||
"[2] explo [--verbose|-v] examples/*.yaml"
|
||||
INSTALL_COMMANDS = [
|
||||
"git clone https://github.com/dtag-dev-sec/explo.git",
|
||||
"cd explo;sudo python setup.py install"
|
||||
]
|
||||
DESCRIPTION = "Explo is a simple tool to describe web security issues in human and machine readable format. Usage: explo [--verbose|-v] testcase.yaml | explo [--verbose|-v] examples/*.yaml"
|
||||
INSTALL_COMMANDS = ["git clone https://github.com/dtag-dev-sec/explo.git",
|
||||
"cd explo;sudo python setup.py install"]
|
||||
PROJECT_URL = "https://github.com/dtag-dev-sec/explo"
|
||||
|
||||
def __init__(self):
|
||||
|
|
@ -71,10 +54,7 @@ class Explo(HackingTool):
|
|||
|
||||
class Blisqy(HackingTool):
|
||||
TITLE = "Blisqy - Exploit Time-based blind-SQL injection"
|
||||
DESCRIPTION = "Blisqy is a tool to aid Web Security researchers to find " \
|
||||
"Time-based Blind SQL injection \n on HTTP Headers and also " \
|
||||
"exploitation of the same vulnerability.\n " \
|
||||
"For Usage >> \n"
|
||||
DESCRIPTION = "Blisqy helps web security researchers find time-based blind SQL injections on HTTP headers and exploit them."
|
||||
INSTALL_COMMANDS = ["git clone https://github.com/JohnTroony/Blisqy.git"]
|
||||
PROJECT_URL = "https://github.com/JohnTroony/Blisqy"
|
||||
|
||||
|
|
@ -84,43 +64,32 @@ class Blisqy(HackingTool):
|
|||
|
||||
class Leviathan(HackingTool):
|
||||
TITLE = "Leviathan - Wide Range Mass Audit Toolkit"
|
||||
DESCRIPTION = "Leviathan is a mass audit toolkit which has wide range " \
|
||||
"service discovery,\nbrute force, SQL injection detection " \
|
||||
"and running custom exploit capabilities. \n " \
|
||||
"[*] It Requires API Keys \n " \
|
||||
"More Usage [!] https://github.com/utkusen/leviathan/wiki"
|
||||
INSTALL_COMMANDS = [
|
||||
"git clone https://github.com/leviathan-framework/leviathan.git",
|
||||
"cd leviathan;sudo pip install -r requirements.txt"
|
||||
]
|
||||
DESCRIPTION = "Leviathan is a mass audit toolkit with service discovery, brute force, SQL injection detection, and custom exploit capabilities. Requires API keys."
|
||||
INSTALL_COMMANDS = ["git clone https://github.com/leviathan-framework/leviathan.git",
|
||||
"cd leviathan;sudo pip install -r requirements.txt"]
|
||||
RUN_COMMANDS = ["cd leviathan;python leviathan.py"]
|
||||
PROJECT_URL = "https://github.com/leviathan-framework/leviathan"
|
||||
|
||||
|
||||
class SQLScan(HackingTool):
|
||||
TITLE = "SQLScan"
|
||||
DESCRIPTION = "sqlscan is quick web scanner for find an sql inject point." \
|
||||
" not for educational, this is for hacking."
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo apt install php php-bz2 php-curl php-mbstring curl",
|
||||
"sudo curl https://raw.githubusercontent.com/Cvar1984/sqlscan/dev/build/main.phar --output /usr/local/bin/sqlscan",
|
||||
"chmod +x /usr/local/bin/sqlscan"
|
||||
]
|
||||
DESCRIPTION = "SQLScan is a quick web scanner to find SQL injection points. Not for educational purposes."
|
||||
INSTALL_COMMANDS = ["sudo apt install php php-bz2 php-curl php-mbstring curl",
|
||||
"sudo curl https://raw.githubusercontent.com/Cvar1984/sqlscan/dev/build/main.phar --output /usr/local/bin/sqlscan",
|
||||
"chmod +x /usr/local/bin/sqlscan"]
|
||||
RUN_COMMANDS = ["sudo sqlscan"]
|
||||
PROJECT_URL = "https://github.com/Cvar1984/sqlscan"
|
||||
|
||||
|
||||
class SqlInjectionTools(HackingToolsCollection):
|
||||
TITLE = "SQL Injection Tools"
|
||||
TOOLS = [
|
||||
Sqlmap(),
|
||||
NoSqlMap(),
|
||||
SQLiScanner(),
|
||||
Explo(),
|
||||
Blisqy(),
|
||||
Leviathan(),
|
||||
SQLScan()
|
||||
]
|
||||
TOOLS = [Sqlmap(), NoSqlMap(), SQLiScanner(), Explo(), Blisqy(), Leviathan(), SQLScan()]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="SQL Injection Tools", show_lines=True, expand=True)
|
||||
|
|
@ -129,14 +98,52 @@ class SqlInjectionTools(HackingToolsCollection):
|
|||
table.add_column("Project URL", style="purple", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
desc = getattr(t, "DESCRIPTION", "") or ""
|
||||
url = getattr(t, "PROJECT_URL", "") or ""
|
||||
table.add_row(t.TITLE, desc.strip().replace("\n", " "), url)
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="").strip().replace("\n", " ")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "PROJECT", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc or "—"), str(url))
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]SQL Injection Tools Collection[/bold magenta]\nSelect a tool to view options or run it.", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = int(Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99"))
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
elif hasattr(selected, "before_run"):
|
||||
selected.before_run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = SqlInjectionTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -23,55 +24,54 @@ class SteganoHide(HackingTool):
|
|||
"[1] Hide\n"
|
||||
"[2] Extract\n"
|
||||
"[99]Cancel\n"
|
||||
">> ")
|
||||
">> "
|
||||
)
|
||||
choice_run = validate_input(choice_run, [1, 2, 99])
|
||||
if choice_run is None:
|
||||
print("Please choose a valid input")
|
||||
console.print("[bold red]Please choose a valid input[/bold red]")
|
||||
return self.run()
|
||||
|
||||
if choice_run == 99:
|
||||
return
|
||||
|
||||
if choice_run == 1:
|
||||
file_hide = input("Enter Filename you want to Embed (1.txt) >> ")
|
||||
file_to_be_hide = input("Enter Cover Filename(test.jpeg) >> ")
|
||||
subprocess.run(
|
||||
["steghide", "embed", "-cf", file_to_be_hide, "-ef", file_hide])
|
||||
file_hide = input("Enter Filename to Embed (1.txt) >> ")
|
||||
file_to_be_hide = input("Enter Cover Filename (test.jpeg) >> ")
|
||||
subprocess.run(["steghide", "embed", "-cf", file_to_be_hide, "-ef", file_hide])
|
||||
|
||||
elif choice_run == "2":
|
||||
from_file = input("Enter Filename From Extract Data >> ")
|
||||
elif choice_run == 2:
|
||||
from_file = input("Enter Filename to Extract Data From >> ")
|
||||
subprocess.run(["steghide", "extract", "-sf", from_file])
|
||||
|
||||
|
||||
class StegnoCracker(HackingTool):
|
||||
TITLE = "StegnoCracker"
|
||||
DESCRIPTION = "SteganoCracker is a tool that uncover hidden data inside " \
|
||||
"files\n using brute-force utility"
|
||||
INSTALL_COMMANDS = [
|
||||
"pip3 install stegcracker && pip3 install stegcracker -U --force-reinstall"]
|
||||
DESCRIPTION = "SteganoCracker uncovers hidden data inside files using brute-force utility"
|
||||
INSTALL_COMMANDS = ["pip3 install stegcracker && pip3 install stegcracker -U --force-reinstall"]
|
||||
|
||||
def run(self):
|
||||
filename = input("Enter Filename:- ")
|
||||
passfile = input("Enter Wordlist Filename:- ")
|
||||
filename = input("Enter Filename >> ")
|
||||
passfile = input("Enter Wordlist Filename >> ")
|
||||
subprocess.run(["stegcracker", filename, passfile])
|
||||
|
||||
|
||||
class StegoCracker(HackingTool):
|
||||
TITLE = "StegoCracker"
|
||||
DESCRIPTION = "StegoCracker is a tool that let's you hide data into image or audio files and can retrieve from a file "
|
||||
DESCRIPTION = "StegoCracker lets you hide and retrieve data in image or audio files"
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/W1LDN16H7/StegoCracker.git",
|
||||
"sudo chmod -R 755 StegoCracker"
|
||||
]
|
||||
RUN_COMMANDS = ["cd StegoCracker && python3 -m pip install -r requirements.txt ",
|
||||
"./install.sh"
|
||||
RUN_COMMANDS = [
|
||||
"cd StegoCracker && python3 -m pip install -r requirements.txt",
|
||||
"./install.sh"
|
||||
]
|
||||
PROJECT_URL = "https://github.com/W1LDN16H7/StegoCracker"
|
||||
|
||||
|
||||
class Whitespace(HackingTool):
|
||||
TITLE = "Whitespace"
|
||||
DESCRIPTION = "Use whitespace and unicode chars for steganography"
|
||||
DESCRIPTION = "Use whitespace and unicode characters for steganography"
|
||||
INSTALL_COMMANDS = [
|
||||
"sudo git clone https://github.com/beardog108/snow10.git",
|
||||
"sudo chmod -R 755 snow10"
|
||||
|
|
@ -81,13 +81,14 @@ class Whitespace(HackingTool):
|
|||
|
||||
|
||||
class SteganographyTools(HackingToolsCollection):
|
||||
TITLE = "Steganograhy tools"
|
||||
TOOLS = [
|
||||
SteganoHide(),
|
||||
StegnoCracker(),
|
||||
StegoCracker(),
|
||||
Whitespace()
|
||||
]
|
||||
TITLE = "Steganography Tools"
|
||||
TOOLS = [SteganoHide(), StegnoCracker(), StegoCracker(), Whitespace()]
|
||||
|
||||
def _get_attr(self, obj, *names, default=""):
|
||||
for n in names:
|
||||
if hasattr(obj, n):
|
||||
return getattr(obj, n)
|
||||
return default
|
||||
|
||||
def pretty_print(self):
|
||||
table = Table(title="Steganography Tools", show_lines=True, expand=True)
|
||||
|
|
@ -96,14 +97,52 @@ class SteganographyTools(HackingToolsCollection):
|
|||
table.add_column("Project URL", style="purple", no_wrap=True)
|
||||
|
||||
for t in self.TOOLS:
|
||||
desc = getattr(t, "DESCRIPTION", "") or ""
|
||||
url = getattr(t, "PROJECT_URL", "") or ""
|
||||
table.add_row(t.TITLE, desc.strip().replace("\n", " "), url)
|
||||
title = self._get_attr(t, "TITLE", "Title", "title", default=t.__class__.__name__)
|
||||
desc = self._get_attr(t, "DESCRIPTION", "Description", "description", default="").strip().replace("\n", " ")
|
||||
url = self._get_attr(t, "PROJECT_URL", "PROJECT_URL", "project_url", "projectUrl", default="")
|
||||
table.add_row(str(title), str(desc or "—"), str(url))
|
||||
|
||||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Steganography Tools Collection[/bold magenta]\nSelect a tool to run or view options.", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = self._get_attr(tool, "TITLE", "Title", "title", default=tool.__class__.__name__)
|
||||
desc = self._get_attr(tool, "DESCRIPTION", "Description", "description", default="—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = int(Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99"))
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
elif hasattr(selected, "before_run"):
|
||||
selected.before_run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = SteganographyTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ from time import sleep
|
|||
|
||||
from core import HackingTool
|
||||
from core import HackingToolsCollection
|
||||
|
||||
from rich.console import Console
|
||||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -27,8 +27,7 @@ class UpdateTool(HackingTool):
|
|||
|
||||
def update_sys(self):
|
||||
os.system("sudo apt update && sudo apt full-upgrade -y")
|
||||
os.system(
|
||||
"sudo apt-get install tor openssl curl && sudo apt-get update tor openssl curl")
|
||||
os.system("sudo apt-get install tor openssl curl && sudo apt-get update tor openssl curl")
|
||||
os.system("sudo apt-get install python3-pip")
|
||||
|
||||
def update_ht(self):
|
||||
|
|
@ -55,14 +54,14 @@ class UninstallTool(HackingTool):
|
|||
], installable=False, runnable=False)
|
||||
|
||||
def uninstall(self):
|
||||
print("hackingtool started to uninstall..\n")
|
||||
console.print("hackingtool started to uninstall..\n")
|
||||
sleep(1)
|
||||
os.system("sudo chmod +x /etc/;"
|
||||
"sudo chmod +x /usr/share/doc;"
|
||||
"sudo rm -rf /usr/share/doc/hackingtool/;"
|
||||
"cd /etc/;"
|
||||
"sudo rm -rf /etc/hackingtool/;")
|
||||
print("\nHackingtool Successfully Uninstalled... Goodbye.")
|
||||
console.print("\n[bold green]Hackingtool Successfully Uninstalled... Goodbye.[/bold green]")
|
||||
sys.exit()
|
||||
|
||||
|
||||
|
|
@ -85,7 +84,43 @@ class ToolManager(HackingToolsCollection):
|
|||
panel = Panel(table, title="[purple]Available Manager Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Tool Manager[/bold magenta]\nSelect an action to run.", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Options[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = getattr(tool, "TITLE", tool.__class__.__name__)
|
||||
desc = getattr(tool, "DESCRIPTION", "—")
|
||||
table.add_row(str(i + 1), title, desc)
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = int(Prompt.ask("[bold cyan]Select an option[/bold cyan]", default="99"))
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
manager = ToolManager()
|
||||
manager.pretty_print()
|
||||
manager.show_options()
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -141,7 +142,45 @@ class WebAttackTools(HackingToolsCollection):
|
|||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Web Attack Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = getattr(tool, "TITLE", tool.__class__.__name__)
|
||||
desc = getattr(tool, "DESCRIPTION", "—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = WebAttackTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
# coding=utf-8
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from core import HackingTool
|
||||
from core import HackingToolsCollection
|
||||
|
|
@ -8,6 +9,7 @@ from rich.console import Console
|
|||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
|
@ -51,9 +53,9 @@ class pixiewps(HackingTool):
|
|||
os.system(
|
||||
'echo "'
|
||||
'1.> Put your interface into monitor mode using '
|
||||
'\'airmon-ng start {wireless interface}\n'
|
||||
'2.> wash -i {monitor-interface like mon0}\'\n'
|
||||
'3.> reaver -i {monitor interface} -b {BSSID of router} -c {router channel} -vvv -K 1 -f"'
|
||||
"'airmon-ng start {wireless interface}\n'"
|
||||
"'2.> wash -i {monitor-interface like mon0}\'\n'"
|
||||
"'3.> reaver -i {monitor interface} -b {BSSID of router} -c {router channel} -vvv -K 1 -f"
|
||||
'| boxes -d boy'
|
||||
)
|
||||
print("You Have To Run Manually By USing >>pixiewps -h ")
|
||||
|
|
@ -187,7 +189,45 @@ class WirelessAttackTools(HackingToolsCollection):
|
|||
panel = Panel(table, title="[purple]Available Tools[/purple]", border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Wireless Attack Tools Collection[/bold magenta]\n"
|
||||
"Select a tool to view options or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = getattr(tool, "TITLE", tool.__class__.__name__)
|
||||
desc = getattr(tool, "DESCRIPTION", "—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_options"):
|
||||
selected.show_options(parent=self)
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = WirelessAttackTools()
|
||||
tools.pretty_print()
|
||||
tools.show_options()
|
||||
|
|
@ -3,14 +3,17 @@ import os
|
|||
import subprocess
|
||||
|
||||
from rich.console import Console
|
||||
from rich.panel import Panel
|
||||
from rich.theme import Theme
|
||||
from rich.table import Table
|
||||
from rich.panel import Panel
|
||||
from rich.prompt import Prompt
|
||||
from rich import box
|
||||
|
||||
from core import HackingTool
|
||||
from core import HackingToolsCollection
|
||||
|
||||
console = Console()
|
||||
_theme = Theme({"purple": "#7B61FF"})
|
||||
console = Console(theme=_theme)
|
||||
|
||||
|
||||
class Cupp(HackingTool):
|
||||
|
|
@ -23,10 +26,10 @@ class Cupp(HackingTool):
|
|||
|
||||
def show_info(self):
|
||||
panel = Panel(
|
||||
f"[bold magenta]{self.TITLE}[/bold magenta]\n\n"
|
||||
f"[bold purple]{self.TITLE}[/bold purple]\n\n"
|
||||
f"[cyan]{self.DESCRIPTION}[/cyan]\n\n"
|
||||
f"[green]Repository:[/green] [underline blue]{self.PROJECT_URL}[/underline blue]",
|
||||
border_style="magenta",
|
||||
border_style="purple",
|
||||
box=box.ROUNDED,
|
||||
)
|
||||
console.print(panel)
|
||||
|
|
@ -44,10 +47,10 @@ class WlCreator(HackingTool):
|
|||
|
||||
def show_info(self):
|
||||
panel = Panel(
|
||||
f"[bold magenta]{self.TITLE}[/bold magenta]\n\n"
|
||||
f"[bold purple]{self.TITLE}[/bold purple]\n\n"
|
||||
f"[cyan]{self.DESCRIPTION}[/cyan]\n\n"
|
||||
f"[green]Repository:[/green] [underline blue]{self.PROJECT_URL}[/underline blue]",
|
||||
border_style="magenta",
|
||||
border_style="purple",
|
||||
box=box.ROUNDED,
|
||||
)
|
||||
console.print(panel)
|
||||
|
|
@ -63,10 +66,10 @@ class GoblinWordGenerator(HackingTool):
|
|||
|
||||
def show_info(self):
|
||||
panel = Panel(
|
||||
f"[bold magenta]{self.TITLE}[/bold magenta]\n\n"
|
||||
f"[bold purple]{self.TITLE}[/bold purple]\n\n"
|
||||
f"[cyan]{self.DESCRIPTION}[/cyan]\n\n"
|
||||
f"[green]Repository:[/green] [underline blue]{self.PROJECT_URL}[/underline blue]",
|
||||
border_style="magenta",
|
||||
border_style="purple",
|
||||
box=box.ROUNDED,
|
||||
)
|
||||
console.print(panel)
|
||||
|
|
@ -88,10 +91,10 @@ class showme(HackingTool):
|
|||
|
||||
def show_info(self):
|
||||
panel = Panel(
|
||||
f"[bold magenta]{self.TITLE}[/bold magenta]\n\n"
|
||||
f"[bold purple]{self.TITLE}[/bold purple]\n\n"
|
||||
f"[cyan]{self.DESCRIPTION}[/cyan]\n\n"
|
||||
f"[green]Repository:[/green] [underline blue]{self.PROJECT_URL}[/underline blue]",
|
||||
border_style="magenta",
|
||||
border_style="purple",
|
||||
box=box.ROUNDED,
|
||||
)
|
||||
console.print(panel)
|
||||
|
|
@ -107,10 +110,10 @@ class WordlistGeneratorTools(HackingToolsCollection):
|
|||
]
|
||||
|
||||
def show_info(self):
|
||||
header = Panel(f"[bold white on magenta] {self.TITLE} [/bold white on magenta]",
|
||||
border_style="magenta", box=box.DOUBLE)
|
||||
header = Panel(f"[bold white on purple] {self.TITLE} [/bold white on purple]",
|
||||
border_style="purple", box=box.DOUBLE)
|
||||
console.print(header)
|
||||
table = Table(box=box.SIMPLE, show_header=True, header_style="bold magenta")
|
||||
table = Table(box=box.SIMPLE, show_header=True, header_style="bold purple")
|
||||
table.add_column("#", justify="center", style="cyan", width=4)
|
||||
table.add_column("Tool", style="bold")
|
||||
table.add_column("Description", style="dim", overflow="fold")
|
||||
|
|
@ -119,4 +122,48 @@ class WordlistGeneratorTools(HackingToolsCollection):
|
|||
desc = getattr(t, "DESCRIPTION", "") or ""
|
||||
table.add_row(str(idx), t.TITLE, desc)
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
def show_options(self, parent=None):
|
||||
console.print("\n")
|
||||
panel = Panel.fit("[bold magenta]Wordlist Generator Collection[/bold magenta]\n"
|
||||
"Select a tool to view details or run it.",
|
||||
border_style="purple")
|
||||
console.print(panel)
|
||||
|
||||
table = Table(title="[bold cyan]Available Tools[/bold cyan]", show_lines=True, expand=True)
|
||||
table.add_column("Index", justify="center", style="bold yellow")
|
||||
table.add_column("Tool Name", justify="left", style="bold green")
|
||||
table.add_column("Description", justify="left", style="white")
|
||||
|
||||
for i, tool in enumerate(self.TOOLS):
|
||||
title = getattr(tool, "TITLE", tool.__class__.__name__)
|
||||
desc = getattr(tool, "DESCRIPTION", "—")
|
||||
table.add_row(str(i + 1), title, desc or "—")
|
||||
|
||||
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to previous menu")
|
||||
console.print(table)
|
||||
|
||||
try:
|
||||
choice = Prompt.ask("[bold cyan]Select a tool to view/run[/bold cyan]", default="99")
|
||||
choice = int(choice)
|
||||
if 1 <= choice <= len(self.TOOLS):
|
||||
selected = self.TOOLS[choice - 1]
|
||||
if hasattr(selected, "show_info"):
|
||||
selected.show_info()
|
||||
elif hasattr(selected, "run"):
|
||||
selected.run()
|
||||
else:
|
||||
console.print("[bold yellow]Selected tool has no runnable interface.[/bold yellow]")
|
||||
elif choice == 99:
|
||||
return 99
|
||||
except Exception:
|
||||
console.print("[bold red]Invalid choice. Try again.[/bold red]")
|
||||
return self.show_options(parent=parent)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tools = WordlistGeneratorTools()
|
||||
tools.show_info()
|
||||
tools.show_options()
|
||||
Loading…
Reference in a new issue