Commit graph

59 commits

Author SHA1 Message Date
Hardik Zinzuvadiya
73980f1130 Fix codespell error: 'ags' flagged as misspelling in hint bar
Restructure the hint bar string so shortcut letters and their labels
are separate tokens ('t' + 'tags') instead of split across Rich markup
tags ('t' + 'ags') which codespell flagged as a misspelling.
2026-03-15 19:34:26 +05:30
Hardik Zinzuvadiya
511a651e0a UI: Dual-line prompt and inline /query search
Prompt style (all menus):
- Replace bare '>' with '╰─>' connected to the hint bar above
- Hint bar uses Claude CLI style: first letter highlighted in cyan,
  rest dimmed (/search  tags  recommend  ?help  quit)
- Creates a visual dual-line input area similar to Claude Code CLI

Inline search:
- Typing /subdomain at the main prompt immediately searches and
  shows results — no second "enter query" prompt needed
- /  (bare slash) still opens the interactive search prompt
- s  still works as a search alias
- search_tools() now accepts optional query parameter

core.py sub-menus:
- Same dual-line prompt style: hint bar + ╰─>
- Compact hint: ?help  quit  99 back
2026-03-15 18:37:20 +05:30
Hardik Zinzuvadiya
85f2ba0a75 Feature: Tool recommendations — "I want to do X" (r command)
- Add _RECOMMENDATIONS dict — maps 22 common tasks to tag names:
  "scan a network" → scanner, "crack passwords" → bruteforce/credentials,
  "pentest active directory" → active-directory, "pivot through network"
  → network, etc.
- Add recommend_tools() — shows numbered task list, user picks one,
  shows all matching tools with installed status, select to jump in
- Wire r/rec/recommend into interact_menu()
- Updated hint bar and help overlay
2026-03-15 18:15:06 +05:30
Hardik Zinzuvadiya
61690a427e Feature: Tag-based filtering with auto-derived tags (t command)
core.py:
- Add TAGS field to HackingTool class (list[str], default empty)
- Allows manual tag override per tool

hackingtool.py:
- Add _get_all_tags() — builds tag index from 19 regex rules that
  auto-derive tags from tool TITLE + DESCRIPTION (osint, scanner, c2,
  web, cloud, mobile, wireless, forensics, reversing, etc.)
- Manual TAGS on a tool class take priority over auto-derived
- Add filter_by_tag() — shows all available tags with tool counts,
  user picks a tag, results shown with installed status, select to
  jump directly into tool.show_options()
- Wire t/tag/tags/filter commands into interact_menu()
- Search also matches against TAGS field
- Updated hint bar: / search · t tags · ? help · q quit
- Updated help overlay with tag filter entry
2026-03-15 18:11:28 +05:30
Hardik Zinzuvadiya
043fa0e7b7 Feature: Search tools by name or keyword (/ or s)
- Add _collect_all_tools() — walks all collections recursively and
  returns (tool_instance, category_name) pairs for 185 tools
- Add search_tools() — prompts for query, matches against TITLE and
  DESCRIPTION (case-insensitive), shows results table with category,
  user selects a result number to jump directly into tool.show_options()
- Wire / and s commands into interact_menu()
- Add / search to help overlay and hint bar
- Fix ToolManager row number: was hardcoded 18, now computed dynamically
  from len(categories) + 1 (currently 21)
2026-03-15 18:05:11 +05:30
Hardik Zinzuvadiya
9b4b5236b2 Add 35 new tools across 3 new + 6 existing categories
New categories:
- tools/active_directory.py: BloodHound, NetExec (nxc), Impacket,
  Responder, Certipy, Kerbrute (6 tools)
- tools/cloud_security.py: Prowler, ScoutSuite, Pacu, Trivy (4 tools)
- tools/mobile_security.py: MobSF, Frida, Objection (3 tools)

Existing categories expanded:
- information_gathering.py: +SpiderFoot, Subfinder, TruffleHog, Gitleaks (4)
- web_attack.py: +Gobuster, Dirsearch, OWASP ZAP, testssl.sh, Arjun,
  Caido, mitmproxy (7)
- post_exploitation.py: +Sliver, Havoc, PEASS-ng, Ligolo-ng, Chisel,
  Evil-WinRM, Mythic (7)
- reverse_engineering.py: +Ghidra, Radare2 (2)
- forensics.py: +pspy (1)
- wireless_attack.py: +Bettercap (1)

hackingtool.py:
- Import 3 new category modules
- Add 3 new entries to tool_definitions (AD, Cloud, Mobile)
- Add 3 new instances to all_tools list
- Categories: 17 -> 20, total tools: 150+ -> 185+
- Help overlay updated for new range (1-20, 21=Update)
2026-03-15 17:58:45 +05:30
Hardik Zinzuvadiya
7b1950c9a5 Redesign header: full HACKING TOOL art + ? and q in all sub-menus
hackingtool.py:
- Replace 6-line "HT" art with full 12-line "HACKING TOOL" block letters
- Right side gains 3 more info lines: python version, arch, status
- 12 art lines paired with 12 stat lines for consistent separator
- Layout optimized for wide terminals (100+ chars); gracefully
  truncates on narrow ones

