1
0
mirror of https://github.com/Z4nzu/hackingtool.git synced 2026-06-14 08:34:54 +02:00

Feat/rich UI menu lovely (#567)

This commit is contained in:
Modark
2025-10-14 02:02:18 -04:00
committed by GitHub
parent c43f290df5
commit 7df27d8383
47 changed files with 2794 additions and 581 deletions
+91 -8
View File
@@ -1,25 +1,38 @@
# coding=utf-8
import os
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
console = Console()
P_COLOR = "magenta"
class AnonymouslySurf(HackingTool):
TITLE = "Anonymously Surf"
DESCRIPTION = "It automatically overwrites the RAM when\n" \
"the system is shutting down and also change Ip."
DESCRIPTION = (
"It automatically overwrites the RAM when\n"
"the system is shutting down and also change Ip."
)
INSTALL_COMMANDS = [
"sudo git clone https://github.com/Und3rf10w/kali-anonsurf.git",
"cd kali-anonsurf && sudo ./installer.sh && cd .. && sudo rm -r kali-anonsurf"
"cd kali-anonsurf && sudo ./installer.sh && cd .. && sudo rm -r kali-anonsurf",
]
RUN_COMMANDS = ["sudo anonsurf start"]
PROJECT_URL = "https://github.com/Und3rf10w/kali-anonsurf"
def __init__(self):
super(AnonymouslySurf, self).__init__([('Stop', self.stop)])
super(AnonymouslySurf, self).__init__([("Stop", self.stop)])
def stop(self):
console.print(Panel(Text(self.TITLE, justify="center"), style=f"bold {P_COLOR}"))
console.print("Stopping Anonsurf...", style=f"bold {P_COLOR}")
os.system("sudo anonsurf stop")
@@ -28,13 +41,16 @@ class Multitor(HackingTool):
DESCRIPTION = "How to stay in multi places at the same time"
INSTALL_COMMANDS = [
"sudo git clone https://github.com/trimstray/multitor.git",
"cd multitor;sudo bash setup.sh install"
"cd multitor;sudo bash setup.sh install",
]
RUN_COMMANDS = [
"multitor --init 2 --user debian-tor --socks-port 9000 --control-port 9900 --proxy privoxy --haproxy"
]
RUN_COMMANDS = ["multitor --init 2 --user debian-tor --socks-port 9000 --control-port 9900 --proxy privoxy --haproxy"]
PROJECT_URL = "https://github.com/trimstray/multitor"
def __init__(self):
super(Multitor, self).__init__(runnable = False)
# keep original behavior (non-runnable) while still initializing
super(Multitor, self).__init__(runnable=False)
class AnonSurfTools(HackingToolsCollection):
@@ -42,5 +58,72 @@ class AnonSurfTools(HackingToolsCollection):
DESCRIPTION = ""
TOOLS = [
AnonymouslySurf(),
Multitor()
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()
+94 -13
View File
@@ -2,9 +2,18 @@
import os
import subprocess
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
console = Console()
P_COLOR = "magenta" # primary purple/magenta theme for styling
class ddos(HackingTool):
TITLE = "ddos"
@@ -21,12 +30,13 @@ class ddos(HackingTool):
PROJECT_URL = "https://github.com/the-deepnet/ddos.git"
def run(self):
method = input("Enter Method >> ")
url = input("Enter URL >> ")
threads = input("Enter Threads >> ")
proxylist = input(" Enter ProxyList >> ")
multiple = input(" Enter Multiple >> ")
timer = input(" Enter Timer >> ")
console.print(Panel(Text(self.TITLE, justify="center"), style=f"bold {P_COLOR}"))
method = Prompt.ask("Enter Method >>")
url = Prompt.ask("Enter URL >>")
threads = Prompt.ask("Enter Threads >>")
proxylist = Prompt.ask("Enter ProxyList >>")
multiple = Prompt.ask("Enter Multiple >>")
timer = Prompt.ask("Enter Timer >>")
os.system("cd ddos;")
subprocess.run(
[
@@ -52,7 +62,8 @@ class SlowLoris(HackingTool):
INSTALL_COMMANDS = ["sudo pip3 install slowloris"]
def run(self):
target_site = input("Enter Target Site:- ")
console.print(Panel(Text(self.TITLE, justify="center"), style=f"bold {P_COLOR}"))
target_site = Prompt.ask("Enter Target Site:-")
subprocess.run(["slowloris", target_site])
@@ -70,9 +81,10 @@ class Asyncrone(HackingTool):
PROJECT_URL = "https://github.com/fatihsnsy/aSYNcrone"
def run(self):
source_port = input("Enter Source Port >> ")
target_ip = input("Enter Target IP >> ")
target_port = input("Enter Target port >> ")
console.print(Panel(Text(self.TITLE, justify="center"), style=f"bold {P_COLOR}"))
source_port = Prompt.ask("Enter Source Port >>")
target_ip = Prompt.ask("Enter Target IP >>")
target_port = Prompt.ask("Enter Target port >>")
os.system("cd aSYNcrone;")
subprocess.run(
["sudo", "./aSYNcrone", source_port, target_ip, target_port, 1000]
@@ -108,8 +120,9 @@ class GoldenEye(HackingTool):
PROJECT_URL = "https://github.com/jseidl/GoldenEye"
def run(self):
console.print(Panel(Text(self.TITLE, justify="center"), style=f"bold {P_COLOR}"))
os.system("cd GoldenEye ;sudo ./goldeneye.py")
print("\033[96m Go to Directory \n [*] USAGE: ./goldeneye.py <url> [OPTIONS]")
console.print("Go to Directory\n[*] USAGE: ./goldeneye.py <url> [OPTIONS]")
class Saphyra(HackingTool):
@@ -125,13 +138,81 @@ class Saphyra(HackingTool):
PROJECT_URL = "https://github.com/anonymous24x7/Saphyra-DDoS"
def run(self):
url = input("Enter url>>> ")
console.print(Panel(Text(self.TITLE, justify="center"), style=f"bold {P_COLOR}"))
url = Prompt.ask("Enter url>>>")
try:
os.system("python saphyra.py " + url)
except Exception:
print("Enter a valid url.")
console.print("Enter a valid url.", style="bold red")
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()
+98 -1
View File
@@ -3,6 +3,15 @@ from core import HackingTool
from core import HackingToolsCollection
from tools.webattack import Web2Attack
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"
class RouterSploit(HackingTool):
TITLE = "RouterSploit"
@@ -42,7 +51,7 @@ class Commix(HackingTool):
PROJECT_URL = "https://github.com/commixproject/commix"
def __init__(self):
super(Commix, self).__init__(runnable = False)
super(Commix, self).__init__(runnable=False)
class ExploitFrameworkTools(HackingToolsCollection):
@@ -53,3 +62,91 @@ class ExploitFrameworkTools(HackingToolsCollection):
Commix(),
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 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.
"""
tbl = Table(title=title or "Tools", show_lines=False, header_style=PURPLE_STYLE)
tbl.add_column("Name", style=PURPLE_STYLE, no_wrap=True)
tbl.add_column("Description")
tbl.add_column("Project URL", overflow="fold")
for t in tools:
name = getattr(t, "TITLE", "<unknown>")
desc = getattr(t, "DESCRIPTION", "")
url = getattr(t, "PROJECT_URL", "")
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()
+95 -14
View File
@@ -1,6 +1,5 @@
# coding=utf-8
import os
import sys
# Fetching parent directory for importing core.py
@@ -11,6 +10,15 @@ sys.path.append(parent_dir)
from core import HackingTool
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"
class Autopsy(HackingTool):
TITLE = "Autopsy"
@@ -21,7 +29,7 @@ class Autopsy(HackingTool):
RUN_COMMANDS = ["sudo autopsy"]
def __init__(self):
super(Autopsy, self).__init__(installable = False)
super(Autopsy, self).__init__(installable=False)
class Wireshark(HackingTool):
@@ -32,7 +40,7 @@ class Wireshark(HackingTool):
RUN_COMMANDS = ["sudo wireshark"]
def __init__(self):
super(Wireshark, self).__init__(installable = False)
super(Wireshark, self).__init__(installable=False)
class BulkExtractor(HackingTool):
@@ -44,23 +52,24 @@ class BulkExtractor(HackingTool):
super(BulkExtractor, self).__init__([
('GUI Mode (Download required)', self.gui_mode),
('CLI Mode', self.cli_mode)
], installable = False, runnable = False)
], installable=False, runnable=False)
def gui_mode(self):
os.system(
"sudo git clone https://github.com/simsong/bulk_extractor.git")
console.print(Panel(Text(self.TITLE, justify="center"), style=PURPLE_STYLE))
console.print("[bold magenta]Cloning repository and attempting to run GUI...[/]")
os.system("sudo git clone https://github.com/simsong/bulk_extractor.git")
os.system("ls src/ && cd .. && cd java_gui && ./BEViewer")
print(
"If you getting error after clone go to /java_gui/src/ And Compile .Jar file && run ./BEViewer")
print(
"Please Visit For More Details About Installation >> https://github.com/simsong/bulk_extractor")
console.print(
"[magenta]If you get an error after clone go to /java_gui/src/ and compile the .jar file && run ./BEViewer[/]")
console.print(
"[magenta]Please visit for more details about installation: https://github.com/simsong/bulk_extractor[/]")
def cli_mode(self):
console.print(Panel(Text(self.TITLE + " - CLI Mode", justify="center"), style=PURPLE_STYLE))
os.system("sudo apt install bulk-extractor")
print("bulk_extractor and options")
console.print("[magenta]Showing bulk_extractor help and options:[/]")
os.system("bulk_extractor -h")
os.system(
'echo "bulk_extractor [options] imagefile" | boxes -d headline | lolcat')
os.system('echo "bulk_extractor [options] imagefile" | boxes -d headline | lolcat')
class Guymager(HackingTool):
@@ -70,6 +79,9 @@ class Guymager(HackingTool):
RUN_COMMANDS = ["sudo guymager"]
PROJECT_URL = "https://guymager.sourceforge.io/"
def __init__(self):
super(Guymager, self).__init__(installable=False)
class Toolsley(HackingTool):
TITLE = "Toolsley"
@@ -84,7 +96,7 @@ class Toolsley(HackingTool):
PROJECT_URL = "https://www.toolsley.com/"
def __init__(self):
super(Toolsley, self).__init__(installable = False, runnable = False)
super(Toolsley, self).__init__(installable=False, runnable=False)
class ForensicTools(HackingToolsCollection):
@@ -96,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()
+99 -19
View File
@@ -3,11 +3,21 @@ import os
import socket
import subprocess
import webbrowser
import sys
from core import HackingTool
from core import HackingToolsCollection
from core import clear_screen
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"
class NMAP(HackingTool):
TITLE = "Network Map (nmap)"
@@ -19,7 +29,7 @@ class NMAP(HackingTool):
PROJECT_URL = "https://github.com/nmap/nmap"
def __init__(self):
super(NMAP, self).__init__(runnable = False)
super(NMAP, self).__init__(runnable=False)
class Dracnmap(HackingTool):
@@ -33,19 +43,17 @@ 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"
def __init__(self):
super(PortScan, self).__init__(installable = False)
super(PortScan, self).__init__(installable=False)
def run(self):
clear_screen()
target = input('Select a Target IP: ')
console.print(Panel(Text(self.TITLE, justify="center"), style=PURPLE_STYLE))
target = Prompt.ask("[bold]Select a Target IP[/]", default="", show_default=False)
subprocess.run(["sudo", "nmap", "-O", "-Pn", target])
@@ -53,13 +61,14 @@ class Host2IP(HackingTool):
TITLE = "Host to IP "
def __init__(self):
super(Host2IP, self).__init__(installable = False)
super(Host2IP, self).__init__(installable=False)
def run(self):
clear_screen()
host = input("Enter host name (e.g. www.google.com):- ")
console.print(Panel(Text(self.TITLE, justify="center"), style=PURPLE_STYLE))
host = Prompt.ask("Enter host name (e.g. www.google.com):- ")
ips = socket.gethostbyname(host)
print(ips)
console.print(f"[{PURPLE_STYLE}]{host} -> {ips}[/]")
class XeroSploit(HackingTool):
@@ -96,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)"
@@ -106,9 +112,10 @@ class IsItDown(HackingTool):
def __init__(self):
super(IsItDown, self).__init__(
[('Open', self.open)], installable = False, runnable = False)
[('Open', self.open)], installable=False, runnable=False)
def open(self):
console.print(Panel("Opening isitdownrightnow.com", style=PURPLE_STYLE))
webbrowser.open_new_tab("https://www.isitdownrightnow.com/")
@@ -142,7 +149,8 @@ class Striker(HackingTool):
PROJECT_URL = "https://github.com/s0md3v/Striker"
def run(self):
site = input("Enter Site Name (example.com) >> ")
console.print(Panel(Text(self.TITLE, justify="center"), style=PURPLE_STYLE))
site = Prompt.ask("Enter Site Name (example.com) >> ")
os.chdir("Striker")
subprocess.run(["sudo", "python3", "striker.py", site])
@@ -160,7 +168,7 @@ class SecretFinder(HackingTool):
PROJECT_URL = "https://github.com/m4ll0k/SecretFinder"
def __init__(self):
super(SecretFinder, self).__init__(runnable = False)
super(SecretFinder, self).__init__(runnable=False)
class Shodan(HackingTool):
@@ -172,7 +180,7 @@ class Shodan(HackingTool):
PROJECT_URL = "https://github.com/m4ll0k/Shodanfy.py"
def __init__(self):
super(Shodan, self).__init__(runnable = False)
super(Shodan, self).__init__(runnable=False)
class PortScannerRanger(HackingTool):
@@ -185,7 +193,8 @@ class PortScannerRanger(HackingTool):
PROJECT_URL = "https://github.com/floriankunushevci/rang3r"
def run(self):
ip = input("Enter Ip >> ")
console.print(Panel(Text(self.TITLE, justify="center"), style=PURPLE_STYLE))
ip = Prompt.ask("Enter Ip >> ")
os.chdir("rang3r")
subprocess.run(["sudo", "python", "rang3r.py", "--ip", ip])
@@ -195,12 +204,14 @@ class Breacher(HackingTool):
DESCRIPTION = "An advanced multithreaded admin panel finder written in python."
INSTALL_COMMANDS = ["git clone https://github.com/s0md3v/Breacher.git"]
PROJECT_URL = "https://github.com/s0md3v/Breacher"
def run(self):
domain = input("Enter domain (example.com) >> ")
console.print(Panel(Text(self.TITLE, justify="center"), style=PURPLE_STYLE))
domain = Prompt.ask("Enter domain (example.com) >> ")
os.chdir("Breacher")
subprocess.run(["python3", "breacher.py", "-u", domain])
class InformationGatheringTools(HackingToolsCollection):
TITLE = "Information gathering tools"
TOOLS = [
@@ -220,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()
+75
View File
@@ -15,6 +15,15 @@ from tools.others.socialmedia_finder import SocialMediaFinderTools
from tools.others.web_crawling import WebCrawlingTools
from tools.others.wifi_jamming import WifiJammingTools
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)
class HatCloud(HackingTool):
TITLE = "HatCloud(Bypass CloudFlare for IP)"
@@ -44,3 +53,69 @@ class OtherTools(HackingToolsCollection):
WebCrawlingTools(),
MixTools()
]
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="Other Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", 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="[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()
+69
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class Keydroid(HackingTool):
TITLE = "Keydroid"
@@ -65,3 +75,62 @@ class AndroidAttackTools(HackingToolsCollection):
Droidcam(),
EvilApp()
]
def pretty_print(self):
table = Table(title="Android Attack Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Android Attack Tools 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = AndroidAttackTools()
tools.pretty_print()
tools.show_options()
+68 -1
View File
@@ -2,6 +2,15 @@
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)
class KnockMail(HackingTool):
TITLE = "Knockmail"
@@ -17,4 +26,62 @@ class KnockMail(HackingTool):
class EmailVerifyTools(HackingToolsCollection):
TITLE = "Email Verify tools"
TOOLS = [KnockMail()]
def pretty_print(self):
table = Table(title="Email Verify Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Email Verify Tools 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = EmailVerifyTools()
tools.pretty_print()
tools.show_options()
+69
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class HashBuster(HackingTool):
TITLE = "Hash Buster"
@@ -19,3 +29,62 @@ class HashBuster(HackingTool):
class HashCrackingTools(HackingToolsCollection):
TITLE = "Hash cracking tools"
TOOLS = [HashBuster()]
def pretty_print(self):
table = Table(title="Hash Cracking Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Hash Cracking Tools 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = HashCrackingTools()
tools.pretty_print()
tools.show_options()
+69
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class EvilURL(HackingTool):
TITLE = "EvilURL"
@@ -15,3 +25,62 @@ class EvilURL(HackingTool):
class IDNHomographAttackTools(HackingToolsCollection):
TITLE = "IDN Homograph Attack"
TOOLS = [EvilURL()]
def pretty_print(self):
table = Table(title="IDN Homograph Attack Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]IDN Homograph Attack 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = IDNHomographAttackTools()
tools.pretty_print()
tools.show_options()
+68
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class TerminalMultiplexer(HackingTool):
TITLE = "Terminal Multiplexer"
@@ -37,3 +47,61 @@ class MixTools(HackingToolsCollection):
Crivo()
]
def pretty_print(self):
table = Table(title="Mix Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Mix Tools 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = MixTools()
tools.pretty_print()
tools.show_options()
+69 -3
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class DebInject(HackingTool):
TITLE = "Debinject"
@@ -23,9 +33,6 @@ class Pixload(HackingTool):
PROJECT_URL = "https://github.com/chinarulezzz/pixload"
def __init__(self):
# super(Pixload, self).__init__([
# ('How To Use', self.show_project_page)
# ], runnable = False)
super(Pixload, self).__init__(runnable = False)
@@ -35,3 +42,62 @@ class PayloadInjectorTools(HackingToolsCollection):
DebInject(),
Pixload()
]
def pretty_print(self):
table = Table(title="Payload Injector Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Payload Injector 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = PayloadInjectorTools()
tools.pretty_print()
tools.show_options()
+69 -1
View File
@@ -6,6 +6,16 @@ import subprocess
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class InstaBrute(HackingTool):
TITLE = "Instagram Attack"
@@ -49,7 +59,6 @@ class Faceshell(HackingTool):
def run(self):
name = input("Enter Username >> ")
wordlist = input("Enter Wordlist >> ")
# Ignore a FileNotFoundError if we are already in the Brute_Force directory
with contextlib.suppress(FileNotFoundError):
os.chdir("Brute_Force")
subprocess.run(
@@ -75,3 +84,62 @@ class SocialMediaBruteforceTools(HackingToolsCollection):
Faceshell(),
AppCheck()
]
def pretty_print(self):
table = Table(title="Social Media Bruteforce Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Social Media Bruteforce 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = SocialMediaBruteforceTools()
tools.pretty_print()
tools.show_options()
+69
View File
@@ -5,6 +5,16 @@ import subprocess
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class FacialFind(HackingTool):
TITLE = "Find SocialMedia By Facial Recognation System"
@@ -85,3 +95,62 @@ class SocialMediaFinderTools(HackingToolsCollection):
Sherlock(),
SocialScan()
]
def pretty_print(self):
table = Table(title="Social Media Finder Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Social Media Finder 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = SocialMediaFinderTools()
tools.pretty_print()
tools.show_options()
+69
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class GoSpider(HackingTool):
TITLE = "Gospider"
@@ -16,3 +26,62 @@ class GoSpider(HackingTool):
class WebCrawlingTools(HackingToolsCollection):
TITLE = "Web crawling"
TOOLS = [GoSpider()]
def pretty_print(self):
table = Table(title="Web Crawling Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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 Crawling Tools 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = WebCrawlingTools()
tools.pretty_print()
tools.show_options()
+69
View File
@@ -2,6 +2,16 @@
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
from rich import box
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class WifiJammerNG(HackingTool):
TITLE = "WifiJammer-NG"
@@ -35,3 +45,62 @@ class WifiJammingTools(HackingToolsCollection):
WifiJammerNG(),
KawaiiDeauther()
]
def pretty_print(self):
table = Table(title="Wifi Jamming Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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]Wifi Jamming Tools 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_options"):
selected.show_options(parent=self)
elif hasattr(selected, "run"):
selected.run()
elif hasattr(selected, "show_info"):
selected.show_info()
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 = WifiJammingTools()
tools.pretty_print()
tools.show_options()
+94 -33
View File
@@ -1,13 +1,23 @@
# coding=utf-8
import os
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)
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"
@@ -22,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")
@@ -31,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"
@@ -43,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
[!] Kindly Visit below link for Installation for Arduino
>> https://github.com/Screetsec/Brutal/wiki/Install-Requirements
""")
console.print("""
[!] Requirement
>> Arduino Software (I used v1.6.7)
>> TeensyDuino
>> Linux udev rules
>> Copy and paste the PaensyLib folder inside your Arduino libraries
[!] 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"
@@ -69,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"
@@ -83,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",
@@ -97,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"
@@ -109,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"
@@ -138,3 +142,60 @@ class PayloadCreatorTools(HackingToolsCollection):
MobDroid(),
Enigma()
]
def pretty_print(self):
table = Table(title="Payload Creation Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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()
+111 -17
View File
@@ -4,6 +4,16 @@ import os
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)
class autophisher(HackingTool):
TITLE = "Autophisher RK"
DESCRIPTION = "Automated Phishing Toolkit"
@@ -13,7 +23,8 @@ class autophisher(HackingTool):
]
RUN_COMMANDS = ["cd autophisher;sudo bash autophisher.sh"]
PROJECT_URL = "https://github.com/CodingRanjith/autophisher"
class Pyphisher(HackingTool):
TITLE = "Pyphisher"
DESCRIPTION = "Easy to use phishing tool with 77 website templates"
@@ -23,8 +34,9 @@ class Pyphisher(HackingTool):
"pip3 install -r requirements.txt"
]
RUN_COMMANDS = ["cd PyPhisher;sudo python3 pyphisher.py"]
PROJECT_URL = "git clone https://github.com/KasRoudra/PyPhisher"
PROJECT_URL = "git clone https://github.com/KasRoudra/PyPhisher"
class AdvPhishing(HackingTool):
TITLE = "AdvPhishing"
DESCRIPTION = "This is Advance Phishing Tool ! OTP PHISHING"
@@ -32,7 +44,8 @@ class AdvPhishing(HackingTool):
"sudo git clone https://github.com/Ignitetch/AdvPhishing.git",
"cd AdvPhishing;chmod 777 *;bash Linux-Setup.sh"]
RUN_COMMANDS = ["cd AdvPhishing && sudo bash AdvPhishing.sh"]
PROJECT_URL = "https://github.com/Ignitetch/AdvPhishing"
PROJECT_URL = "https://github.com/Ignitetch/AdvPhishing"
class Setoolkit(HackingTool):
TITLE = "Setoolkit"
@@ -118,7 +131,8 @@ class QRJacking(HackingTool):
"sudo git clone https://github.com/cryptedwolf/ohmyqr.git && sudo apt -y install scrot"]
RUN_COMMANDS = ["cd ohmyqr && sudo bash ohmyqr.sh"]
PROJECT_URL = "https://github.com/cryptedwolf/ohmyqr"
class WifiPhisher(HackingTool):
TITLE = "WifiPhisher"
DESCRIPTION = "The Rogue Access Point Framework"
@@ -126,8 +140,9 @@ class WifiPhisher(HackingTool):
"sudo git clone https://github.com/wifiphisher/wifiphisher.git",
"cd wifiphisher"]
RUN_COMMANDS = ["cd wifiphisher && sudo python setup.py"]
PROJECT_URL = "https://github.com/wifiphisher/wifiphisher"
PROJECT_URL = "https://github.com/wifiphisher/wifiphisher"
class BlackEye(HackingTool):
TITLE = "BlackEye"
DESCRIPTION = "The ultimate phishing tool with 38 websites available!"
@@ -135,7 +150,8 @@ class BlackEye(HackingTool):
"sudo git clone https://github.com/thelinuxchoice/blackeye",
"cd blackeye "]
RUN_COMMANDS = ["cd blackeye && sudo bash blackeye.sh"]
PROJECT_URL = "https://github.com/An0nUD4Y/blackeye"
PROJECT_URL = "https://github.com/An0nUD4Y/blackeye"
class ShellPhish(HackingTool):
TITLE = "ShellPhish"
@@ -143,7 +159,8 @@ class ShellPhish(HackingTool):
INSTALL_COMMANDS = ["git clone https://github.com/An0nUD4Y/shellphish.git"]
RUN_COMMANDS = ["cd shellphish;sudo bash shellphish.sh"]
PROJECT_URL = "https://github.com/An0nUD4Y/shellphish"
class Thanos(HackingTool):
TITLE = "Thanos"
DESCRIPTION = "Browser to Browser Phishingtoolkit"
@@ -152,8 +169,9 @@ class Thanos(HackingTool):
"cd Thanos && sudo chmod -R 777 Thanos.sh"
]
RUN_COMMANDS = ["cd Thanos;sudo bash Thanos.sh"]
PROJECT_URL = "https://github.com/TridevReddy/Thanos"
PROJECT_URL = "https://github.com/TridevReddy/Thanos"
class QRLJacking(HackingTool):
TITLE = "QRLJacking"
DESCRIPTION = "QRLJacking"
@@ -169,7 +187,8 @@ class QRLJacking(HackingTool):
]
RUN_COMMANDS = ["cd QRLJacking/QRLJacker;python3 QrlJacker.py"]
PROJECT_URL = "https://github.com/OWASP/QRLJacking"
class Maskphish(HackingTool):
TITLE = "Miskphish"
DESCRIPTION = "Hide phishing URL under a normal looking URL (google.com or facebook.com)"
@@ -177,7 +196,7 @@ class Maskphish(HackingTool):
"sudo git clone https://github.com/jaykali/maskphish.git",
"cd maskphish"]
RUN_COMMANDS = ["cd maskphish;sudo bash maskphish.sh"]
PROJECT_URL = "https://github.com/jaykali/maskphish"
PROJECT_URL = "https://github.com/jaykali/maskphish"
class BlackPhish(HackingTool):
@@ -195,11 +214,12 @@ class BlackPhish(HackingTool):
def update(self):
os.system("cd BlackPhish;sudo bash update.sh")
class dnstwist(HackingTool):
Title='dnstwist'
Install_commands=['sudo git clone https://github.com/elceef/dnstwist.git','cd dnstwist']
Run_commands=['cd dnstwist;sudo python3 dnstwist.py']
project_url='https://github.com/elceef/dnstwist'
Title = 'dnstwist'
Install_commands = ['sudo git clone https://github.com/elceef/dnstwist.git','cd dnstwist']
Run_commands = ['cd dnstwist;sudo python3 dnstwist.py']
project_url = 'https://github.com/elceef/dnstwist'
class PhishingAttackTools(HackingToolsCollection):
@@ -223,3 +243,77 @@ class PhishingAttackTools(HackingToolsCollection):
Maskphish(),
dnstwist()
]
def _get_attr_fallback(self, item, *names, default=""):
for n in names:
if hasattr(item, n):
return getattr(item, n)
return default
def pretty_print(self):
table = Table(title="Phishing Attack Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", no_wrap=True)
for t in self.TOOLS:
# try typical attribute names, then fall back to common variations
title = (
self._get_attr_fallback(t, "TITLE", "Title", "title")
or t.__class__.__name__
)
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", "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()
+78
View File
@@ -4,6 +4,15 @@ import os
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)
class Vegile(HackingTool):
TITLE = "Vegile - Ghost In The Shell"
@@ -42,3 +51,72 @@ class PostExploitationTools(HackingToolsCollection):
Vegile(),
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)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", 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="").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()
+78
View File
@@ -2,6 +2,15 @@
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)
class Stitch(HackingTool):
TITLE = "Stitch"
@@ -34,3 +43,72 @@ class RemoteAdministrationTools(HackingToolsCollection):
Stitch(),
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)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", 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="").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()
+77 -2
View File
@@ -4,6 +4,15 @@ import subprocess
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)
class AndroGuard(HackingTool):
TITLE = "Androguard"
@@ -13,7 +22,7 @@ class AndroGuard(HackingTool):
PROJECT_URL = "https://github.com/androguard/androguard "
def __init__(self):
super(AndroGuard, self).__init__(runnable = False)
super(AndroGuard, self).__init__(runnable=False)
class Apk2Gold(HackingTool):
@@ -44,7 +53,7 @@ class Jadx(HackingTool):
PROJECT_URL = "https://github.com/skylot/jadx"
def __init__(self):
super(Jadx, self).__init__(runnable = False)
super(Jadx, self).__init__(runnable=False)
class ReverseEngineeringTools(HackingToolsCollection):
@@ -54,3 +63,69 @@ class ReverseEngineeringTools(HackingToolsCollection):
Apk2Gold(),
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)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", 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="").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()
+95 -60
View File
@@ -2,113 +2,148 @@
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)
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"
def __init__(self):
super(SQLiScanner, self).__init__(runnable = False)
super(SQLiScanner, self).__init__(runnable=False)
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):
super(Explo, self).__init__(runnable = False)
super(Explo, self).__init__(runnable=False)
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"
def __init__(self):
super(Blisqy, self).__init__(runnable = False)
super(Blisqy, self).__init__(runnable=False)
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)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", 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="").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()
+93 -30
View File
@@ -5,6 +5,15 @@ from core import HackingTool
from core import HackingToolsCollection
from core import validate_input
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)
class SteganoHide(HackingTool):
TITLE = "SteganoHide"
@@ -15,56 +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"
@@ -74,12 +81,68 @@ 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)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
table.add_column("Project URL", style="purple", 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="").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()
+66 -6
View File
@@ -5,6 +5,14 @@ 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)
class UpdateTool(HackingTool):
@@ -15,12 +23,11 @@ class UpdateTool(HackingTool):
super(UpdateTool, self).__init__([
("Update System", self.update_sys),
("Update Hackingtool", self.update_ht)
], installable = False, runnable = False)
], installable=False, runnable=False)
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):
@@ -44,17 +51,17 @@ class UninstallTool(HackingTool):
def __init__(self):
super(UninstallTool, self).__init__([
('Uninstall', self.uninstall)
], installable = False, runnable = False)
], 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()
@@ -64,3 +71,56 @@ class ToolManager(HackingToolsCollection):
UpdateTool(),
UninstallTool()
]
def pretty_print(self):
table = Table(title="Tool Manager — Update / Uninstall", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
for t in self.TOOLS:
desc = getattr(t, "DESCRIPTION", "") or ""
table.add_row(t.TITLE, desc.strip().replace("\n", " "))
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()
+99 -25
View File
@@ -1,40 +1,52 @@
# coding=utf-8
import subprocess
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)
class Web2Attack(HackingTool):
TITLE = "Web2Attack"
DESCRIPTION = "Web hacking framework with tools, exploits by python"
INSTALL_COMMANDS = [
"sudo git clone https://github.com/santatic/web2attack.git"]
"sudo git clone https://github.com/santatic/web2attack.git"
]
RUN_COMMANDS = ["cd web2attack && sudo python3 w2aconsole"]
PROJECT_URL = "https://github.com/santatic/web2attack"
class Skipfish(HackingTool):
TITLE = "Skipfish"
DESCRIPTION = "Skipfish – Fully automated, active web application " \
"security reconnaissance tool \n " \
"Usage: skipfish -o [FolderName] targetip/site"
DESCRIPTION = (
"Skipfish – Fully automated, active web application "
"security reconnaissance tool \n "
"Usage: skipfish -o [FolderName] targetip/site"
)
RUN_COMMANDS = [
"sudo skipfish -h",
'echo "skipfish -o [FolderName] targetip/site"|boxes -d headline | lolcat'
]
def __init__(self):
super(Skipfish, self).__init__(installable = False)
super(Skipfish, self).__init__(installable=False)
class SubDomainFinder(HackingTool):
TITLE = "SubDomain Finder"
DESCRIPTION = "Sublist3r is a python tool designed to enumerate " \
"subdomains of websites using OSINT \n " \
"Usage:\n\t" \
"[1] python3 sublist3r.py -d example.com \n" \
"[2] python3 sublist3r.py -d example.com -p 80,443"
DESCRIPTION = (
"Sublist3r is a python tool designed to enumerate "
"subdomains of websites using OSINT \n "
"Usage:\n\t[1] python3 sublist3r.py -d example.com \n"
"[2] python3 sublist3r.py -d example.com -p 80,443"
)
INSTALL_COMMANDS = [
"sudo pip3 install requests argparse dnspython",
"sudo git clone https://github.com/aboul3la/Sublist3r.git",
@@ -46,10 +58,11 @@ class SubDomainFinder(HackingTool):
class CheckURL(HackingTool):
TITLE = "CheckURL"
DESCRIPTION = "Detect evil urls that uses IDN Homograph Attack.\n\t" \
"[!] python3 checkURL.py --url google.com"
INSTALL_COMMANDS = [
"sudo git clone https://github.com/UndeadSec/checkURL.git"]
DESCRIPTION = (
"Detect evil urls that uses IDN Homograph Attack.\n\t"
"[!] python3 checkURL.py --url google.com"
)
INSTALL_COMMANDS = ["sudo git clone https://github.com/UndeadSec/checkURL.git"]
RUN_COMMANDS = ["cd checkURL && python3 checkURL.py --help"]
PROJECT_URL = "https://github.com/UndeadSec/checkURL"
@@ -67,11 +80,12 @@ class Blazy(HackingTool):
class SubDomainTakeOver(HackingTool):
TITLE = "Sub-Domain TakeOver"
DESCRIPTION = "Sub-domain takeover vulnerability occur when a sub-domain " \
"\n (subdomain.example.com) is pointing to a service " \
"(e.g: GitHub, AWS/S3,..)\n" \
"that has been removed or deleted.\n" \
"Usage:python3 takeover.py -d www.domain.com -v"
DESCRIPTION = (
"Sub-domain takeover vulnerability occur when a sub-domain "
"\n (subdomain.example.com) is pointing to a service "
"(e.g: GitHub, AWS/S3,..)\nthat has been removed or deleted.\n"
"Usage:python3 takeover.py -d www.domain.com -v"
)
INSTALL_COMMANDS = [
"git clone https://github.com/edoardottt/takeover.git",
"cd takeover;sudo python3 setup.py install"
@@ -79,14 +93,17 @@ class SubDomainTakeOver(HackingTool):
PROJECT_URL = "https://github.com/edoardottt/takeover"
def __init__(self):
super(SubDomainTakeOver, self).__init__(runnable = False)
super(SubDomainTakeOver, self).__init__(runnable=False)
class Dirb(HackingTool):
TITLE = "Dirb"
DESCRIPTION = "DIRB is a Web Content Scanner. It looks for existing " \
"(and/or hidden) Web Objects.\n" \
"It basically works by launching a dictionary based " \
"attack against \n a web server and analyzing the response."
DESCRIPTION = (
"DIRB is a Web Content Scanner. It looks for existing "
"(and/or hidden) Web Objects.\n"
"It basically works by launching a dictionary based "
"attack against \n a web server and analyzing the response."
)
INSTALL_COMMANDS = [
"sudo git clone https://gitlab.com/kalilinux/packages/dirb.git",
"cd dirb;sudo bash configure;make"
@@ -110,3 +127,60 @@ class WebAttackTools(HackingToolsCollection):
SubDomainTakeOver(),
Dirb()
]
def pretty_print(self):
table = Table(title="Web Attack Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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()
+113 -33
View File
@@ -1,22 +1,34 @@
# coding=utf-8
import os
import subprocess
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)
class WIFIPumpkin(HackingTool):
TITLE = "WiFi-Pumpkin"
DESCRIPTION = "The WiFi-Pumpkin is a rogue AP framework to easily create " \
"these fake networks\n" \
"all while forwarding legitimate traffic to and from the " \
"unsuspecting target."
DESCRIPTION = (
"The WiFi-Pumpkin is a rogue AP framework to easily create "
"these fake networks\n"
"all while forwarding legitimate traffic to and from the "
"unsuspecting target."
)
INSTALL_COMMANDS = [
"sudo apt install libssl-dev libffi-dev build-essential",
"sudo git clone https://github.com/P0cL4bs/wifipumpkin3.git",
"chmod -R 755 wifipumpkin3",
"sudo apt install python3-pyqt5",
"cd wifipumpkin3;sudo python3 setup.py install"
"cd wifipumpkin3;sudo python3 setup.py install",
]
RUN_COMMANDS = ["sudo wifipumpkin3"]
PROJECT_URL = "https://github.com/P0cL4bs/wifipumpkin3"
@@ -24,14 +36,16 @@ class WIFIPumpkin(HackingTool):
class pixiewps(HackingTool):
TITLE = "pixiewps"
DESCRIPTION = "Pixiewps is a tool written in C used to bruteforce offline " \
"the WPS pin\n " \
"exploiting the low or non-existing entropy of some Access " \
"Points, the so-called pixie dust attack"
DESCRIPTION = (
"Pixiewps is a tool written in C used to bruteforce offline "
"the WPS pin\n "
"exploiting the low or non-existing entropy of some Access "
"Points, the so-called pixie dust attack"
)
INSTALL_COMMANDS = [
"sudo git clone https://github.com/wiire/pixiewps.git && apt-get -y install build-essential",
"cd pixiewps*/ && make",
"cd pixiewps*/ && sudo make install && wget https://pastebin.com/y9Dk1Wjh"
"cd pixiewps*/ && sudo make install && wget https://pastebin.com/y9Dk1Wjh",
]
PROJECT_URL = "https://github.com/wiire/pixiewps"
@@ -39,19 +53,22 @@ 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"'
'| boxes -d boy')
"'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 ")
class BluePot(HackingTool):
TITLE = "Bluetooth Honeypot GUI Framework"
DESCRIPTION = "You need to have at least 1 bluetooth receiver " \
"(if you have many it will work with those, too).\n" \
"You must install/libbluetooth-dev on " \
"Ubuntu/bluez-libs-devel on Fedora/bluez-devel on openSUSE"
DESCRIPTION = (
"You need to have at least 1 bluetooth receiver "
"(if you have many it will work with those, too).\n"
"You must install/libbluetooth-dev on "
"Ubuntu/bluez-libs-devel on Fedora/bluez-devel on openSUSE"
)
INSTALL_COMMANDS = [
"sudo wget https://raw.githubusercontent.com/andrewmichaelsmith/bluepot/master/bin/bluepot-0.2.tar.gz"
"sudo tar xfz bluepot-0.2.tar.gz;sudo rm bluepot-0.2.tar.gz"
@@ -83,7 +100,7 @@ class Wifiphisher(HackingTool):
"""
INSTALL_COMMANDS = [
"git clone https://github.com/wifiphisher/wifiphisher.git",
"cd wifiphisher;sudo python3 setup.py install"
"cd wifiphisher;sudo python3 setup.py install",
]
RUN_COMMANDS = ["cd wifiphisher;sudo wifiphisher"]
PROJECT_URL = "https://github.com/wifiphisher/wifiphisher"
@@ -94,7 +111,7 @@ class Wifite(HackingTool):
DESCRIPTION = "Wifite is an automated wireless attack tool"
INSTALL_COMMANDS = [
"sudo git clone https://github.com/derv82/wifite2.git",
"cd wifite2 && sudo python3 setup.py install"
"cd wifite2 && sudo python3 setup.py install",
]
RUN_COMMANDS = ["cd wifite2; sudo wifite"]
PROJECT_URL = "https://github.com/derv82/wifite2"
@@ -102,8 +119,10 @@ class Wifite(HackingTool):
class EvilTwin(HackingTool):
TITLE = "EvilTwin"
DESCRIPTION = "Fakeap is a script to perform Evil Twin Attack, by getting" \
" credentials using a Fake page and Fake Access Point"
DESCRIPTION = (
"Fakeap is a script to perform Evil Twin Attack, by getting"
" credentials using a Fake page and Fake Access Point"
)
INSTALL_COMMANDS = ["sudo git clone https://github.com/Z4nzu/fakeap.git"]
RUN_COMMANDS = ["cd fakeap && sudo bash fakeap.sh"]
PROJECT_URL = "https://github.com/Z4nzu/fakeap"
@@ -111,12 +130,14 @@ class EvilTwin(HackingTool):
class Fastssh(HackingTool):
TITLE = "Fastssh"
DESCRIPTION = "Fastssh is an Shell Script to perform multi-threaded scan" \
" \n and brute force attack against SSH protocol using the " \
"most commonly credentials."
DESCRIPTION = (
"Fastssh is an Shell Script to perform multi-threaded scan"
" \n and brute force attack against SSH protocol using the "
"most commonly credentials."
)
INSTALL_COMMANDS = [
"sudo git clone https://github.com/Z4nzu/fastssh.git && cd fastssh && sudo chmod +x fastssh.sh",
"sudo apt-get install -y sshpass netcat"
"sudo apt-get install -y sshpass netcat",
]
RUN_COMMANDS = ["cd fastssh && sudo bash fastssh.sh --scan"]
PROJECT_URL = "https://github.com/Z4nzu/fastssh"
@@ -124,12 +145,14 @@ class Fastssh(HackingTool):
class Howmanypeople(HackingTool):
TITLE = "Howmanypeople"
DESCRIPTION = "Count the number of people around you by monitoring wifi " \
"signals.\n" \
"[@] WIFI ADAPTER REQUIRED* \n[*]" \
"It may be illegal to monitor networks for MAC addresses, \n" \
"especially on networks that you do not own. " \
"Please check your country's laws"
DESCRIPTION = (
"Count the number of people around you by monitoring wifi "
"signals.\n"
"[@] WIFI ADAPTER REQUIRED* \n[*]"
"It may be illegal to monitor networks for MAC addresses, \n"
"especially on networks that you do not own. "
"Please check your country's laws"
)
INSTALL_COMMANDS = [
"sudo apt-get install tshark"
";sudo python3 -m pip install howmanypeoplearearound"
@@ -149,5 +172,62 @@ class WirelessAttackTools(HackingToolsCollection):
Wifite(),
EvilTwin(),
Fastssh(),
Howmanypeople()
Howmanypeople(),
]
def pretty_print(self):
table = Table(title="Wireless Attack Tools", show_lines=True, expand=True)
table.add_column("Title", style="purple", no_wrap=True)
table.add_column("Description", style="purple")
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)
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()
+112
View File
@@ -1,7 +1,20 @@
# coding=utf-8
import os
import subprocess
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
from rich import box
from core import HackingTool
from core import HackingToolsCollection
_theme = Theme({"purple": "#7B61FF"})
console = Console(theme=_theme)
class Cupp(HackingTool):
TITLE = "Cupp"
@@ -11,6 +24,16 @@ class Cupp(HackingTool):
RUN_COMMANDS = ["cd cupp && python3 cupp.py -i"]
PROJECT_URL = "https://github.com/Mebus/cupp"
def show_info(self):
panel = Panel(
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="purple",
box=box.ROUNDED,
)
console.print(panel)
class WlCreator(HackingTool):
TITLE = "WordlistCreator"
@@ -22,6 +45,16 @@ class WlCreator(HackingTool):
"cd wlcreator && sudo gcc -o wlcreator wlcreator.c && ./wlcreator 5"]
PROJECT_URL = "https://github.com/Z4nzu/wlcreator"
def show_info(self):
panel = Panel(
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="purple",
box=box.ROUNDED,
)
console.print(panel)
class GoblinWordGenerator(HackingTool):
TITLE = "Goblin WordGenerator"
@@ -31,6 +64,16 @@ class GoblinWordGenerator(HackingTool):
RUN_COMMANDS = ["cd GoblinWordGenerator && python3 goblin.py"]
PROJECT_URL = "https://github.com/UndeadSec/GoblinWordGenerator.git"
def show_info(self):
panel = Panel(
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="purple",
box=box.ROUNDED,
)
console.print(panel)
class showme(HackingTool):
TITLE = "Password list (1.4 Billion Clear Text Password)"
@@ -46,6 +89,16 @@ class showme(HackingTool):
RUN_COMMANDS = ["cd SMWYG-Show-Me-What-You-Got && python SMWYG.py"]
PROJECT_URL = "https://github.com/Viralmaniar/SMWYG-Show-Me-What-You-Got"
def show_info(self):
panel = Panel(
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="purple",
box=box.ROUNDED,
)
console.print(panel)
class WordlistGeneratorTools(HackingToolsCollection):
TITLE = "Wordlist Generator"
@@ -55,3 +108,62 @@ class WordlistGeneratorTools(HackingToolsCollection):
GoblinWordGenerator(),
showme()
]
def show_info(self):
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 purple")
table.add_column("#", justify="center", style="cyan", width=4)
table.add_column("Tool", style="bold")
table.add_column("Description", style="dim", overflow="fold")
for idx, t in enumerate(self.TOOLS, start=1):
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()
+72 -25
View File
@@ -1,13 +1,19 @@
# coding=utf-8
import os
import subprocess
from rich.console import Console
from rich.panel import Panel
from rich.prompt import Prompt
from rich.table import Table
from core import HackingTool
from core import HackingToolsCollection
console = Console()
class Dalfox(HackingTool):
TITLE = "DalFox(Finder of XSS)"
TITLE = "DalFox (Finder of XSS)"
DESCRIPTION = "XSS Scanning and Parameter Analysis tool."
INSTALL_COMMANDS = [
"sudo apt-get install golang",
@@ -23,7 +29,7 @@ class Dalfox(HackingTool):
class XSSPayloadGenerator(HackingTool):
TITLE = "XSS Payload Generator"
DESCRIPTION = "XSS PAYLOAD GENERATOR -XSS SCANNER-XSS DORK FINDER"
DESCRIPTION = "XSS PAYLOAD GENERATOR - XSS SCANNER - XSS DORK FINDER"
INSTALL_COMMANDS = [
"git clone https://github.com/capture0x/XSS-LOADER.git",
"cd XSS-LOADER;sudo pip3 install -r requirements.txt"
@@ -40,25 +46,28 @@ class XSSFinder(HackingTool):
PROJECT_URL = "https://github.com/Damian89/extended-xss-search"
def after_install(self):
print("""\033[96m
Follow This Steps After Installation:-
\033[31m [*] Go To extended-xss-search directory,
and Rename the example.app-settings.conf to app-settings.conf
""")
console.print(Panel.fit(
"[bold cyan]Follow These Steps After Installation:[/bold cyan]\n"
"[red]*[/red] Go to [yellow]extended-xss-search[/yellow] directory\n"
"[green]*[/green] Rename [bold]example.app-settings.conf[/bold] → [bold]app-settings.conf[/bold]",
title="[ Install Notes ]",
border_style="magenta"
))
input("Press ENTER to continue")
def run(self):
print("""\033[96m
You have To Add Links to scan
\033[31m[!] Go to extended-xss-search
[*] config/urls-to-test.txt
[!] python3 extended-xss-search.py
""")
console.print(Panel.fit(
"[bold cyan]You need to add links to scan[/bold cyan]\n"
"[red]*[/red] Go to [yellow]extended-xss-search/config/urls-to-test.txt[/yellow]\n"
"[green]*[/green] Run: [bold]python3 extended-xss-search.py[/bold]",
title="[ Run Instructions ]",
border_style="blue"
))
class XSSFreak(HackingTool):
TITLE = "XSS-Freak"
DESCRIPTION = "XSS-Freak is an XSS scanner fully written in python3 from scratch"
DESCRIPTION = "An XSS scanner fully written in Python 3 from scratch."
INSTALL_COMMANDS = [
"git clone https://github.com/PR0PH3CY33/XSS-Freak.git",
"cd XSS-Freak;sudo pip3 install -r requirements.txt"
@@ -69,7 +78,7 @@ class XSSFreak(HackingTool):
class XSpear(HackingTool):
TITLE = "XSpear"
DESCRIPTION = "XSpear is XSS Scanner on ruby gems"
DESCRIPTION = "XSpear is an XSS Scanner built on Ruby Gems."
INSTALL_COMMANDS = ["gem install XSpear"]
RUN_COMMANDS = ["XSpear -h"]
PROJECT_URL = "https://github.com/hahwul/XSpear"
@@ -84,27 +93,32 @@ class XSSCon(HackingTool):
PROJECT_URL = "https://github.com/menkrep1337/XSSCon"
def run(self):
website = input("Enter Website >> ")
console.print(Panel.fit(
"Enter target website to scan with XSSCon:",
title="[bold yellow]XSSCon[/bold yellow]",
border_style="bright_yellow"
))
website = Prompt.ask("[bold cyan]Enter Website[/bold cyan]")
os.system("cd XSSCon;")
subprocess.run(["python3", "xsscon.py", "-u", website])
class XanXSS(HackingTool):
TITLE = "XanXSS"
DESCRIPTION = "XanXSS is a reflected XSS searching tool\n " \
"that creates payloads based from templates"
DESCRIPTION = "Reflected XSS searching tool that creates payloads from templates."
INSTALL_COMMANDS = ["git clone https://github.com/Ekultek/XanXSS.git"]
PROJECT_URL = "https://github.com/Ekultek/XanXSS"
def run(self):
os.system("cd XanXSS ;python xanxss.py -h")
print("\033[96m You Have to run it manually By Using\n"
" [!]python xanxss.py [Options]")
os.system("cd XanXSS; python xanxss.py -h")
console.print(
"[cyan]You have to run it manually using:[/cyan]\n[bold yellow]python xanxss.py [options][/bold yellow]"
)
class XSSStrike(HackingTool):
TITLE = "Advanced XSS Detection Suite"
DESCRIPTION = "XSStrike is a python script designed to detect and exploit XSS vulnerabilities."
DESCRIPTION = "XSStrike is a Python-based tool designed to detect and exploit XSS vulnerabilities."
INSTALL_COMMANDS = [
"sudo rm -rf XSStrike",
"git clone https://github.com/UltimateHackers/XSStrike.git "
@@ -113,13 +127,12 @@ class XSSStrike(HackingTool):
PROJECT_URL = "https://github.com/UltimateHackers/XSStrike"
def __init__(self):
super(XSSStrike, self).__init__(runnable = False)
super(XSSStrike, self).__init__(runnable=False)
class RVuln(HackingTool):
TITLE = "RVuln"
DESCRIPTION = "RVuln is multi-threaded and Automated Web Vulnerability " \
"Scanner written in Rust"
DESCRIPTION = "Multi-threaded and Automated Web Vulnerability Scanner written in Rust."
INSTALL_COMMANDS = [
"sudo git clone https://github.com/iinc0gnit0/RVuln.git;"
"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh;"
@@ -144,3 +157,37 @@ class XSSAttackTools(HackingToolsCollection):
XSSStrike(),
RVuln()
]
def show_info(self):
console.print(Panel.fit(
"[bold magenta]XSS Attack Tools Collection[/bold magenta]\n"
"A curated set of tools for XSS vulnerability analysis and exploitation.",
border_style="bright_magenta"
))
def show_options(self, parent=None):
console.print("\n")
self.show_info()
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):
table.add_row(str(i + 1), tool.TITLE, tool.DESCRIPTION or "")
table.add_row("[red]99[/red]", "[bold red]Exit[/bold red]", "Return to Main Menu")
console.print(table)
try:
choice = Prompt.ask("[bold cyan]Select a tool to run[/bold cyan]")
choice = int(choice)
if 1 <= choice <= len(self.TOOLS):
self.TOOLS[choice - 1].show_options(parent=self)
elif choice == 99:
return 99
except Exception:
console.print("[bold red]Invalid choice. Try again.[/bold red]")
return self.show_options(parent=parent)