From ddd0101b09621bfd6e3381735dfa9a4abcd96953 Mon Sep 17 00:00:00 2001 From: Aleff Date: Tue, 29 Aug 2023 09:22:02 +0200 Subject: [PATCH 1/7] New Forensic tool [+] Volatility3 > Volatility is the world's most widely used framework for extracting digital artifacts from volatile memory (RAM) samples. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7f803864..5b560177 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ - [Bulk extractor](https://github.com/simsong/bulk_extractor) - [Disk Clone and ISO Image Acquire](https://guymager.sourceforge.io/) - [Toolsley](https://www.toolsley.com/) +- [Volatility3](https://github.com/volatilityfoundation/volatility3/) ### Payload creation tools - [The FatRat](https://github.com/Screetsec/TheFatRat) - [Brutal](https://github.com/Screetsec/Brutal) From 1c2cbbbe2afd7d3329b172a8fb8042ac75d26aa1 Mon Sep 17 00:00:00 2001 From: JinnaBalu Date: Fri, 1 Sep 2023 12:32:42 +0530 Subject: [PATCH 2/7] Optimized Dockerfile for layer cache and moved all the installations for cache not to rerun the same layer for every code change for Docker container. --- Dockerfile | 23 +++++++---------------- README.md | 35 ++++++++++++++++++++++++++++------- docker-compose.yml | 7 ++++--- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5656a50a..f7b0f2b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,12 @@ -FROM kalilinux/kali-rolling - +FROM kalilinux/kali-rolling:latest RUN apt-get update && \ -apt-get install -y git python3-pip figlet sudo; - -#Install packages dependencies -RUN true && \ -apt-get install -y boxes php curl xdotool wget; + apt-get install -y git python3-pip figlet sudo && \ + apt-get install -y boxes php curl xdotool wget WORKDIR /root/hackingtool +COPY requirements.txt ./ +RUN pip3 install --no-cache-dir boxes flask lolcat requests -r requirements.txt COPY . . - -RUN true && \ -pip3 install boxes flask lolcat requests -r requirements.txt; - -RUN true && \ - echo "/root/hackingtool/" > /home/hackingtoolpath.txt; - +RUN true && echo "/root/hackingtool/" > /home/hackingtoolpath.txt; EXPOSE 1-65535 - -ENTRYPOINT ["python3", "/root/hackingtool/hackingtool.py"] +ENTRYPOINT ["python3", "/root/hackingtool/hackingtool.py"] \ No newline at end of file diff --git a/README.md b/README.md index 7f803864..ca1973d3 100644 --- a/README.md +++ b/README.md @@ -240,13 +240,34 @@ ## Use image with Docker -### Run in one click -`docker run -it vgpastor/hackingtool` - -### Build locally -`docker-compose build` - -`docker-compose run hackingtool` +### Create Docker Image +- Create the docker image + +```bash +docker buitl -t vgpastor/hackingtool . +``` + +### Run as container + +```bash +docker-compose up -d +``` + +### Interact with terminal + +- Get into the container +```bash +docker exec -it hackingtool bash +``` +**OUTPUT:** +```bash +Select Best Option : + + [1] Kali Linux / Parrot-Os (apt) + [2] Arch Linux (pacman) + [0] Exit +``` +Enter the options and continue. - If need open other ports you can edit the docker-compose.yml file - Volumes are mounted in the container to persist data and can share files between the host and the container diff --git a/docker-compose.yml b/docker-compose.yml index 93ca8da0..301548bb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,10 @@ version: "3.9" services: hackingtool: - build: . - stdin_open: true # docker run -i - tty: true # docker run -t + image: vgpastor/hackingtool + container_name: hackingtool + stdin_open: true + tty: true volumes: - .:/root/hackingtool ports: From cd25c260215381efeb6133ad5c9c7dc78828f8d1 Mon Sep 17 00:00:00 2001 From: Harsh Master Date: Thu, 14 Sep 2023 00:34:49 +0530 Subject: [PATCH 3/7] Issue #415: Added code to access parent directory for fixing import error for core.py Fixed Import Error: Issue #415 --- tools/forensic_tools.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/forensic_tools.py b/tools/forensic_tools.py index 84d6b7db..4b2cc693 100644 --- a/tools/forensic_tools.py +++ b/tools/forensic_tools.py @@ -1,6 +1,13 @@ # coding=utf-8 import os +import sys + +# Fetching parent directory for importing core.py +current_dir = os.path.dirname(__file__) +parent_dir = os.path.dirname(current_dir) +sys.path.append(parent_dir) + from core import HackingTool from core import HackingToolsCollection From 1509c0ca709612ce162b87501df4977b5a5a5c1a Mon Sep 17 00:00:00 2001 From: GMDSantana Date: Tue, 19 Nov 2024 14:04:31 +0800 Subject: [PATCH 4/7] Update Takeover and add Crivo --- README.md | 3 ++- tools/others/mix_tools.py | 22 +++++++++++++++++++++- tools/webattack.py | 4 ++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c82a5a15..bf69339d 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ - [SubDomain Finder](https://github.com/aboul3la/Sublist3r) - [CheckURL](https://github.com/UndeadSec/checkURL) - [Blazy(Also Find ClickJacking)](https://github.com/UltimateHackers/Blazy) -- [Sub-Domain TakeOver](https://github.com/m4ll0k/takeover) +- [Sub-Domain TakeOver](https://github.com/edoardottt/takeover) - [Dirb](https://gitlab.com/kalilinux/packages/dirb) ### Post exploitation tools - [Vegile - Ghost In The Shell](https://github.com/Screetsec/Vegile) @@ -201,6 +201,7 @@ - [Gospider](https://github.com/jaeles-project/gospider) #### Mix tools - Terminal Multiplexer +- [Crivo](https://github.com/GMDSantana/crivo) ![](https://github.com/Z4nzu/hackingtool/blob/master/images/A00.png) diff --git a/tools/others/mix_tools.py b/tools/others/mix_tools.py index 574eb875..16ba5b0f 100644 --- a/tools/others/mix_tools.py +++ b/tools/others/mix_tools.py @@ -14,6 +14,26 @@ def __init__(self): super(TerminalMultiplexer, self).__init__(runnable = False) +class Crivo(HackingTool): + TITLE = "Crivo" + DESCRIPTION = "A tool for extracting and filtering URLs, IPs, domains, " \ + "\n and subdomains from web pages or text, " \ + "with built-in web scraping capabilities.\n" \ + "See: python3 crivo_cli.py -h" + INSTALL_COMMANDS = [ + "git clone https://github.com/GMDSantana/crivo", + "cd crivo;pip install -r requirements.txt" + ] + PROJECT_URL = "https://github.com/GMDSantana/crivo" + + def __init__(self): + super(Crivo, self).__init__(runnable = False) + + class MixTools(HackingToolsCollection): TITLE = "Mix tools" - TOOLS = [TerminalMultiplexer()] + TOOLS = [ + TerminalMultiplexer(), + Crivo() + ] + diff --git a/tools/webattack.py b/tools/webattack.py index 45885f2d..9f5d0353 100644 --- a/tools/webattack.py +++ b/tools/webattack.py @@ -73,10 +73,10 @@ class SubDomainTakeOver(HackingTool): "that has been removed or deleted.\n" \ "Usage:python3 takeover.py -d www.domain.com -v" INSTALL_COMMANDS = [ - "git clone https://github.com/m4ll0k/takeover.git", + "git clone https://github.com/edoardottt/takeover.git", "cd takeover;sudo python3 setup.py install" ] - PROJECT_URL = "https://github.com/m4ll0k/takeover" + PROJECT_URL = "https://github.com/edoardottt/takeover.git" def __init__(self): super(SubDomainTakeOver, self).__init__(runnable = False) From 87273dd10309327938e8155c9815bbd00eab3209 Mon Sep 17 00:00:00 2001 From: GMDSantana <6341823+GMDSantana@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:00:50 +0800 Subject: [PATCH 5/7] Remove .git from project url --- tools/webattack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/webattack.py b/tools/webattack.py index 9f5d0353..dfb4f276 100644 --- a/tools/webattack.py +++ b/tools/webattack.py @@ -76,7 +76,7 @@ class SubDomainTakeOver(HackingTool): "git clone https://github.com/edoardottt/takeover.git", "cd takeover;sudo python3 setup.py install" ] - PROJECT_URL = "https://github.com/edoardottt/takeover.git" + PROJECT_URL = "https://github.com/edoardottt/takeover" def __init__(self): super(SubDomainTakeOver, self).__init__(runnable = False) From 2739ec2a9080f41b2f423f232743c83e0dd496ee Mon Sep 17 00:00:00 2001 From: GMDSantana <6341823+GMDSantana@users.noreply.github.com> Date: Thu, 21 Nov 2024 10:01:33 +0800 Subject: [PATCH 6/7] Update mix_tools.py --- tools/others/mix_tools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/others/mix_tools.py b/tools/others/mix_tools.py index 16ba5b0f..9608302a 100644 --- a/tools/others/mix_tools.py +++ b/tools/others/mix_tools.py @@ -21,7 +21,7 @@ class Crivo(HackingTool): "with built-in web scraping capabilities.\n" \ "See: python3 crivo_cli.py -h" INSTALL_COMMANDS = [ - "git clone https://github.com/GMDSantana/crivo", + "git clone https://github.com/GMDSantana/crivo.git", "cd crivo;pip install -r requirements.txt" ] PROJECT_URL = "https://github.com/GMDSantana/crivo" From 7df27d8383095257e05c9dfd5af3ea696039d793 Mon Sep 17 00:00:00 2001 From: Modark <125276777+MoDarK-MK@users.noreply.github.com> Date: Tue, 14 Oct 2025 02:02:18 -0400 Subject: [PATCH 7/7] Feat/rich UI menu lovely (#567) --- .github/workflows/test_install.yml | 2 +- README.md | 12 +- README_template.md | 12 +- core.py | 134 +++++++++-------- generate_readme.py | 9 +- hackingtool.py | 203 +++++++++++++++++++------- images/A.png | Bin 0 -> 195851 bytes images/A0.png | Bin 72082 -> 0 bytes images/A00.png | Bin 134298 -> 0 bytes images/A1.png | Bin 73779 -> 0 bytes images/A2.png | Bin 93534 -> 0 bytes images/A4.png | Bin 83721 -> 0 bytes images/AA.png | Bin 0 -> 102677 bytes images/AAA.png | Bin 0 -> 275310 bytes images/AAAA.png | Bin 0 -> 278931 bytes images/AAAAA.png | Bin 0 -> 167323 bytes install.py | 207 +++++++++++++++++++++++++++ install.sh | 160 --------------------- requirements.txt | 3 +- tools/anonsurf.py | 99 +++++++++++-- tools/ddos.py | 107 ++++++++++++-- tools/exploit_frameworks.py | 99 ++++++++++++- tools/forensic_tools.py | 109 ++++++++++++-- tools/information_gathering_tools.py | 118 ++++++++++++--- tools/other_tools.py | 75 ++++++++++ tools/others/android_attack.py | 69 +++++++++ tools/others/email_verifier.py | 69 ++++++++- tools/others/hash_crack.py | 69 +++++++++ tools/others/homograph_attacks.py | 69 +++++++++ tools/others/mix_tools.py | 68 +++++++++ tools/others/payload_injection.py | 72 +++++++++- tools/others/socialmedia.py | 70 ++++++++- tools/others/socialmedia_finder.py | 69 +++++++++ tools/others/web_crawling.py | 69 +++++++++ tools/others/wifi_jamming.py | 69 +++++++++ tools/payload_creator.py | 127 +++++++++++----- tools/phising_attack.py | 128 ++++++++++++++--- tools/post_exploitation.py | 78 ++++++++++ tools/remote_administration.py | 78 ++++++++++ tools/reverse_engineering.py | 79 +++++++++- tools/sql_tools.py | 155 ++++++++++++-------- tools/steganography.py | 123 ++++++++++++---- tools/tool_manager.py | 72 +++++++++- tools/webattack.py | 124 ++++++++++++---- tools/wireless_attack_tools.py | 146 ++++++++++++++----- tools/wordlist_generator.py | 112 +++++++++++++++ tools/xss_attack.py | 97 +++++++++---- 47 files changed, 2787 insertions(+), 574 deletions(-) create mode 100644 images/A.png delete mode 100644 images/A0.png delete mode 100644 images/A00.png delete mode 100644 images/A1.png delete mode 100644 images/A2.png delete mode 100644 images/A4.png create mode 100644 images/AA.png create mode 100644 images/AAA.png create mode 100644 images/AAAA.png create mode 100644 images/AAAAA.png create mode 100755 install.py delete mode 100755 install.sh diff --git a/.github/workflows/test_install.yml b/.github/workflows/test_install.yml index edf2f3d2..353b9b65 100644 --- a/.github/workflows/test_install.yml +++ b/.github/workflows/test_install.yml @@ -26,7 +26,7 @@ jobs: cache: 'pip' - run: pip install --upgrade pip - run: pwd && ls -hal - - run: sudo ./install.sh 1 + - run: sudo ./install.py 1 - run: pwd && ls -hal # Typing "1" will allow us to manually enter the filepath to hackingtool. # Provide the filepath ${HOME}/work/hackingtool/hackingtool diff --git a/README.md b/README.md index bf69339d..c951a542 100644 --- a/README.md +++ b/README.md @@ -204,11 +204,11 @@ - [Crivo](https://github.com/GMDSantana/crivo) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A00.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A0.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A1.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A2.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A4.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/A.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AA.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AAA.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AAAA.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AAAAA.png) ## Installation For Linux linux

