Z4nzu/hackingtool
HackingTool
HackingTool is a Python terminal application that installs, launches, and organises 185+ widely-used security-research tools across 20 categories — from information gathering and wireless attacks through active directory exploitation, cloud security, and forensics. It is a unified launcher and orchestrator, not an attack framework: it wraps well-known third-party tools (nmap, sqlmap, BloodHound, Nuclei, Sliver, Frida, and more) behind a single Rich-based TUI so practitioners and CTF players can find, install, and run the right tool without remembering commands across dozens of projects.
Use cases
- Bootstrap a Kali/Parrot/Ubuntu pentest environment with a curated toolset in minutes
- Discover which tool to use for a given task without leaving the terminal
- Run CTF challenges with a consistent, categorised tool collection across machines
- Search across 185+ tools by keyword, tag, or natural-language task description
- Manage tool installations and updates from one menu (install, run, update, uninstall)
- Use a Docker container with a Kali base for isolated, reproducible pentest labs
- Quickly install all tools in a category at once before an engagement starts
How it works
HackingTool is a pure-Python TUI built on the rich library. Every tool is a subclass of the HackingTool base class, which declares TITLE, DESCRIPTION, INSTALL_COMMANDS, RUN_COMMANDS, SUPPORTED_OS, TAGS, and capability flags (REQUIRES_ROOT, REQUIRES_WIFI, REQUIRES_GO, etc.). Groups of tools form a HackingToolsCollection, which drives the category menus. An is_installed property checks at runtime whether the tool's binary is on PATH or its clone directory exists — powering the ✔/✘ status indicator shown next to every tool in the menu.
OS awareness is baked in: at startup, os_detect.py runs once and produces a CURRENT_OS singleton detecting system (linux/macos/windows), distro ID, package manager (apt-get, pacman, dnf, brew, etc.), WSL status, and architecture. The menu-rendering code filters out tools whose SUPPORTED_OS list doesn't include the current system, so macOS users never see Linux-only wireless drivers, and WSL users get a targeted warning. Archived (unmaintained) tools are quarantined into a separate sub-menu (option 98) instead of polluting the active list.
The smart update system reads each tool's INSTALL_COMMANDS and auto-selects the correct update strategy: git -C <dir> pull for git-cloned tools, pip install --upgrade for pip-installed ones, go install for Go tools, and gem update for Ruby gems. No per-tool configuration is needed.
What makes HackingTool different from a list or a wiki is the three-way discovery layer: /keyword keyword search (title + description + tags), t tag filter (19 semantic tags auto-derived by regex rules — osint, scanner, c2, cloud, active-directory, etc.), and r recommend (maps plain-English tasks like "pentest active directory" or "crack passwords" to matching tools across tags). This means a user unfamiliar with all 185 tools can always find the right starting point.
Features
- Keyword search — type
/queryat the main menu to search all 185+ tools by title, description, and tags instantly. Matches across title, DESCRIPTION string, and the TAGS list; results display with install status. - Tag filter — type
tto see 19 semantic tags (osint, scanner, c2, mobile, cloud, active-directory, forensics, payload, wireless, etc.) with counts, then pick one to see all matching tools. Tags are auto-derived from tool title and description via regex rules; manualTAGSclass attribute allows overrides. - Recommend engine — type
rto choose a common pentest task ("scan a network", "find subdomains", "post exploitation", "pentest cloud", "forensic analysis") and get a curated list of relevant tools. Maps task strings to one or more tags; de-duplicates tools that match multiple tags. - Install status indicator — ✔/✘ shown next to every tool in every category menu, computed at render time via
is_installed(binary on PATH or clone dir exists). - Batch install — option
97inside any category installs all not-yet-installed tools in that category in sequence. Shows progress as(N/total) ToolName; skips already-installed tools. - Smart update — the Update option on every tool auto-detects install method and runs the right command (
git pull/pip upgrade/go install/gem update) without manual configuration. - Open Folder — jumps the user into the tool's local directory in a new shell, useful for manual configuration or running sub-commands.
- OS-aware gating — tools with
SUPPORTED_OS = ["linux"]are hidden automatically on macOS; count of hidden tools is shown as a footer note. - Archived tools sub-menu — tools marked
ARCHIVED = Trueappear in a separate option-98 sub-menu with the archival reason, not in the active list. - Docker / Kali container — builds locally from
kalilinux/kali-rolling:latest; no external pre-built image required. Docker Compose supports adevprofile with live source mount. - One-liner install —
curl -sSL .../install.sh | sudo bashhandles system deps, venv, clone, launcher; placeshackingtoolbinary on PATH. - 20 tool categories — Information Gathering, Wordlist Generator, Wireless Attack, SQL Injection, Phishing, Web Attack, Post Exploitation, Forensics, Payload Creation, Exploit Framework, Reverse Engineering, DDOS, RAT, XSS, Steganography, Active Directory, Cloud Security, Mobile Security, Anonymous Hiding, Other Tools.
Showcase
Live examples
- Tool category modules — browse the per-category Python modules to see how
HackingToolsubclasses are structured.
Documentation
- README — full tool list, quick commands, installation
- core.py — HackingTool and HackingToolsCollection base classes
- hackingtool.py — search, tag filter, recommend, main menu
- os_detect.py — OS / distro / package-manager detection
Quick start
# One-liner install (recommended)
curl -sSL https://raw.githubusercontent.com/Z4nzu/hackingtool/master/install.sh | sudo bash
hackingtool
# Or manual
git clone https://github.com/Z4nzu/hackingtool.git
cd hackingtool
sudo python3 install.py
hackingtool
# Or Docker
docker build -t hackingtool .
docker run -it --rm hackingtool
Tags
- Use case
- Pentest toolkitPentest toolkitUnified launcher that installs, organises, and runs security-research and penetration-testing tools.View all repositories tagged→CLI toolCLI toolDistributed primarily as a command-line tool you install and run from your shell.View all repositories tagged→
- Ecosystem
- PythonPythonBuilt with the Python language.View all repositories tagged→
- Stack
- Docker ComposeDocker ComposeLocal development and runtime are orchestrated with docker-compose.View all repositories tagged→
- Status
- ActiveActiveReceives recent commits and releases, issues are being addressed.View all repositories tagged→
- Features
- Recommend engineRecommend engineMaps a plain-English task description to a curated list of relevant tools via tag look-up.View all repositories tagged→Smart updateSmart updateAuto-detects each tool's install method and runs the matching update command (git pull, pip upgrade, go install, gem update).View all repositories tagged→Batch installerBatch installerInstall every tool in a category at once with a single menu action.View all repositories tagged→Install status indicatorInstall status indicatorShows ✔/✘ next to every tool in the menu so users can see at a glance what is already installed.View all repositories tagged→Tag filterTag filterFilter a large catalogue of items by semantic tags such as osint, scanner, c2, cloud, or mobile.View all repositories tagged→Tool launcher menuTool launcher menuCategory-based TUI menu that installs, runs, and manages third-party CLI tools.View all repositories tagged→OS-aware tool gatingOS-aware tool gatingHides menu entries whose declared OS support does not include the current host system.View all repositories tagged→
- License
- MITMITMIT License — permissive, allows commercial reuse with attribution.View all repositories tagged→
Documentation
23 pages indexed · 2,370 words▶READMEHackingTool — Overviewgithub.com/Z4nzu/hackingtool/blob/master/README.md↗
HackingTool v2.0.0
All-in-One Hacking Tool for Security Researchers & Pentesters.
185+ tools across 20 categories (Information Gathering, Wordlist Generator, Wireless Attack, SQL Injection, Phishing Attack, Web Attack, Post Exploitation, Forensics, Payload Creation, Exploit Framework, Reverse Engineering, DDOS Attack, RAT, XSS Attack, Steganography, Active Directory, Cloud Security, Mobile Security, Anonymous Hiding, Other Tools).
Supports Linux | Kali | Parrot | macOS. MIT licensed. Python 3.10+.
HackingTool is a launcher / orchestrator — it installs and runs well-known third-party security tools (sqlmap, nmap, hydra, bloodhound, etc.) through a unified terminal menu. It does not implement attacks itself.
▶READMEWhat's New in v2.0.0github.com/Z4nzu/hackingtool/blob/master/README.md#whats-new-in-v200↗
What's New in v2.0.0
Feature Description Python 3.10+ All Python 2 code removed, modern syntax throughout OS-aware menus Linux-only tools hidden automatically on macOS 185+ tools 35 new modern tools added across 6 categories Search Type /to search all tools by name, description, or keywordTag filter Type tto filter by 19 tags — osint, web, c2, cloud, mobile...Recommend Type r— "I want to scan a network" → shows relevant toolsInstall status ✔/✘ shown next to every tool — know what's ready Install all Option 97in any category — batch install at onceSmart update Each tool has Update — auto-detects git pull / pip upgrade / go install Open folder Jump into any tool's directory for manual inspection Docker Builds locally — no unverified external images One-liner install `curl -sSL .../install.sh 3 new categories Active Directory, Cloud Security, Mobile Security ▶READMEQuick Commandsgithub.com/Z4nzu/hackingtool/blob/master/README.md#quick-commands↗
Quick Commands
Command Action Works in /querySearch — find tools instantly by keyword Main menu tTags — filter by osint, scanner, c2, cloud, mobile... Main menu rRecommend — "I want to do X" → matching tools Main menu ?Help — quick reference card Everywhere qQuit — exit from any depth Everywhere 97Install All — batch install all tools in category Category 99Back — return to previous menu Everywhere ▶READMETool Categoriesgithub.com/Z4nzu/hackingtool/blob/master/README.md#tool-categories↗
Tool Categories (20 total)
- Anonymously Hiding Tools (2)
- Information Gathering Tools (26) — nmap, Amass, RustScan, theHarvester, SpiderFoot, Subfinder, TruffleHog, Gitleaks, Holehe, Maigret, httpx
- Wordlist Generator (7) — Cupp, Hashcat, John the Ripper, haiti
- Wireless Attack Tools (13) — Airgeddon, Bettercap, Wifite, hcxdumptool, Fluxion
- SQL Injection Tools (7) — Sqlmap, NoSqlMap
- Phishing Attack Tools (17) — Evilginx3, Setoolkit, dnstwist
- Web Attack Tools (20) — Nuclei, ffuf, Feroxbuster, Nikto, OWASP ZAP, Gobuster, Dirsearch, mitmproxy, Caido
- Post Exploitation Tools (10) — pwncat-cs, Sliver, Havoc, PEASS-ng, Ligolo-ng, Chisel, Evil-WinRM, Mythic
- Forensics Tools (8) — Volatility 3, Binwalk, pspy
- Payload Creation Tools (8)
- Exploit Framework (4) — RouterSploit, Commix
- Reverse Engineering Tools (5) — Ghidra, Radare2, JADX
- DDOS Attack Tools (5)
- RAT (1)
- XSS Attack Tools (9) — DalFox, XSStrike
- Steganography Tools (4)
- Active Directory Tools (6) — BloodHound, NetExec, Impacket, Responder, Certipy, Kerbrute
- Cloud Security Tools (4) — Prowler, ScoutSuite, Pacu, Trivy
- Mobile Security Tools (3) — MobSF, Frida, Objection
- Other Tools (24)
▶READMEInstallationgithub.com/Z4nzu/hackingtool/blob/master/README.md#installation↗
Installation
One-liner (recommended)
curl -sSL https://raw.githubusercontent.com/Z4nzu/hackingtool/master/install.sh | sudo bashHandles everything — prerequisites, clone, venv, launcher.
Manual
git clone https://github.com/Z4nzu/hackingtool.git cd hackingtool sudo python3 install.pyThen run:
hackingtoolDocker
# Build docker build -t hackingtool . # Run (direct) docker run -it --rm hackingtool # Run (Compose — recommended) docker compose up -d docker exec -it hackingtool bash # Dev mode (live source mount) docker compose --profile dev upRequirements
Dependency Version Needed for Python 3.10+ Core Go 1.21+ nuclei, ffuf, amass, httpx, katana, dalfox, gobuster, subfinder Ruby any haiti, evil-winrm Docker any Mythic, MobSF (optional) ▶READMEActive Directory Toolsgithub.com/Z4nzu/hackingtool/blob/master/README.md#active-directory-tools↗
Active Directory Tools
- BloodHound — attack path mapping and AD visualization
- NetExec (nxc) — network service exploitation
- Impacket — Python implementations of Windows network protocols
- Responder — LLMNR/NBT-NS/mDNS poisoner
- Certipy — AD Certificate Services attack tool
- Kerbrute — Kerberos pre-authentication brute-forcing
All 6 tools available on Linux and macOS.
▶READMECloud & Mobile Security Toolsgithub.com/Z4nzu/hackingtool/blob/master/README.md#cloud-security-tools↗
Cloud Security Tools
- Prowler — AWS/Azure/GCP/Kubernetes security assessments
- ScoutSuite — multi-cloud security auditing
- Pacu — AWS exploitation framework
- Trivy — container, Kubernetes, IaC, and code vulnerability scanner
Mobile Security Tools
- MobSF (Mobile Security Framework) — automated mobile app security testing
- Frida — dynamic instrumentation toolkit
- Objection — runtime mobile exploration (powered by Frida)
▶READMEContributing — adding a new toolgithub.com/Z4nzu/hackingtool/blob/master/README.md#contributing--add-a-new-tool↗
Contributing — Add a New Tool
To add a tool, either open an issue with title
[Tool Request] ToolName — Categoryor open a PR with title[New Tool] ToolName — Category.PR requirements:
- Create a class in the relevant
tools/*.pyfile that extendsHackingTool - Set
TITLE,DESCRIPTION,INSTALL_COMMANDS,RUN_COMMANDS,SUPPORTED_OS - Test locally on supported OS
Issues or PRs that don't follow the title format are closed without review.
- Create a class in the relevant
▶READMEInformation Gathering Toolsgithub.com/Z4nzu/hackingtool/blob/master/README.md#information-gathering-tools↗
Information Gathering Tools (26)
- nmap — network discovery and security auditing
- theHarvester — email, host, subdomain, port, and banner gathering from public sources
- Amass — in-depth attack surface mapping and asset discovery
- Masscan — high-speed port scanner
- RustScan — fast port scanner with nmap integration
- Holehe — checks if an email is attached to accounts on 120+ sites
- Maigret — OSINT username search across 2500+ sites
- httpx — fast HTTP probing
- SpiderFoot — automated OSINT framework
- Subfinder — passive subdomain discovery
- TruffleHog — secret scanning across git history
- Gitleaks — secret scanning in git repos
- ReconSpider, ReconDog, Striker, SecretFinder, Shodanfy, Infoga, RED HAWK, Xerosploit, Dracnmap, rang3r, Breacher
▶READMEPost Exploitation & Web Attack Toolsgithub.com/Z4nzu/hackingtool/blob/master/README.md#post-exploitation-tools↗
Post Exploitation Tools (10)
- pwncat-cs — reverse shell handler with post-exploitation tools
- Sliver — adversary simulation / red team C2 framework
- Havoc — modern C2 framework
- PEASS-ng (LinPEAS/WinPEAS) — privilege escalation scripts for Linux and Windows
- Ligolo-ng — advanced tunneling/pivoting tool
- Chisel — fast TCP/UDP tunnel over HTTP
- Evil-WinRM — WinRM shell for exploitation
- Mythic — collaborative red team C2 framework
Web Attack Tools (20)
- Nuclei — fast vulnerability scanner based on templates
- ffuf — fast web fuzzer
- Feroxbuster — fast content discovery
- Nikto — web server scanner
- OWASP ZAP — web application security scanner
- Gobuster — directory/file/DNS/vhost busting
- Dirsearch — directory brute-forcer
- mitmproxy — interactive HTTPS proxy
- Caido — lightweight web security auditing toolkit
- wafw00f — WAF detection
- Arjun — HTTP parameter discovery
▶HackingTool base classgithub.com/Z4nzu/hackingtool/blob/master/core.py↗
HackingTool — Plugin base class
Every individual tool is a subclass of
HackingTool:class HackingTool: TITLE: str = "" DESCRIPTION: str = "" INSTALL_COMMANDS: list[str] = [] RUN_COMMANDS: list[str] = [] SUPPORTED_OS: list[str] = ["linux", "macos"] REQUIRES_ROOT: bool = False REQUIRES_WIFI: bool = False REQUIRES_GO: bool = False REQUIRES_RUBY: bool = False REQUIRES_DOCKER: bool = False TAGS: list[str] = [] ARCHIVED: bool = FalseEach tool gets Install, Run, Update, and Open Folder actions automatically. The
is_installedproperty checks if the tool's binary is on PATH or its clone directory exists — this drives the ✔/✘ status indicator in the menu.Groups of tools are collected in
HackingToolsCollection, which drives category menus.▶OS-aware menu gatinggithub.com/Z4nzu/hackingtool/blob/master/core.py↗
OS-aware menu gating
The
HackingToolsCollection.show_options()method calls_active_tools(), which filters out tools incompatible with the current OS:def _active_tools(self) -> list: from os_detect import CURRENT_OS return [ t for t in self.TOOLS if not getattr(t, "ARCHIVED", False) and CURRENT_OS.system in getattr(t, "SUPPORTED_OS", ["linux", "macos"]) ]On macOS, wireless/WiFi tools (which require kernel-level drivers) are hidden automatically. The menu also shows how many tools were hidden and why:
(N tools hidden — not supported on current OS)Archived tools (broken, unmaintained, or replaced) are separated into their own sub-menu (option 98) rather than polluting the active list.
▶Smart update — method-aware updatergithub.com/Z4nzu/hackingtool/blob/master/core.py↗
Smart update
The
HackingTool.update()method auto-detects how the tool was installed and runs the right update command:- git clone → runs
git -C <dirname> pull - pip install → re-runs with
--upgrade - go install → re-runs (fetches latest)
- gem install → runs
gem update
No manual configuration is required — the update logic reads the tool's
INSTALL_COMMANDSto determine the method. This means a singleUpdatemenu option works correctly for all 185+ tools regardless of their install method.- git clone → runs
▶Keyword searchgithub.com/Z4nzu/hackingtool/blob/master/hackingtool.py↗
Keyword search (
/query)Type
/followed by any keyword at the main menu to instantly search across all 185+ tools. The search matches against tool title, description, and manual TAGS attributes:def search_tools(query: str | None = None): all_tool_list = _collect_all_tools() matches = [] for tool, category in all_tool_list: title = (tool.TITLE or "").lower() desc = (tool.DESCRIPTION or "").lower() tags = " ".join(getattr(tool, "TAGS", []) or []).lower() if query in title or query in desc or query in tags: matches.append((tool, category))Results display with install status (✔/✘), tool name, and category. The user can select a result directly to open the tool's option menu.
▶Tag filtergithub.com/Z4nzu/hackingtool/blob/master/hackingtool.py↗
Tag filter (
t)Type
tat the main menu to see all 19 built-in tags with tool counts, then pick one to see every matching tool across all categories:Built-in tags:
osint,recon,scanner,bruteforce,web,wireless,social-engineering,c2,privesc,network,credentials,forensics,reversing,cloud,mobile,active-directory,ddos,payload,crawler.Tags are auto-derived from tool title and description via regex rules, and can also be set manually via the
TAGSclass attribute. The filter shows all matching tools with install status and lets the user open any tool directly.▶Recommend enginegithub.com/Z4nzu/hackingtool/blob/master/hackingtool.py↗
Recommend engine (
r)Type
rat the main menu to pick a task from a curated list of common pentest scenarios. The engine maps tasks to tags and returns all matching tools:Example tasks:
- Scan a network → scanner, port-scanner
- Find subdomains → recon
- Crack passwords → bruteforce, credentials
- Phishing campaign → social-engineering
- Post exploitation → c2, privesc
- Pentest active directory → active-directory
- Pentest cloud → cloud
- OSINT / recon a target → osint, recon
- Reverse engineer binary → reversing
- Forensic analysis → forensics
The recommend engine collects unique tools across all matching tags and presents them in a single list with install status.
▶Batch install (option 97)github.com/Z4nzu/hackingtool/blob/master/hackingtool.py↗
Batch install (option 97)
Inside any category menu, option
97installs all tools that are not yet installed in that category at once:elif choice == 97 and not_installed: for i, tool in enumerate(not_installed, start=1): console.print(f"({i}/{len(not_installed)}) {tool.TITLE}") try: tool.install() except Exception: console.print(f"Failed: {tool.TITLE}")The label shows the count of not-yet-installed tools:
Install all (N not installed). This is the primary way to bootstrap a new Kali environment with a full category of tools in one step.▶OS detection — architecturegithub.com/Z4nzu/hackingtool/blob/master/os_detect.py↗
OS detection
os_detect.pyruns at import time and produces a module-levelCURRENT_OS: OSInfosingleton. It detects:- system: linux, macos, windows, unknown
- distro_id: kali, ubuntu, arch, fedora, etc. (from
/etc/os-release) - pkg_manager: apt-get, pacman, dnf, zypper, apk, brew (auto-detected by which)
- is_wsl: detected from
/proc/version - arch: x86_64, aarch64, arm64
- is_root: euid == 0
The installer uses this to run the correct package manager commands. On macOS with Homebrew, a partial-support warning is shown and wireless tools are hidden. On WSL, a warning notes that wireless tools won't work.
▶Installer architecturegithub.com/Z4nzu/hackingtool/blob/master/install.py↗
Installer architecture
install.pyperforms a fully automated install:- Checks root privilege
- Detects OS and package manager
- Checks internet connectivity
- Installs system dependencies (git, python3, go, ruby, php) via the detected package manager
- Clones the repo to
/usr/share/hackingtool(Linux) or/usr/local/share/hackingtool(macOS) - Creates a Python virtualenv and installs
requirements.txt - Creates a launcher shell script at
/usr/bin/hackingtoolor/usr/local/bin/hackingtool - Creates
~/.hackingtool/user directory with initialconfig.json
After install, the user simply runs
hackingtoolfrom any terminal. Theinstall.shone-liner wraps this entire process.▶Docker — Kali-based containergithub.com/Z4nzu/hackingtool/blob/master/Dockerfile↗
Docker
The Dockerfile uses
kalilinux/kali-rolling:latestas the base image — ensuring all Kali-specific tools and apt repositories are available. The image is built locally from source; there are no pre-built public images to pull. This eliminates supply-chain risk.FROM kalilinux/kali-rolling:latest WORKDIR /root/hackingtool COPY requirements.txt ./ RUN pip3 install --break-system-packages -r requirements.txt COPY . . ENTRYPOINT ["python3", "/root/hackingtool/hackingtool.py"]Docker Compose provides two profiles: default (interactive session) and
dev(live source mount for development). Tools installed inside the container persist in a named volume.▶Configuration — paths and defaultsgithub.com/Z4nzu/hackingtool/blob/master/constants.py↗
Configuration
User-scoped paths computed at runtime using
Path.home()(works for any user including root):- Config dir:
~/.hackingtool/ - Tools dir:
~/.hackingtool/tools/ - Config file:
~/.hackingtool/config.json
Default config:
{ "tools_dir": "~/.hackingtool/tools", "version": "2.0.0", "theme": "magenta", "show_archived": false, "sudo_binary": "sudo", "go_bin_dir": "~/go/bin", "gem_bin_dir": "~/.gem/ruby" }System install paths:
/usr/share/hackingtool(Linux),/usr/local/share/hackingtool(macOS).- Config dir:
▶Install status indicatorgithub.com/Z4nzu/hackingtool/blob/master/core.py↗
Install status indicator (✔/✘)
The
is_installedproperty checks whether a tool is ready to use:@property def is_installed(self) -> bool: # 1. Check binary on PATH (for go install, pip install, apt-get) if self.RUN_COMMANDS: binary = self.RUN_COMMANDS[0].split()[0] if shutil.which(binary): return True # 2. Check if git clone target directory exists for ic in self.INSTALL_COMMANDS: if "git clone" in ic: dirname = # extracted from clone URL if os.path.isdir(dirname): return True return FalseThe category menu shows ✔ (green) or ✘ (dim) next to every tool, so users can see at a glance which tools are ready and which need to be installed.
▶Main menu — rich TUI headergithub.com/Z4nzu/hackingtool/blob/master/hackingtool.py↗
Main menu — Rich TUI
HackingTool v2.0.0 uses the Python
richlibrary for its terminal UI. The main menu header shows:- ASCII block-letter art banner
- Live system info: OS, kernel, user, hostname, local IP, Python version, architecture
- Random security quote
- Warning: "For authorized security testing only"
- 2-column category grid (20 categories)
- Command hint bar: /search t tags r recommend ? help q quit
All menus use iterative loops (not recursion) to prevent stack overflow with deep navigation.

