toolbelt/toolbelt_old.py
rpriven fd0659d70c
Toolbelt v2.0 - Complete refactor with interactive menus and profiles
Major rewrite from single-file script to modular architecture with comprehensive features:

## New Features
- Interactive 3-level menu system (Main → Categories → Tools)
- Pre-built profiles: Bug Bounty, CTF, Web App, Network, Full Pentest
- Distro detection with appropriate tool sets (Kali, Debian, Ubuntu)
- NO root requirement - runs as user, uses sudo selectively
- Comprehensive logging (console + ~/toolbelt-install.log)
- Fresh CLI tool integration and detection
- Smart tool detection (skips already-installed tools)

## Architecture Changes
- Modular design: utils.py, config.py, installer.py, toolbelt.py
- utils.py: Distro detection, logging setup, helper functions
- config.py: Tool definitions, profiles, category metadata
- installer.py: Installation logic for all tool categories
- toolbelt.py: Interactive menu system and main flow

## Improvements
- Fixed $HOME path resolution bug (no more /root issues)
- Added comprehensive error handling and reporting
- Category-based tool organization (APT, Go, /opt, Python, Docker, Scripts)
- Parallel Go tool installation with ThreadPoolExecutor
- Shell alias setup for Docker tools

## Documentation
- Complete README rewrite with usage examples
- Architecture diagrams and file structure
- Integration guide for fresh ecosystem
- Version history and changelog

## Archived Files
- toolbelt.sh → toolbelt.sh.old (legacy bash version)
- toolbelt.py → toolbelt_old.py (original Python v1.0)

Part of the Djedi security tooling ecosystem integration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-31 23:17:41 -06:00

306 lines
11 KiB
Python

