ALL IN ONE Hacking Tool For Hackers
This report summarizes scanner evidence for Z4nzu/hackingtool, a Python project with 80,709 GitHub stars. SynthScan examined 17,726 lines of code across 123 source files, recording 511 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 68.9 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 231 finding(s).
Are imports declared and package/API names verified? 216 finding(s).
Are wrappers, guards, and repeated structures necessary? 271 finding(s).
Which changes need focused human review? 511 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 511 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | src/hackingtool/os_detect.py | 87 | "apt-get": "apt-get update -qq && apt-get upgrade -y", | CODE |
| HIGH⚡ | src/hackingtool/os_detect.py | 91 | "apk": "apk update && apk upgrade", | CODE |
| HIGH⚡ | src/hackingtool/os_detect.py | 92 | "brew": "brew update && brew upgrade", | CODE |
| HIGH⚡ | src/hackingtool/os_detect.py | 93 | "pkg": "pkg update && pkg upgrade -y", | CODE |
| HIGH | src/hackingtool/tools/steganography.py | 64 | "cd StegoCracker && python3 -m pip install -r requirements.txt", | CODE |
| HIGH | src/hackingtool/tools/xss_attack.py | 127 | "&& cd XSStrike && pip install -r requirements.txt" | CODE |
| HIGH | src/hackingtool/tools/reverse_engineering.py | 45 | "java -version 2>&1 | grep -q 'version' && cd jadx && ./gradlew dist || echo '[ERROR] Java not found. Install: s | CODE |
| HIGH⚡ | src/hackingtool/tools/reverse_engineering.py | 60 | "sudo apt-get install -y ghidra || echo 'Download from https://ghidra-sre.org/'", | CODE |
| HIGH⚡ | src/hackingtool/tools/reverse_engineering.py | 62 | RUN_COMMANDS = ["ghidra --help || echo 'Run: ghidraRun'"] | CODE |
| HIGH⚡ | src/hackingtool/tools/reverse_engineering.py | 72 | "cd radare2 && sys/install.sh", | CODE |
| HIGH | src/hackingtool/tools/exploit_frameworks.py | 15 | "cd routersploit && sudo python3 -m pip install -r requirements.txt" | CODE |
| HIGH | src/hackingtool/tools/exploit_frameworks.py | 17 | RUN_COMMANDS = ["cd routersploit && sudo python3 rsf.py"] | CODE |
| HIGH | src/hackingtool/tools/exploit_frameworks.py | 28 | "git clone https://github.com/The404Hacking/websploit.git;cd websploit/Setup;sudo chmod +x install.sh && sudo ba | CODE |
| HIGH | src/hackingtool/tools/exploit_frameworks.py | 45 | "cd commix && pip install --user .", | CODE |
| HIGH | src/hackingtool/tools/exploit_frameworks.py | 48 | RUN_COMMANDS = ["cd commix && sudo python3 commix.py --wizard"] | CODE |
| HIGH | src/hackingtool/tools/anonsurf.py | 17 | "cd kali-anonsurf && sudo ./installer.sh", | CODE |
| HIGH | src/hackingtool/tools/anonsurf.py | 37 | "cd multitor && sudo bash setup.sh install", | CODE |
| HIGH | src/hackingtool/tools/forensics.py | 56 | "[magenta]If you get an error after clone go to /java_gui/src/ and compile the .jar file && run ./BEViewer[/ | CODE |
| HIGH | src/hackingtool/tools/forensics.py | 102 | "cd volatility3 && pip install --user -r requirements.txt", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 67 | "git clone https://github.com/UndeadSec/SocialFish.git && sudo apt-get install python3 python3-pip python3-dev - | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 68 | "cd SocialFish && sudo python3 -m pip install -r requirements.txt", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 70 | RUN_COMMANDS = ["cd SocialFish && sudo python3 SocialFish.py root pass"] | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 83 | "git clone https://github.com/Morsmalleo/HiddenEye.git && chmod -R 755 HiddenEye", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 84 | "cd HiddenEye && sudo pip3 install -r requirements.txt && pip3 install pyngrok", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 86 | RUN_COMMANDS = ["cd HiddenEye && sudo python3 HiddenEye.py"] | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 119 | "cd I-See-You && sudo chmod u+x ISeeYou.sh", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 121 | RUN_COMMANDS = ["cd I-See-You && sudo bash ISeeYou.sh"] | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 130 | RUN_COMMANDS = ["cd saycheese && sudo bash saycheese.sh"] | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 139 | "git clone https://github.com/cryptedwolf/ohmyqr.git && sudo apt -y install scrot", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 141 | RUN_COMMANDS = ["cd ohmyqr && sudo bash ohmyqr.sh"] | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 195 | "tar -xzf /tmp/geckodriver.tar.gz -C /tmp && sudo mv /tmp/geckodriver /usr/local/bin/", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 196 | "cd QRLJacking && pip3 install --user -r QRLJacker/requirements.txt", | CODE |
| HIGH⚡ | src/hackingtool/tools/phishing_attack.py | 198 | RUN_COMMANDS = ["cd QRLJacking/QRLJacker && python3 QrlJacker.py"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 15 | RUN_COMMANDS = ["cd autophisher && sudo bash autophisher.sh"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 29 | RUN_COMMANDS = ["cd PyPhisher && sudo python3 pyphisher.py"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 41 | "cd AdvPhishing && chmod +x Linux-Setup.sh && bash Linux-Setup.sh", | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 43 | RUN_COMMANDS = ["cd AdvPhishing && sudo bash AdvPhishing.sh"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 56 | "cd social-engineer-toolkit && pip install --user .", | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 157 | RUN_COMMANDS = ["cd blackeye && sudo bash blackeye.sh"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 168 | RUN_COMMANDS = ["cd shellphish && sudo bash shellphish.sh"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 181 | "cd Thanos && chmod +x Thanos.sh", | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 183 | RUN_COMMANDS = ["cd Thanos && sudo bash Thanos.sh"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 209 | RUN_COMMANDS = ["cd maskphish && sudo bash maskphish.sh"] | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 220 | "cd BlackPhish && sudo bash install.sh", | CODE |
| HIGH | src/hackingtool/tools/phishing_attack.py | 222 | RUN_COMMANDS = ["cd BlackPhish && sudo python3 blackphish.py"] | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 16 | "cd wifipumpkin3 && pip install --user .", | CODE |
| HIGH⚡ | src/hackingtool/tools/wireless_attack.py | 33 | "git clone https://github.com/wiire/pixiewps.git && apt-get -y install build-essential", | CODE |
| HIGH⚡ | src/hackingtool/tools/wireless_attack.py | 34 | "cd pixiewps && make", | CODE |
| HIGH⚡ | src/hackingtool/tools/wireless_attack.py | 35 | "cd pixiewps && sudo make install", | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 60 | "sudo tar xfz bluepot-0.2.tar.gz && sudo rm bluepot-0.2.tar.gz", | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 62 | RUN_COMMANDS = ["cd bluepot && sudo java -jar bluepot.jar"] | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 73 | "cd fluxion && chmod +x fluxion.sh", | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 75 | RUN_COMMANDS = ["cd fluxion && sudo bash fluxion.sh -i"] | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 90 | "cd wifiphisher && pip install --user .", | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 92 | RUN_COMMANDS = ["cd wifiphisher && sudo wifiphisher"] | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 103 | "cd wifite2 && pip install --user .", | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 120 | RUN_COMMANDS = ["cd fakeap && sudo bash fakeap.sh"] | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 135 | "git clone https://github.com/Z4nzu/fastssh.git && cd fastssh && chmod +x fastssh.sh", | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 138 | RUN_COMMANDS = ["cd fastssh && sudo bash fastssh.sh --scan"] | CODE |
| HIGH | src/hackingtool/tools/wireless_attack.py | 172 | RUN_COMMANDS = ["cd airgeddon && sudo bash airgeddon.sh"] | CODE |
| 59 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_registry.py | 27 | def test_catalog_loads_something(all_catalog_tools): | CODE |
| LOW | tests/test_registry.py | 31 | def test_all_tags_within_taxonomy(all_catalog_tools): | CODE |
| LOW | tests/test_registry.py | 45 | def test_resources_are_well_formed(all_catalog_tools): | CODE |
| LOW⚡ | tests/test_registry.py | 56 | def test_install_tools_have_usage(all_catalog_tools): | CODE |
| LOW⚡ | tests/test_registry.py | 62 | def test_install_tools_have_an_install_method(all_catalog_tools): | CODE |
| LOW⚡ | tests/test_registry.py | 69 | def test_new_category_wiring_is_consistent(reg): | CODE |
| LOW⚡ | tests/test_registry.py | 76 | def test_known_entries_round_trip(all_catalog_tools): | CODE |
| LOW | tests/test_registry.py | 87 | def test_install_command_derivation(): | CODE |
| LOW | tests/test_registry.py | 100 | def test_overlay_enriches_existing_tool_by_title(tmp_path): | CODE |
| LOW | tests/test_registry.py | 129 | def test_shipped_nmap_overlay_applies(): | STRING |
| LOW | tests/test_registry.py | 138 | def test_adding_a_tool_is_one_yaml_entry(tmp_path): | CODE |
| LOW | tests/test_ai_recommend.py | 6 | def test_parse_drops_fabricated_tags(): | CODE |
| LOW⚡ | tests/test_ai_recommend.py | 18 | def test_keyword_match_offline(): | CODE |
| LOW⚡ | tests/test_ai_recommend.py | 26 | def test_suggest_tags_none_when_unreachable(monkeypatch): | CODE |
| LOW⚡ | tests/test_ai_recommend.py | 32 | def test_suggest_tags_filters_model_reply(monkeypatch): | CODE |
| LOW⚡ | tests/test_ai_recommend.py | 39 | def test_resolve_falls_back_to_keywords(monkeypatch): | CODE |
| LOW⚡ | tests/test_ai_recommend.py | 44 | def test_resolve_prefers_ai_when_present(monkeypatch): | CODE |
| LOW⚡ | tests/test_ai_recommend.py | 58 | def test_test_connection_byo_ok(monkeypatch): | CODE |
| LOW | tests/test_ai_recommend.py | 71 | def test_test_connection_reports_missing_key(monkeypatch): | CODE |
| LOW | tests/test_ai_recommend.py | 80 | def test_test_connection_surfaces_http_error(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 35 | def test_refuse_jamming_offers_auditing_alternative(): | CODE |
| LOW⚡ | tests/test_discover.py | 42 | def test_refuse_ddos_is_plain_refusal_no_alternative(): | CODE |
| LOW⚡ | tests/test_discover.py | 48 | def test_allowed_need_returns_empty_string(): | CODE |
| LOW⚡ | tests/test_discover.py | 53 | def test_refuse_is_case_insensitive(): | CODE |
| LOW⚡ | tests/test_discover.py | 57 | def test_defensive_malware_analysis_needs_are_allowed(): | CODE |
| LOW⚡ | tests/test_discover.py | 63 | def test_offensive_botnet_ransomware_construction_is_refused(): | CODE |
| LOW⚡ | tests/test_discover.py | 106 | def test_false_positive_carve_out_is_scoped_to_evasion(need): | CODE |
| LOW⚡ | tests/test_discover.py | 114 | def test_analyst_false_positive_phrasing_is_still_allowed(): | CODE |
| LOW⚡ | tests/test_discover.py | 123 | def test_offensive_jammer_and_flood_phrasing_is_refused(need): | CODE |
| LOW⚡ | tests/test_discover.py | 131 | def test_generated_owners_file_is_current(): | CODE |
| LOW⚡ | tests/test_discover.py | 140 | def test_known_good_owners_are_present(): | CODE |
| LOW⚡ | tests/test_discover.py | 145 | def test_non_owner_path_segments_are_excluded(): | CODE |
| LOW⚡ | tests/test_discover.py | 155 | def test_docs_repo_matches_on_name_only(): | CODE |
| LOW⚡ | tests/test_discover.py | 161 | def test_docs_repo_does_not_match_real_tools(): | CODE |
| LOW⚡ | tests/test_discover.py | 175 | def test_trusted_owner_scores_higher(): | CODE |
| LOW⚡ | tests/test_discover.py | 181 | def test_stale_repo_is_demoted_not_excluded(): | CODE |
| LOW⚡ | tests/test_discover.py | 189 | def test_archived_and_disabled_are_excluded_entirely(): | CODE |
| LOW⚡ | tests/test_discover.py | 193 | def test_log_flattening_keeps_a_canonical_tool_above_a_bigger_awesome_list(): | CODE |
| LOW⚡ | tests/test_discover.py | 312 | def test_why_records_matched_relevance_terms(): | CODE |
| LOW⚡ | tests/test_discover.py | 321 | def test_rewrite_hidden_directories_is_web_fuzzing_not_active_directory(): | CODE |
| LOW⚡ | tests/test_discover.py | 330 | def test_rewrite_wifi_resolves_to_wireless(): | CODE |
| LOW⚡ | tests/test_discover.py | 337 | def test_rewrite_kubernetes_resolves(): | CODE |
| LOW⚡ | tests/test_discover.py | 344 | def test_rewrite_falls_back_to_keyword_match(): | CODE |
| LOW⚡ | tests/test_discover.py | 353 | def test_rewrite_raw_fallback_for_unknown_need(): | CODE |
| LOW⚡ | tests/test_discover.py | 359 | def test_every_intent_tag_is_in_the_taxonomy(): | CODE |
| LOW⚡ | tests/test_discover.py | 365 | def test_every_jargon_is_at_most_three_terms(): | CODE |
| LOW⚡ | tests/test_discover.py | 371 | def test_every_intent_regex_compiles_and_has_a_topic(): | CODE |
| LOW⚡ | tests/test_discover.py | 377 | def test_rewrite_is_deterministic(): | CODE |
| LOW⚡ | tests/test_discover.py | 391 | def test_find_on_refused_need_never_touches_the_network(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 400 | def test_find_returns_ranked_repos(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 409 | def test_find_dedupes_across_both_arms(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 416 | def test_search_returns_empty_on_network_error(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 425 | def test_search_returns_empty_on_bad_json(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 448 | def test_find_survives_a_non_dict_search_response(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 456 | def test_rate_limit_note_mentions_the_token(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 465 | def test_empty_need_is_handled(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 470 | def test_token_never_appears_in_a_cache_key(monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 477 | def test_run_prints_refusal_and_alternative(capsys, monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 485 | def test_run_shows_clone_line_but_never_executes(capsys, monkeypatch): | CODE |
| LOW⚡ | tests/test_discover.py | 493 | def test_run_survives_offline(capsys, monkeypatch): | CODE |
| 147 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_ai_recommend.py | 49 | # ── /config test connection probe ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_prompt.py | 15 | # ── dispatch: global commands ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_prompt.py | 60 | # ── dispatch: mentions → Open(raw) ─────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_prompt.py | 70 | # ── dispatch: bare text is context-aware ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_prompt.py | 86 | # ── open_mention: injectable, actually opens ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_prompt.py | 94 | # ── status line ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_prompt.py | 106 | # ── simple: readline fallback, no escape leak ──────────────────────────────── | COMMENT |
| MEDIUM | tests/test_prompt.py | 126 | # ── /run &, /panes, /attach, /kill, /config, live status ──────────────────── | COMMENT |
| MEDIUM | tests/test_repl.py | 7 | # ── Fakes ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_repl.py | 21 | # ── Completer ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_repl.py | 64 | # ── _resolve ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_repl.py | 80 | # ── dispatch (via the shared surface) ──────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_skill.py | 9 | # ── charter / version ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_skill.py | 42 | # ── clean / wrap / sanitize ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_skill.py | 61 | # ── composition: every AI feature prepends the charter ──────────────────────── | COMMENT |
| MEDIUM | tests/test_skill.py | 91 | # ── /skill REPL command ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_config.py | 135 | # ── config_ui (modal editor) ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_config.py | 169 | # ── /config github (discover token check) ────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/os_detect.py | 39 | # ── Linux-specific ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/os_detect.py | 62 | # ── Package manager detection (in priority order) ────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/os_detect.py | 75 | # ── Per-OS package manager commands ──────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/config.py | 102 | # ── /config settings surface ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/config.py | 178 | # ── AI transport settings ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/hackingtool/constants.py | 5 | # ── Repository ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/hackingtool/constants.py | 11 | # ── Versioning ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/hackingtool/constants.py | 15 | # ── Python requirement ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/hackingtool/constants.py | 18 | # ── User-scoped paths (cross-platform, always computed at runtime) ───────────── | COMMENT |
| MEDIUM⚡ | src/hackingtool/constants.py | 27 | # ── System install paths (set per OS) ───────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/constants.py | 42 | # ── UI theme ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/constants.py | 77 | # ── Default config values ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/constants.py | 92 | # ── Privilege escalation ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 4 | # ── Python version guard (must be before any other local import) ─────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 66 | # ── Tool registry ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 119 | # ── Data-driven catalog (M3) ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 142 | # ── Help overlay ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 181 | # ── Header: ASCII art + live system info ────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 309 | # ── Main menu renderer ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 369 | # ── Search ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 648 | # ── Main interaction loop ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 725 | # ── Entry point ──────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_engagement.py | 2 | CODE | |
| LOW | tests/test_findings.py | 3 | CODE | |
| LOW | scripts/discover_tools.py | 33 | CODE | |
| LOW | scripts/apply_archive.py | 14 | CODE | |
| LOW | scripts/audit_tools.py | 24 | CODE | |
| LOW | src/hackingtool/config_ui.py | 13 | CODE | |
| LOW | src/hackingtool/repl.py | 17 | CODE | |
| LOW | src/hackingtool/repl.py | 187 | CODE | |
| LOW | src/hackingtool/discover.py | 8 | CODE | |
| LOW | src/hackingtool/ai_goal.py | 1 | CODE | |
| LOW | src/hackingtool/session.py | 9 | CODE | |
| LOW | src/hackingtool/core.py | 5 | CODE | |
| LOW | src/hackingtool/core.py | 19 | CODE | |
| LOW | src/hackingtool/core.py | 19 | CODE | |
| LOW | src/hackingtool/cli.py | 24 | CODE | |
| LOW | src/hackingtool/cli.py | 28 | CODE | |
| LOW | src/hackingtool/cli.py | 32 | CODE | |
| LOW | src/hackingtool/prompt.py | 13 | CODE | |
| LOW | src/hackingtool/prompt.py | 291 | CODE | |
| LOW | src/hackingtool/prompt.py | 371 | CODE | |
| LOW | src/hackingtool/report.py | 5 | CODE | |
| LOW | src/hackingtool/tools/other_tools.py | 1 | CODE | |
| LOW | src/hackingtool/tools/other_tools.py | 4 | CODE | |
| LOW | src/hackingtool/tools/other_tools.py | 16 | CODE | |
| LOW | src/hackingtool/tools/steganography.py | 6 | CODE | |
| LOW | src/hackingtool/tools/steganography.py | 7 | CODE | |
| LOW | src/hackingtool/tools/xss_attack.py | 1 | CODE | |
| LOW | src/hackingtool/tools/reverse_engineering.py | 3 | CODE | |
| LOW | src/hackingtool/tools/reverse_engineering.py | 5 | CODE | |
| LOW | src/hackingtool/tools/reverse_engineering.py | 6 | CODE | |
| LOW | src/hackingtool/tools/exploit_frameworks.py | 1 | CODE | |
| LOW | src/hackingtool/tools/exploit_frameworks.py | 4 | CODE | |
| LOW | src/hackingtool/tools/exploit_frameworks.py | 5 | CODE | |
| LOW | src/hackingtool/tools/exploit_frameworks.py | 6 | CODE | |
| LOW | src/hackingtool/tools/anonsurf.py | 1 | CODE | |
| LOW | src/hackingtool/tools/forensics.py | 1 | CODE | |
| LOW | src/hackingtool/tools/phishing_attack.py | 1 | CODE | |
| LOW | src/hackingtool/tools/phishing_attack.py | 3 | CODE | |
| LOW | src/hackingtool/tools/wireless_attack.py | 1 | CODE | |
| LOW | src/hackingtool/tools/payload_creator.py | 1 | CODE | |
| LOW | src/hackingtool/tools/wordlist_generator.py | 1 | CODE | |
| LOW | src/hackingtool/tools/wordlist_generator.py | 2 | CODE | |
| LOW | src/hackingtool/tools/wordlist_generator.py | 5 | CODE | |
| LOW | src/hackingtool/tools/post_exploitation.py | 1 | CODE | |
| LOW | src/hackingtool/tools/post_exploitation.py | 5 | CODE | |
| LOW | src/hackingtool/tools/post_exploitation.py | 6 | CODE | |
| LOW | src/hackingtool/tools/remote_administration.py | 1 | CODE | |
| LOW | src/hackingtool/tools/remote_administration.py | 3 | CODE | |
| LOW | src/hackingtool/tools/remote_administration.py | 4 | CODE | |
| LOW | src/hackingtool/tools/web_attack.py | 2 | CODE | |
| LOW | src/hackingtool/tools/web_attack.py | 4 | CODE | |
| LOW | src/hackingtool/tools/web_attack.py | 5 | CODE | |
| LOW | src/hackingtool/tools/ddos.py | 5 | CODE | |
| LOW | src/hackingtool/tools/information_gathering.py | 1 | CODE | |
| LOW | src/hackingtool/tools/information_gathering.py | 5 | CODE | |
| LOW | src/hackingtool/tools/sql_injection.py | 1 | CODE | |
| LOW | src/hackingtool/tools/sql_injection.py | 3 | CODE | |
| LOW | src/hackingtool/tools/sql_injection.py | 4 | CODE | |
| LOW | src/hackingtool/tools/others/hash_crack.py | 1 | CODE | |
| LOW | src/hackingtool/tools/others/hash_crack.py | 3 | CODE | |
| 37 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_prompt.py | 122 | except SystemExit: | CODE |
| HIGH | src/hackingtool/os_detect.py | 44 | except (FileNotFoundError, PermissionError): | CODE |
| HIGH | src/hackingtool/config.py | 226 | except OSError: | CODE |
| HIGH | src/hackingtool/config.py | 80 | except OSError: | CODE |
| HIGH | src/hackingtool/discover.py | 488 | except (OSError, ValueError): | CODE |
| HIGH | src/hackingtool/discover.py | 498 | except (OSError, TypeError): | CODE |
| HIGH | src/hackingtool/discover.py | 521 | except ValueError: | CODE |
| HIGH | src/hackingtool/ai_goal.py | 140 | except OSError: | CODE |
| HIGH | src/hackingtool/ai_goal.py | 226 | except OSError: | CODE |
| HIGH | src/hackingtool/core.py | 54 | except (TypeError, ValueError): | CODE |
| HIGH | src/hackingtool/cli.py | 823 | except (EOFError, KeyboardInterrupt): | CODE |
| HIGH | src/hackingtool/prompt.py | 372 | except ImportError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/hackingtool/os_detect.py | 20 | CODE | |
| LOW | src/hackingtool/config_ui.py | 54 | CODE | |
| LOW | src/hackingtool/config_ui.py | 71 | CODE | |
| LOW | src/hackingtool/repl.py | 58 | CODE | |
| LOW | src/hackingtool/discover.py | 683 | CODE | |
| LOW | src/hackingtool/core.py | 185 | CODE | |
| LOW | src/hackingtool/core.py | 277 | CODE | |
| LOW | src/hackingtool/core.py | 346 | CODE | |
| LOW | src/hackingtool/core.py | 456 | CODE | |
| LOW | src/hackingtool/core.py | 499 | CODE | |
| LOW | src/hackingtool/core.py | 646 | CODE | |
| LOW | src/hackingtool/cli.py | 650 | CODE | |
| LOW | src/hackingtool/cli.py | 796 | CODE | |
| LOW | src/hackingtool/orchestrator.py | 28 | CODE | |
| LOW | src/hackingtool/ai_recommend.py | 161 | CODE | |
| LOW | src/hackingtool/prompt.py | 113 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/hackingtool/registry.py | 218 | except Exception: | CODE |
| LOW | src/hackingtool/discover.py | 579 | except Exception: | CODE |
| LOW | src/hackingtool/discover.py | 790 | except Exception as exc: | CODE |
| LOW | src/hackingtool/core.py | 340 | except Exception: | CODE |
| LOW | src/hackingtool/core.py | 386 | except Exception as e: # network / HTTP / TLS errors | CODE |
| LOW | src/hackingtool/core.py | 715 | except Exception: | CODE |
| LOW | src/hackingtool/core.py | 723 | except Exception: | CODE |
| LOW | src/hackingtool/cli.py | 220 | except Exception: | CODE |
| LOW | src/hackingtool/cli.py | 230 | except Exception: | CODE |
| LOW | src/hackingtool/cli.py | 242 | except Exception: | CODE |
| LOW | src/hackingtool/cli.py | 710 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/hackingtool/skill.py | 29 | # without guardrails. | COMMENT |
| MEDIUM | src/hackingtool/cli.py | 832 | config.ensure_user_files() # first run: scaffold config.json + commented .env | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/release.yml | 1 | name: release | COMMENT |
| LOW | src/hackingtool/config.py | 41 | def save(cfg: dict[str, Any]) -> None: | COMMENT |
| LOW | src/hackingtool/discover.py | 41 | _DOC_LANGS = {None, "", "Markdown", "HTML", "TeX"} | COMMENT |
| LOW | src/hackingtool/catalog/remote_administration.yaml | 1 | # Remote Administration (RATs / C2) — the existing Python collection's only tool | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/hackingtool/core.py | 205 | # Check if git clone target dir exists | COMMENT |
| LOW | src/hackingtool/cli.py | 572 | # Display results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/hackingtool/config.py | 11 | logger = logging.getLogger(__name__) | CODE |