core.py — ? and q support in all sub-menus:
- Add _show_inline_help() function: compact navigation reference
  (1-N select, 99 back, 98 project page, ? help, q quit)
- HackingTool.show_options(): parse ? → inline help, q → SystemExit
- HackingToolsCollection.show_options(): same ? and q handling
- Both menus now show hint bar: "Enter number · ? help · q quit"
- Prompt changed from "[?] Select" to ">" for consistency with main menu
- q/quit/exit raises SystemExit(0) to cleanly exit from any depth
2026-03-15 17:28:21 +05:30
Hardik Zinzuvadiya
6eb287e3ac Redesign header: hacker split-layout with ASCII art + live system info
Replace compact text panel with a Metasploit-style split header:
- Left: "HT" block-letter ASCII art in bright green
- Vertical │ separator that runs the full height of the art block
- Right: live system stats — os, kernel, user@host, ip, tool count, session time
- Bottom: random hacker quote (10 options, changes on each launch)
- Bottom: authorized-use warning in dim red
- Panel title: '[ HackingTool v2.0.0 ]' left-aligned (terminal bracket style)
- Panel subtitle: '[ timestamp ]' right-aligned
- Border: bright_magenta HEAVY box

Live info gathered via platform, socket, os.getlogin() with fallbacks:
- OS: platform.freedesktop_os_release() → PRETTY_NAME, else platform.system()
- IP: UDP connect trick (no data sent, gets local outbound IP)
- User: os.getlogin() → USER env → LOGNAME env → 'root'
2026-03-15 17:05:10 +05:30
Hardik Zinzuvadiya
8aabb70e2c Redesign main menu: compact header, 2-column grid, 1-based numbering, ? help
Header:
- Replace 8-line pixelated ASCII logo with a compact 9-line styled panel
- Shows tool name, version, repo URL, and legal warning in one block
- Screen is now cleared inside build_menu() on each main menu render

Menu layout:
- Single narrow column → 2-column grid (9 left / 8 right)
- Full terminal width is used; short display labels prevent truncation
- tool_definitions gains a third field (menu_label) for the grid;
  full TITLE is still used when entering a category

Numbering:
- 0-based → 1-based throughout interact_menu()
- ToolManager is item 18 (was mislabeled 99, conflicting with exit)
- Input validation: 1 <= choice <= len(all_tools) → all_tools[choice - 1]

Commands:
- Add ? / help   → show Quick Help overlay (main/category/tool reference)
- Add q / quit / exit → clean exit with goodbye message
- Remove Confirm.ask("Return to main menu?") — pressing 99 in any
  sub-menu already returns here; the extra prompt was redundant friction
- Ctrl+C still works as force quit