@@ -233,7 +233,7 @@ ## Step : 4 Run hackingtool - sudo bash install.sh + sudo python install.py ## Step : 5 For installing tools in directory diff --git a/README_template.md b/README_template.md index ea2f0e62..58f2fff0 100644 --- a/README_template.md +++ b/README_template.md @@ -23,11 +23,11 @@ # Hackingtool Menu 🧰 -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A00.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A0.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A1.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A2.png) -![](https://github.com/Z4nzu/hackingtool/blob/master/images/A4.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/A.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AA.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AAA.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AAAA.png) +![](https://github.com/Z4nzu/hackingtool/blob/master/images/AAAAA.png) ## Installation guide for Linux linux

@@ -41,7 +41,7 @@ sudo pip3 install -r requirements.txt - bash install.sh + python install.py sudo hackingtool diff --git a/core.py b/core.py index 49156602..9fb68eec 100644 --- a/core.py +++ b/core.py @@ -1,11 +1,21 @@ +from rich.console import Console +from rich.panel import Panel +from rich.table import Table +from rich import box +from rich.traceback import install +from rich.theme import Theme + import os import sys import webbrowser from platform import system from traceback import print_exc -from typing import Callable -from typing import List -from typing import Tuple +from typing import Callable, List, Tuple + +# Enable rich tracebacks +install() +_theme = Theme({"purple": "#7B61FF"}) +console = Console(theme=_theme) def clear_screen(): @@ -24,57 +34,57 @@ def validate_input(ip, val_range): class HackingTool(object): - # About the HackingTool - TITLE: str = "" # used to show info in the menu + TITLE: str = "" DESCRIPTION: str = "" - INSTALL_COMMANDS: List[str] = [] INSTALLATION_DIR: str = "" - UNINSTALL_COMMANDS: List[str] = [] - RUN_COMMANDS: List[str] = [] - OPTIONS: List[Tuple[str, Callable]] = [] - PROJECT_URL: str = "" - def __init__(self, options = None, installable: bool = True, - runnable: bool = True): + def __init__(self, options=None, installable=True, runnable=True): options = options or [] if isinstance(options, list): self.OPTIONS = [] if installable: - self.OPTIONS.append(('Install', self.install)) + self.OPTIONS.append(("Install", self.install)) if runnable: - self.OPTIONS.append(('Run', self.run)) + self.OPTIONS.append(("Run", self.run)) self.OPTIONS.extend(options) else: - raise Exception( - "options must be a list of (option_name, option_fn) tuples") + raise Exception("options must be a list of (option_name, option_fn) tuples") def show_info(self): - desc = self.DESCRIPTION + desc = f"[cyan]{self.DESCRIPTION}[/cyan]" if self.PROJECT_URL: - desc += '\n\t[*] ' - desc += self.PROJECT_URL - os.system(f'echo "{desc}"|boxes -d boy | lolcat') + desc += f"\n[green]🔗 {self.PROJECT_URL}[/green]" + console.print(Panel(desc, title=f"[bold purple]{self.TITLE}[/bold purple]", border_style="purple", box=box.DOUBLE)) - def show_options(self, parent = None): + def show_options(self, parent=None): clear_screen() self.show_info() + + table = Table(title="Options", box=box.SIMPLE_HEAVY) + table.add_column("No.", style="bold cyan", justify="center") + table.add_column("Action", style="bold yellow") + for index, option in enumerate(self.OPTIONS): - print(f"[{index + 1}] {option[0]}") + table.add_row(str(index + 1), option[0]) + if self.PROJECT_URL: - print(f"[{98}] Open project page") - print(f"[{99}] Back to {parent.TITLE if parent is not None else 'Exit'}") - option_index = input("Select an option : ").strip() + table.add_row("98", "Open Project Page") + table.add_row("99", f"Back to {parent.TITLE if parent else 'Exit'}") + + console.print(table) + + option_index = input("\n[?] Select an option: ").strip() try: option_index = int(option_index) if option_index - 1 in range(len(self.OPTIONS)): ret_code = self.OPTIONS[option_index - 1][1]() if ret_code != 99: - input("\n\nPress ENTER to continue:").strip() + input("\nPress [Enter] to continue...") elif option_index == 98: self.show_project_page() elif option_index == 99: @@ -82,95 +92,101 @@ def show_options(self, parent = None): sys.exit() return 99 except (TypeError, ValueError): - print("Please enter a valid option") - input("\n\nPress ENTER to continue:").strip() + console.print("[red]⚠ Please enter a valid option.[/red]") + input("\nPress [Enter] to continue...") except Exception: - print_exc() - input("\n\nPress ENTER to continue:").strip() - return self.show_options(parent = parent) + console.print_exception(show_locals=True) + input("\nPress [Enter] to continue...") + return self.show_options(parent=parent) - def before_install(self): - pass + def before_install(self): pass def install(self): self.before_install() if isinstance(self.INSTALL_COMMANDS, (list, tuple)): for INSTALL_COMMAND in self.INSTALL_COMMANDS: + console.print(f"[yellow]→ {INSTALL_COMMAND}[/yellow]") os.system(INSTALL_COMMAND) self.after_install() def after_install(self): - print("Successfully installed!") + console.print("[green]✔ Successfully installed![/green]") def before_uninstall(self) -> bool: - """ Ask for confirmation from the user and return """ return True def uninstall(self): if self.before_uninstall(): if isinstance(self.UNINSTALL_COMMANDS, (list, tuple)): for UNINSTALL_COMMAND in self.UNINSTALL_COMMANDS: + console.print(f"[red]→ {UNINSTALL_COMMAND}[/red]") os.system(UNINSTALL_COMMAND) self.after_uninstall() - def after_uninstall(self): - pass + def after_uninstall(self): pass - def before_run(self): - pass + def before_run(self): pass def run(self): self.before_run() if isinstance(self.RUN_COMMANDS, (list, tuple)): for RUN_COMMAND in self.RUN_COMMANDS: + console.print(f"[cyan]⚙ Running:[/cyan] [bold]{RUN_COMMAND}[/bold]") os.system(RUN_COMMAND) self.after_run() - def after_run(self): - pass + def after_run(self): pass - def is_installed(self, dir_to_check = None): - print("Unimplemented: DO NOT USE") + def is_installed(self, dir_to_check=None): + console.print("[yellow]⚠ Unimplemented: DO NOT USE[/yellow]") return "?" def show_project_page(self): + console.print(f"[blue]🌐 Opening project page: {self.PROJECT_URL}[/blue]") webbrowser.open_new_tab(self.PROJECT_URL) class HackingToolsCollection(object): - TITLE: str = "" # used to show info in the menu + TITLE: str = "" DESCRIPTION: str = "" - TOOLS = [] # type: List[Any[HackingTool, HackingToolsCollection]] + TOOLS: List = [] def __init__(self): pass def show_info(self): - os.system("figlet -f standard -c {} | lolcat".format(self.TITLE)) - # os.system(f'echo "{self.DESCRIPTION}"|boxes -d boy | lolcat') - # print(self.DESCRIPTION) + console.rule(f"[bold purple]{self.TITLE}[/bold purple]", style="purple") + console.print(f"[italic cyan]{self.DESCRIPTION}[/italic cyan]\n") - def show_options(self, parent = None): + def show_options(self, parent=None): clear_screen() self.show_info() + + table = Table(title="Available Tools", box=box.MINIMAL_DOUBLE_HEAD) + table.add_column("No.", justify="center", style="bold cyan") + table.add_column("Tool Name", style="bold yellow") + for index, tool in enumerate(self.TOOLS): - print(f"[{index} {tool.TITLE}") - print(f"[{99}] Back to {parent.TITLE if parent is not None else 'Exit'}") - tool_index = input("Choose a tool to proceed: ").strip() + table.add_row(str(index), tool.TITLE) + + table.add_row("99", f"Back to {parent.TITLE if parent else 'Exit'}") + console.print(table) + + tool_index = input("\n[?] Choose a tool: ").strip() try: tool_index = int(tool_index) if tool_index in range(len(self.TOOLS)): - ret_code = self.TOOLS[tool_index].show_options(parent = self) + ret_code = self.TOOLS[tool_index].show_options(parent=self) if ret_code != 99: - input("\n\nPress ENTER to continue:").strip() + input("\nPress [Enter] to continue...") elif tool_index == 99: if parent is None: sys.exit() return 99 except (TypeError, ValueError): - print("Please enter a valid option") - input("\n\nPress ENTER to continue:").strip() + console.print("[red]⚠ Please enter a valid option.[/red]") + input("\nPress [Enter] to continue...") except Exception: - print_exc() - input("\n\nPress ENTER to continue:").strip() - return self.show_options(parent = parent) + console.print_exception(show_locals=True) + input("\nPress [Enter] to continue...") + return self.show_options(parent=parent) diff --git a/generate_readme.py b/generate_readme.py index 069b015d..fa3cba5d 100644 --- a/generate_readme.py +++ b/generate_readme.py @@ -1,9 +1,16 @@ +# coding=utf-8 import re +from rich.console import Console +from rich.theme import Theme + from core import HackingTool from core import HackingToolsCollection from hackingtool import all_tools +_theme = Theme({"purple": "#7B61FF"}) +console = Console(theme=_theme) + def sanitize_anchor(s): return re.sub(r"\W", "-", s.lower()) @@ -48,4 +55,4 @@ def generate_readme(): if __name__ == '__main__': - generate_readme() + generate_readme() \ No newline at end of file diff --git a/hackingtool.py b/hackingtool.py index 1e433e89..9db5a938 100755 --- a/hackingtool.py +++ b/hackingtool.py @@ -1,11 +1,22 @@ #!/usr/bin/env python3 -# Version 1.1.0 +# Version 1.1.0 (rich UI - purple theme) import os import sys import webbrowser from platform import system from time import sleep +from rich.console import Console +from rich.panel import Panel +from rich.table import Table +from rich.prompt import Prompt, IntPrompt, Confirm +from rich.align import Align +from rich.text import Text +from rich import box +from rich.columns import Columns +from rich.rule import Rule +from rich.padding import Padding + from core import HackingToolsCollection from tools.anonsurf import AnonSurfTools from tools.ddos import DDOSTools @@ -26,7 +37,9 @@ from tools.wordlist_generator import WordlistGeneratorTools from tools.xss_attack import XSSAttackTools -logo = """\033[33m +console = Console() + +ASCII_LOGO = r""" ▄█ █▄ ▄████████ ▄████████ ▄█ ▄█▄ ▄█ ███▄▄▄▄ ▄██████▄ ███ ▄██████▄ ▄██████▄ ▄█ ███ ███ ███ ███ ███ ███ ███ ▄███▀ ███ ███▀▀▀██▄ ███ ███ ▀█████████▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▀ ███▐██▀ ███▌ ███ ███ ███ █▀ ▀███▀▀██ ███ ███ ███ ███ ███ @@ -35,11 +48,29 @@ ███ ███ ███ ███ ███ █▄ ███▐██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀███▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███▌ ▄ ███ █▀ ███ █▀ ████████▀ ███ ▀█▀ █▀ ▀█ █▀ ████████▀ ▄████▀ ▀██████▀ ▀██████▀ █████▄▄██ - ▀ ▀ - \033[34m[✔] https://github.com/Z4nzu/hackingtool [✔] - \033[34m[✔] Version 1.1.0 [✔] - \033[91m[X] Please Don't Use For illegal Activity [X] -\033[97m """ + ▀ ▀ +""" + +tool_definitions = [ + ("Anonymously Hiding Tools", "🛡️"), + ("Information gathering tools", "🔍"), + ("Wordlist Generator", "📚"), + ("Wireless attack tools", "📶"), + ("SQL Injection Tools", "🧩"), + ("Phishing attack tools", "🎣"), + ("Web Attack tools", "🌐"), + ("Post exploitation tools", "🔧"), + ("Forensic tools", "🕵️"), + ("Payload creation tools", "📦"), + ("Exploit framework", "🧰"), + ("Reverse engineering tools", "🔁"), + ("DDOS Attack Tools", "⚡"), + ("Remote Administrator Tools (RAT)", "🖥️"), + ("XSS Attack Tools", "💥"), + ("Steganograhy tools", "🖼️"), + ("Other tools", "✨"), + ("Update or Uninstall | Hackingtool", "♻️"), +] all_tools = [ AnonSurfTools(), @@ -68,55 +99,129 @@ class AllTools(HackingToolsCollection): TOOLS = all_tools def show_info(self): - print(logo + '\033[0m \033[97m') + header = Text() + header.append(ASCII_LOGO, style="bold magenta") + header.append("\n\n",) + footer = Text.assemble( + (" https://github.com/Z4nzu/hackingtool ", "bold bright_black"), + (" | ",), + ("Version 1.1.0", "bold green"), + ) + warning = Text(" Please Don't Use For illegal Activity ", style="bold red") + panel = Panel( + Align.center(header + Text("\n") + footer + Text("\n") + warning), + box=box.DOUBLE, + padding=(1, 2), + border_style="magenta" + ) + console.print(panel) -if __name__ == "__main__": - try: - if system() == 'Linux': - fpath = os.path.expanduser("~/hackingtoolpath.txt") - if not os.path.exists(fpath): - os.system('clear') - # run.menu() - print(""" - [@] Set Path (All your tools will be installed in that directory) - [1] Manual - [2] Default - """) - choice = input("Z4nzu =>> ").strip() - - if choice == "1": - inpath = input("Enter Path (with Directory Name) >> ").strip() - with open(fpath, "w") as f: - f.write(inpath) - print("Successfully Set Path to: {}".format(inpath)) - elif choice == "2": - autopath = "/home/hackingtool/" - with open(fpath, "w") as f: - f.write(autopath) - print("Your Default Path Is: {}".format(autopath)) - sleep(3) - else: - print("Try Again..!!") - sys.exit(0) +def build_menu(): + table = Table.grid(expand=True) + table.add_column("idx", width=6, justify="right") + table.add_column("name", justify="left") + for idx, (title, icon) in enumerate(tool_definitions): + if idx == 17: + label = "[bold magenta]99[/bold magenta]" + name = f"[bold magenta]{icon} {title}[/bold magenta]" + else: + label = f"[bold magenta]{idx}[/bold magenta]" + name = f"[white]{icon}[/white] [magenta]{title}[/magenta]" + table.add_row(label, name) + + top_panel = Panel( + Align.center(Text("HackingTool — Main Menu", style="bold white on magenta"), vertical="middle"), + style="magenta", + padding=(0, 1), + box=box.ROUNDED + ) + menu_panel = Panel.fit( + table, + title="[bold magenta]Select a tool[/bold magenta]", + border_style="bright_magenta", + box=box.SQUARE + ) + footer = Align.center(Text("Choose number and press Enter — 99 to exit", style="italic bright_black")) + console.print(top_panel) + console.print(menu_panel) + console.print(Rule(style="bright_black")) + console.print(footer) + console.print("") + + +def choose_path(): + fpath = os.path.expanduser("~/hackingtoolpath.txt") + if not os.path.exists(fpath): + os.system("clear" if system() == "Linux" else "cls") + build_menu() + console.print(Panel("Setup path for tool installations", border_style="magenta")) + choice = Prompt.ask("[magenta]Set Path[/magenta]", choices=["1", "2"], default="2") + if choice == "1": + inpath = Prompt.ask("[magenta]Enter Path (with Directory Name)[/magenta]") + with open(fpath, "w") as f: + f.write(inpath) + console.print(f"[green]Successfully Set Path to:[/green] {inpath}") + else: + autopath = "/home/hackingtool/" + with open(fpath, "w") as f: + f.write(autopath) + console.print(f"[green]Your Default Path Is:[/green] {autopath}") + sleep(1) + return fpath + + +def interact_menu(): + while True: + try: + build_menu() + choice = IntPrompt.ask("[magenta]Choose a tool to proceed[/magenta]", default=0) + if choice == 99: + console.print(Panel("[bold white on magenta]Goodbye — Come Back Safely[/bold white on magenta]")) + break + if 0 <= choice < len(all_tools): + tool = all_tools[choice] + name = tool_definitions[choice][0] + console.print(Panel(f"[bold magenta]{tool_definitions[choice][1]} Selected:[/bold magenta] [white]{name}")) + try: + fn = getattr(tool, "show_options", None) + if callable(fn): + fn() + else: + console.print(f"[yellow]Tool '{name}' has no interactive menu (show_options).[/yellow]") + except Exception as e: + console.print(Panel(f"[red]Error while opening {name}[/red]\n{e}", border_style="red")) + if not Confirm.ask("[magenta]Return to main menu?[/magenta]", default=True): + console.print(Panel("[bold white on magenta]Exiting...[/bold white on magenta]")) + break + else: + console.print("[red]Invalid selection. Pick a number from the menu.[/red]") + except KeyboardInterrupt: + console.print("\n[bold red]Interrupted by user — exiting[/bold red]") + break + +def main(): + try: + if system() == "Linux": + fpath = choose_path() with open(fpath) as f: - archive = f.readline() + archive = f.readline().strip() os.makedirs(archive, exist_ok=True) os.chdir(archive) - AllTools().show_options() - - # If not Linux and probably Windows + AllTools().show_info() + interact_menu() elif system() == "Windows": - print( - r"\033[91m Please Run This Tool On A Debian System For Best Results\e[00m" - ) + console.print(Panel("[bold red]Please run this tool on a Debian/Linux system for best results[/bold red]")) + if Confirm.ask("Open guidance link in your browser?", default=True): + webbrowser.open_new_tab("https://tinyurl.com/y522modc") sleep(2) - webbrowser.open_new_tab("https://tinyurl.com/y522modc") - else: - print("Please Check Your System or Open New Issue ...") - + console.print("[yellow]Please Check Your System or Open New Issue ...[/yellow]") except KeyboardInterrupt: - print("\nExiting ..!!!") - sleep(2) + console.print("\n[bold red]Exiting ..!!![/bold red]") + sleep(1) + + +if __name__ == "__main__": + main() diff --git a/images/A.png b/images/A.png new file mode 100644 index 0000000000000000000000000000000000000000..80d43f8bc75f0e70f0019f04588d81cb7e7886b9 GIT binary patch literal 195851 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

qS`^>+RwyULlp8DuX;{wvIFG|DIYxB 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