#!/usr/bin/python3
######################
''' Djedi Toolbelt '''
''' Python3 Reboot '''
######################
'''
#########################################################################
WARNING:
This script is approximately 5 GB and will take a while to run.
Please make sure you check this before installing.
Menu will be coming in one of the next updates to help
cater to your preferences and custom requirements.
#########################################################################
'''
'''
TO DO:
Finish - apt threading (sort of, with apt-fast)
Add - Menu selection for the various categories:
- apt tools only
- opt tools only
- python tools only
- go tools only
- docker tools only
- scripts only
Threading for /opt tools
Find out where scripts are actually downloading
Add C2 - Probably Havoc
Add PowerView (if not already included)
Double-check all tools
Add section for Bug Bounty tools
Add section for API tools
Add option to download the recon.py automation script,
which uses this toolbelt
'''
import subprocess, os, threading
from concurrent.futures import ThreadPoolExecutor, as_completed
from termcolor import colored
from tqdm import tqdm
threads = []
# Check if the user is running as root
if os.geteuid() != 0:
print(colored("Please run as root", 'red'))
exit(1)
'''
subprocess.run(["pip", "install", "progress"])
tools = ["tool1", "tool2", "tool3"]
bar = Bar('Installing', max=len(tools))
for tool in tools:
# Code to install the tool
bar.next()
bar.finish()
'''
# Figlet
os.system("figlet DjediToolbelt | lolcat")
# Version
print("v.0.3\n")
# Message
print(colored("[*] Installing Pentest & Bug Bounty Toolbox Suite", 'magenta'))
#########################
''' Aptitude Programs '''
#########################
def apt_tools():
subprocess.run(["sudo", "apt", "update"])
subprocess.run(["sudo", "apt", "install", "apt-fast"])
programs = ["nmap", "naabu", "nuclei", "burpsuite", "feroxbuster", "nikto", "masscan", "gobuster", "seclists", "sqlmap", "git"]
for program in programs:
if os.system(f"command -v {program}") == 0:
print(colored(f"[*] {program} is already installed", 'blue'))
else:
print(colored(f"[+] Installing / updating {program}", 'green'))
os.system(f"sudo apt-fast install {program} -y")
if os.system(f"command -v {program}") != 0:
print(colored(f"[*] Error: Failed to install the program: {program}", 'red'))
exit(1)
os.system(f"sudo apt-fast install docker docker.io golang-go -y")
##################
''' /opt Tools '''
##################
def opt_tools():
# Pimpmykali
os.chdir("/opt")
if not os.path.isdir("/opt/pimpmykali"):
print(colored("[+] Installing pimpmykali...", 'green'))
os.system("sudo git clone https://github.com/Dewalt-arch/pimpmykali")
os.chdir("pimpmykali")
print(colored("[+] Installing Golang...", 'green'))
os.system("sudo ./pimpmykali.sh --go")
print(colored("[+] Installing Impacket...", 'green'))
os.system("sudo ./pimpmykali.sh --impacket")
os.system("sudo ./pimpmykali.sh --upgrade")
os.chdir("/opt")
else:
print(colored("[*] pimpmykali is already installed", 'blue'))
# xnLinkFinder
if not os.path.isdir("/opt/xnLinkFinder"):
print(colored("[+] Installing xnLinkFinder...", 'green'))
os.system("git clone https://github.com/xnl-h4ck3r/xnLinkFinder.git")
os.chdir("xnLinkFinder")
os.system("sudo python setup.py install")
os.chdir("/opt")
else:
print(colored("[*] xnLinkFinder is already installed", 'blue'))
# Knockpy
if not os.path.isdir("/opt/knock"):
print(colored("[+] Installing Knockpy...", 'green'))
os.system("sudo git clone https://github.com/guelfoweb/knock.git")
os.chdir("knock")
os.system("pip3 install -r requirements.txt")
os.chdir("/opt")
else:
print(colored("[*] Knockpy is already installed", 'blue'))
# Sublist3r
if not os.path.isdir("/opt/Sublist3r"):
print(colored("[+] Installing Sublist3r...", 'green'))
os.system("sudo git clone https://github.com/aboul3la/Sublist3r.git")
os.chdir("Sublist3r")
os.system("pip install -r requirements.txt")
os.chdir("/opt")
else:
print(colored("[*] Sublist3r is already installed", 'blue'))
# Striker
if not os.path.isdir("/opt/Striker"):
print(colored("[+] Installing Striker...", 'green'))
os.system("sudo git clone https://github.com/s0md3v/Striker.git")
os.chdir("Striker")
os.system("pip install -r requirements.txt")
os.chdir("/opt")
else:
print(colored("[*] Striker is already installed", 'blue'))
# wafw00f
if not os.path.isdir("/opt/wafw00f"):
print(colored("[+] Installing wafw00f...", 'green'))
os.system("git clone https://github.com/EnableSecurity/wafw00f.git")
os.chdir("wafw00f")
os.system("pip3 install -r requirements.txt")
os.system("sudo python setup.py install")
os.chdir("/opt")
else:
print(colored("[*] wafw00f is already installed", 'blue'))
# Waymore
if not os.path.isdir("/opt/waymore"):
print(colored("[+] Installing waymore...", 'green'))
os.system("git clone https://github.com/xnl-h4ck3r/waymore.git")
os.chdir("waymore")
os.system("pip3 install -r requirements.txt")
os.system("sudo python setup.py install")
os.chdir("/opt")
else:
print(colored("[*] waymore is already installed", 'blue'))
# XSStrike
if not os.path.isdir("/opt/XSStrike"):
print(colored("[+] Installing XSStrike...", 'green'))
os.system("git clone https://github.com/s0md3v/XSStrike.git")
os.chdir("XSStrike")
os.system("pip3 install -r requirements.txt")
os.system("sudo python setup.py install")
os.chdir("/opt")
else:
print(colored("[*] XSStrike is already installed", 'blue'))
####################
''' Python Tools '''
####################
def python_tools():
print(colored("[+] Installing / Updating Python Tools...", 'green'))
subprocess.run(["pip3", "install", "--upgrade", "wfuzz"])
subprocess.run(["pip3", "install", "arjun"])
subprocess.run(["pip3", "install", "scrapy"])
subprocess.run(["pip3", "install", "tld"])
subprocess.run(["pip3", "install", "requests"])
subprocess.run(["pip3", "install", "fuzzywuzzy"])
################
''' Go Tools '''
################
def go_tools():
print(colored("[+] Installing / Updating Go Tools...", 'green'))
commands = [
["go", "install", "-v", "github.com/projectdiscovery/naabu/v2/cmd/naabu@latest"],
["go", "install", "-v", "github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest"],
["go", "install", "-v", "github.com/projectdiscovery/katana/cmd/katana@latest"],
["go", "install", "-v", "github.com/projectdiscovery/httpx/cmd/httpx@latest"],
["go", "install", "-v", "github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest"],
["go", "install", "-v", "github.com/OWASP/Amass/v3/...@master"],
["go", "install", "-v", "github.com/tomnomnom/assetfinder@latest"],
["go", "install", "-v", "github.com/tomnomnom/httprobe@latest"],
["go", "install", "-v", "github.com/sensepost/gowitness@latest"],
["go", "install", "-v", "github.com/haccer/subjack@latest"],
["go", "install", "-v", "github.com/hakluke/hakrawler@latest"],
["go", "install", "-v", "github.com/rverton/webanalyze/cmd/webanalyze@latest"],
]
with ThreadPoolExecutor() as executor:
results = [executor.submit(subprocess.run, cmd) for cmd in commands]
for f in as_completed(results):
print(colored(f.result(), 'green'))
####################
''' Docker Tools '''
####################
def docker_tools():
# RustScan
print(colored("[+] Installing / Updating RustScan...", 'green'))
os.system("docker pull rustscan/rustscan:2.0.1")
if os.path.isfile("~/.zshrc"):
print(colored("[+] adding rustscan alias to ~/.zshrc", 'green'))
with open("~/.zshrc", "a") as f:
f.write("alias rustscan='docker run -it --rm --name rustscan rustscan/rustscan:2.0.1'")
elif os.path.isfile("~/.bashrc"):
print(colored("[+] adding rustscan alias to ~/.bashrc", 'green'))
with open("~/.bashrc", "a") as f:
f.write("alias rustscan='docker run -it --rm --name rustscan rustscan/rustscan:2.0.1'")
###############
''' Scripts '''
###############
def useful_scripts():
def scripts_dir():
if not os.path.isdir(os.path.expanduser("~/scripts")):
# os.chdir(["cd", os.path.expanduser("~")])
os.chdir(os.path.expanduser("~"))
os.makedirs(os.path.expanduser("~/scripts"), exist_ok=True)
os.chdir(os.path.expanduser("~/scripts"))
subprocess.run(["echo", "created", "scripts", "and", "moved", "into", "it"])
else:
os.chdir(os.path.expanduser("~/scripts"))
subprocess.run(["echo", "directory", "/scripts", "already", "exists,", "moving", "into", "it"])
scripts_dir()
scripts = ["https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh", "https://github.com/411Hall/JAWS/raw/master/jaws-enum.ps1", "https://github.com/rebootuser/LinEnum/raw/master/LinEnum.sh", "https://github.com/carlospolop/PEASS-ng/releases/download/20230122/winPEASany_ofs.exe", "https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php", "https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh", "https://github.com/PowerShellMafia/PowerSploit/raw/master/Recon/PowerView.ps1"]
script_threads = []
def download_script_thread(script):
subprocess.run(f"wget {script}", shell=True)
def download_script(scripts):
for script in tqdm(scripts):
print(colored(f"[+] Grabbing {script}", 'green'))
t = threading.Thread(target=download_script_thread, args=(script,))
script_threads.append(t)
t.start()
for t in script_threads:
t.join()
print(colored("[*] All scripts downloaded", 'green'))
download_script(scripts)
try:
apt_tools()
opt_tools()
go_tools()
docker_tools()
useful_scripts()
except KeyboardInterrupt:
print(colored(f"[*] Exiting: KeyboardInterrupt", 'red'))
print(colored("[*] Installation Complete", 'magenta'))
print(colored("[*] Reboot Recommended", 'magenta'))
print(colored("[*] You are now Equipped!", 'green'))