Error messages updated to reflect new command set
2026-03-15 16:57:13 +05:30
Hardik Zinzuvadiya
4271cb8ef6 Phase 6: Naming & structure cleanup
- Rename tools/phising_attack.py → phishing_attack.py (fix typo)
- Rename tools/information_gathering_tools.py → information_gathering.py
- Rename tools/wireless_attack_tools.py → wireless_attack.py
- Rename tools/forensic_tools.py → forensics.py
- Rename tools/sql_tools.py → sql_injection.py
- Rename tools/webattack.py → web_attack.py
- Rename class autophisher → Autophisher (PEP-8 CapWords)
- Rename class ddos → DDoSTool (PEP-8 CapWords), TITLE "ddos" → "DDoS"
- Update all imports in hackingtool.py and exploit_frameworks.py
2026-03-15 13:55:05 +05:30
Hardik Zinzuvadiya
08f1e3e063 Phase 3: Installation & path overhaul 2026-03-15 13:54:30 +05:30
Modark
7df27d8383
Feat/rich UI menu lovely (#567) 2025-10-14 11:32:18 +05:30
Christian Clauss
8cd67f7a8e
Typo makedirs()!!!
Fixes #390
2023-07-18 14:21:52 +02:00
Hardik Zinzuvadiya
2dbf7730ea
Merge pull request #388 from cclauss/patch-4
GitHub Action to test the install process
2023-07-18 17:39:41 +05:30
Christian Clauss
6f55416aad
fpath 2023-07-18 12:34:48 +02:00
Christian Clauss
4e2e76935e
os.path.expanduser("~/hackingtoolpath.txt") 2023-07-18 12:34:07 +02:00
Christian Clauss
946151b211
Update hackingtool.py 2023-07-18 11:43:11 +02:00
Christian Clauss
8dff887a4b
Update hackingtool.py 2023-07-18 11:37:40 +02:00
Christian Clauss
bf5c1c9090
fpath = "~/hackingtoolpath.txt" 2023-07-18 11:25:04 +02:00
Christian Clauss
9b900d8779
Use Python os.makedirs() instead of os.makedir()
Fixes #384 

[`os.makedir()`](https://docs.python.org/3/library/os.html#os.makedir) is raising `FileNotFoundError` because a parent directory in the path does not exist so let's use [`os.makedirs()`](https://docs.python.org/3/library/os.html#os.makedirs) which will create any missing parent directories.
2023-07-18 08:17:15 +02:00
Christian Clauss
e885d19f8a
Minor fixes 2023-03-04 16:02:23 +01:00
furknozg
21394cda9f Syntax Fix for older versions of python 2022-09-15 13:15:25 +03:00
Christian Clauss
920a43ee38
Update hackingtool.py 2022-06-15 13:32:11 +02:00
Christian Clauss
a62716c5a4
Fix two mypy issues 2022-06-15 13:26:49 +02:00
mokrunka
fe08423827 update some more typos; change print from .format to f-strings for readability 2020-12-23 07:45:00 -08:00
mokrunka
3d435a4307 update some more typos; change print from .format to f-strings for readability 2020-12-20 19:31:50 -08:00
mokrunka
5157b9fc2e update some typos; clearly print the path for install regardless of install option 2020-12-15 10:30:24 -08:00
naveennamani
eaa920a7e3 Refactored the whole project
List of changes

+ Handling information about a tool has been improved a lot by providing a `HackingTool` class, which takes care of showing the options, running the selected option, executing the required commands
+ This class is designed with flexibililty and simplicity in mind, so adding a new tool is a lot easier, mention TITLE, DESCRIPTION, list of INSTALL_COMMANDS, RUN_COMMANDS and PROJECT_URL and there you go...

+ grouping all the `HackingTool`s is also made super simpler by providing a `HackingToolsCollection` class which groups the tools into their respective categories. Just add the instances of `HackingTool` classes to the TOOLS property of the `HackingToolsCollection`.

+ Refactored all the tools into separate files based on their categories.
+ Added a READM_template.md and generate_readme.py script to automatically generate Table of contents and the list of tools available automatically.
+ Now each tool in the README.md points to its project url if provided. This makes it easier to visit the project from the readme.
2020-08-14 16:41:59 +05:30
Michele Romano
4262cd9859
Minor fixes
Minor fixes regarding usage of `subprocess.run` in order to make it work correctly
2020-08-05 19:00:23 +02:00
Michele Romano
6e41f4a5ee
[FIX] Command injection
Fixed the issue using the `subprocess.run(["program", f"options"])` method which is safe for formatting `user-supplied` inputs inside commands to be `executed`
2020-08-05 18:30:09 +02:00
Mr.Z4nzu
66534bc874
New Tools Added 2020-07-21 21:51:56 +05:30
ellandor
d9bb166397
Update hackingtool.py 2020-07-18 15:28:01 -03:00
Mr.Z4nzu
9c40b366f8
Update hackingtool.py 2020-07-11 15:41:58 +05:30
Mr.Z4nzu
028cef9d09
Update hackingtool.py 2020-07-07 13:13:11 +05:30
Mr.Z4nzu
f69994f353
Update hackingtool.py 2020-07-05 22:31:19 +05:30
Mr.Z4nzu
86ad40cc11
Update hackingtool.py 2020-07-05 17:52:39 +05:30
Mr.Z4nzu
4e35ff8db7
Update hackingtool.py 2020-06-30 17:18:55 +05:30
Mr.Z4nzu
c4adbdbf44
Update hackingtool.py 2020-06-27 12:08:15 +05:30
Mr.Z4nzu
74acad1a77
Update hackingtool.py 2020-06-27 11:35:51 +05:30
Mr.Z4nzu
132c40899a
Fixing Errors 2020-06-26 22:19:29 +05:30
Mr.Z4nzu
1fc8bba9db
Update hackingtool.py 2020-06-19 20:14:27 +05:30
Mr.Z4nzu
7e7cfb1dec
Update hackingtool.py 2020-06-19 19:45:51 +05:30
Mr.Z4nzu
24b19e1e49
Changes 2020-04-19 13:09:33 +05:30
Mr.Z4nzu
cceea8a5d5
Fix 2020-04-15 22:53:24 +05:30
Mr.Z4nzu
e624217dd7
Error Fix 2020-04-15 22:52:01 +05:30
Mr.Z4nzu
df7076557c
error 2020-04-15 22:05:39 +05:30
Mr.Z4nzu
34889162c8
Fix Error 2020-04-15 22:02:40 +05:30
Mr.Z4nzu
366dbcd453
Fixing Error 2020-04-15 21:15:46 +05:30
Mr.Z4nzu
e85ae98a2c
Error Fixing 2020-04-15 20:29:03 +05:30
Mr.Z4nzu
1dccbaf0f1
Error Fix 2020-04-15 20:16:55 +05:30