Implemented comprehensive wordlist management system. Features: - New main menu option "6) Manage Wordlists" - Install SecLists from GitHub (~500MB collection) - View wordlist directory structure with file counts - Update SecLists with git pull - Installs to ~/wordlists/SecLists (user-owned) Implementation: - wordlist_menu() - Interactive wordlist management - install_seclists() - Clone SecLists with --depth 1 - view_wordlists() - Browse installed wordlists by category - update_seclists() - Pull latest from GitHub - Shows popular wordlist categories after install - Handles reinstall with confirmation prompt SecLists Categories: - Passwords (rockyou, common, leaked databases) - Usernames (common names and usernames) - Discovery (DNS, web content, subdomains) - Fuzzing (XSS, SQLi, injection payloads) - Payloads, IOCs, Web-Shells, Pattern-Matching Installation Details: - Location: ~/wordlists/SecLists/ - Size: ~500MB (compressed download) - Uses --depth 1 for faster clone - User-owned, no sudo required - Easy to update with git pull Image Update: - Replaced 21 individual images with single toolbelt.jpeg - Selected best image (seed_13) with tools visible on belt - Cleaned up images directory v2.1 Status: ALL FEATURES COMPLETE ✅ Individual Tool Selection ✅ Tool Update Detection ✅ Wordlist Management 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.9 KiB
Toolbelt Enhancement TODO
v2.1 Priority Features
1. Tool Update Detection ⭐⭐⭐
Priority: HIGH
Check which Go tools have updates available and provide interactive update menu.
# Compare installed version vs @latest
# Show which tools need updates
# Bulk update option
Implementation:
- Query
go list -mfor installed versions - Compare against
@latestfrom go.dev - Interactive menu to select which tools to update
2. Individual Tool Selection (Level 3) ⭐⭐⭐
Priority: HIGH
Replace "Coming Soon" with actual tool selection using gum.
Using gum choose --no-limit for multi-select:
# Install gum first
go install github.com/charmbracelet/gum@latest
# Then use in Python via subprocess
selected = subprocess.run(
['gum', 'choose', '--no-limit'] + tool_list,
capture_output=True,
text=True
).stdout.strip().split('\n')
Implementation Plan:
- Add gum as optional dependency (install if not present)
- In
tool_selection_menu(), replace option 2 with gum multi-select - Pass selected tools to category installer
- Fallback to sequential selection if gum not available
Example:
def select_apt_tools(distro_type: str) -> List[str]:
"""Let user select specific APT tools with gum multi-select"""
all_tools = config.get_apt_tools_for_distro(distro_type)
if check_command_exists('gum'):
# Multi-select with gum
result = subprocess.run(
['gum', 'choose', '--no-limit', '--header', 'Select tools to install:'] + all_tools,
capture_output=True,
text=True
)
selected = [t for t in result.stdout.strip().split('\n') if t]
return selected
else:
# Fallback: show list, let user pick
print_warning("Install gum for multi-select: go install github.com/charmbracelet/gum@latest")
# ... manual selection loop
3. Wordlist Management ⭐⭐
Priority: MEDIUM
Download and organize common wordlists for pentesting.
Wordlists to Include:
- SecLists (already in APT tools, but organize it)
- rockyou.txt
- Daniel Miessler's lists
- Custom wordlists for subdomains, directories, passwords
Directory Structure:
~/wordlists/
├── passwords/
│ ├── rockyou.txt
│ └── common-passwords.txt
├── subdomains/
│ ├── subdomains-top1mil.txt
│ └── dns-bruteforce.txt
├── directories/
│ ├── common.txt
│ └── raft-large-directories.txt
└── usernames/
└── common-usernames.txt
Implementation:
- New category: "Wordlist Management"
- Download from GitHub releases
- Extract and organize
- Create symlinks to common locations
4. Resource Monitoring ⭐⭐
Priority: MEDIUM
Show disk space requirements before installation.
Features:
- Check available disk space
- Estimate download size per category
- Warn if insufficient space
- Show progress during large downloads
Implementation:
def check_disk_space(required_gb: float) -> bool:
"""Check if enough disk space available"""
stat = os.statvfs(os.path.expanduser('~'))
available_gb = (stat.f_bavail * stat.f_frsize) / (1024**3)
if available_gb < required_gb:
print_error(f"Insufficient disk space!")
print_info(f"Required: {required_gb}GB, Available: {available_gb:.1f}GB")
return False
return True
5. Tool Usage Instructions (tldr) ⭐⭐
Priority: MEDIUM
Show basic usage examples after installing each tool.
Using tldr pages:
# Install tldr
pip3 install tldr
# Show usage
tldr nuclei
Implementation:
def show_tool_usage(tool_name: str):
"""Display quick usage guide for tool"""
if check_command_exists('tldr'):
subprocess.run(['tldr', tool_name])
else:
# Fallback: show our own examples from config
if tool_name in TOOL_EXAMPLES:
print_info(f"\nQuick Start for {tool_name}:")
print(TOOL_EXAMPLES[tool_name])
Add to config.py:
TOOL_EXAMPLES = {
"nuclei": "nuclei -t /path/to/templates -u https://target.com",
"httpx": "cat domains.txt | httpx -status-code -title",
"subfinder": "subfinder -d target.com -o subdomains.txt",
# ... etc
}
6. Export/Import Configuration ⭐
Priority: LOW
Save and restore custom tool selections.
Format:
{
"name": "my-custom-setup",
"created": "2025-10-31",
"distro": "kali",
"tools": {
"apt": ["nmap", "masscan", "burpsuite"],
"go": ["nuclei", "httpx", "subfinder"],
"scripts": true
}
}
Implementation:
- Save to
~/.config/toolbelt/configs/ - Load previous configs
- Share between systems
7. Workspace Setup ⭐
Priority: LOW
Create standard pentesting directory structure.
Directory Tree:
~/pentesting/
├── targets/
│ └── example.com/
│ ├── recon/
│ ├── scans/
│ └── loot/
├── wordlists/ (symlink to ~/wordlists)
├── tools/ (symlink to /opt)
└── reports/
Implementation:
- New menu option: "Setup Workspace"
- Creates directories
- Adds .gitignore templates
- Initializes git repos where appropriate
8. Tmux Integration (via tmux-recon) ⭐⭐⭐
Priority: HIGH (After tmux-recon.py is done)
Menu Option:
7) 🚀 Launch Pentesting Environment (tmux-recon)
Advanced shell environment with tmux automation
Action:
- Check if tmux-recon is installed
- If not, prompt to clone and install
- If yes, launch tmux-recon automation
Implementation:
def launch_tmux_environment():
"""Launch tmux-recon pentesting environment"""
if not os.path.exists('/opt/tmux-recon'):
print_warning("tmux-recon not installed")
response = input("Clone and install tmux-recon? [y/N]: ")
if response.lower() == 'y':
# Clone and run tmux-recon
pass
else:
# Launch tmux-recon
subprocess.run(['/opt/tmux-recon/tmux-recon.py', '--auto'])
9. Health Check / Verify Installation ⭐
Priority: LOW
Verify all installed tools are working correctly.
Checks:
- Run
--versionor--helpon each tool - Verify can execute
- Check for broken symlinks
- Report missing dependencies
Implementation:
def health_check():
"""Verify all installed tools work"""
broken_tools = []
for tool in installed_tools:
try:
subprocess.run([tool, '--version'],
capture_output=True,
timeout=5)
except Exception:
broken_tools.append(tool)
if broken_tools:
print_error(f"Broken tools: {', '.join(broken_tools)}")
10. Progress Bars for Large Downloads ⭐
Priority: LOW
Better visual feedback during installation.
Using tqdm:
from tqdm import tqdm
def download_with_progress(url: str, output: str):
"""Download with progress bar"""
response = requests.get(url, stream=True)
total = int(response.headers.get('content-length', 0))
with open(output, 'wb') as f, tqdm(
total=total,
unit='B',
unit_scale=True,
desc=output
) as bar:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
bar.update(len(chunk))
Implementation Priority
v2.1 (COMPLETE):
- Individual Tool Selection (gum multi-select) ✅ COMPLETED
- Tool Update Detection ✅ COMPLETED
- Wordlist Management ✅ COMPLETED
v2.2: 4. Resource Monitoring 5. Usage Instructions (tldr) 6. Tmux-recon Integration
v2.3: 7. Export/Import Configs 8. Workspace Setup 9. Health Check 10. Progress Bars
Notes
- All features should maintain modular architecture
- Add comprehensive logging for new features
- Update README with each release
- Keep Python type hints for all new code