Custom Bash and Python scripts used to automate various penetration testing tasks including recon, scanning, enumeration, and malicious payload creation using Metasploit. For use with Ubuntu. Limited support for Kali Linux.
This report summarizes scanner evidence for leebaird/discover, a Shell project with 3,936 GitHub stars. SynthScan examined 78,210 lines of code across 206 source files, recording 261 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 5.9 (Moderate 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? 124 finding(s).
Are imports declared and package/API names verified? 22 finding(s).
Are wrappers, guards, and repeated structures necessary? 160 finding(s).
Which changes need focused human review? 261 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 261 distinct pattern matches across 14 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 | misc/host-scan-statusd.py | 1404 | except KeyboardInterrupt: | CODE |
| HIGH | misc/host-scan-statusd.py | 195 | except Exception: | CODE |
| HIGH | misc/host-scan-statusd.py | 1409 | except OSError: | CODE |
| HIGH | misc/host-scan-statusd.py | 639 | except Exception: | CODE |
| HIGH | misc/op_notes.py | 64 | except OSError: | CODE |
| HIGH | misc/op_notes.py | 181 | except Exception: | CODE |
| HIGH | misc/op_notes.py | 55 | except OSError: | CODE |
| HIGH | parsers/social.py | 162 | except Exception: | CODE |
| HIGH | dev/lib/sensitive-scanner/engine.py | 354 | except requests.RequestException: | CODE |
| HIGH | dev/lib/sensitive-scanner/engine.py | 429 | except requests.RequestException: | CODE |
| HIGH | dev/lib/sensitive-scanner/engine.py | 452 | except requests.RequestException: | CODE |
| HIGH | dev/lib/waf-detect/wafw00f_run.py | 27 | except Exception: | CODE |
| HIGH | dev/lib/open-redirect-scanner/engine.py | 806 | except Exception: | CODE |
| HIGH | recon/active-tech.py | 2841 | except Exception: | CODE |
| HIGH | recon/active-tech.py | 2448 | except OSError: | CODE |
| HIGH | recon/active-tech.py | 1460 | except ValueError: | CODE |
| HIGH | recon/active-tech.py | 2442 | except OSError: | CODE |
| HIGH | recon/shodan-enrich.py | 695 | except OSError: | CODE |
| HIGH | recon/shodan-enrich.py | 701 | except OSError: | CODE |
| HIGH | recon/shodan-enrich.py | 720 | except (OSError, subprocess.TimeoutExpired): | CODE |
| HIGH | recon/shodan-enrich.py | 1061 | except Exception: | CODE |
| HIGH | recon/shodan-enrich.py | 440 | except OSError: | CODE |
| HIGH | recon/shodan-enrich.py | 449 | except OSError: | CODE |
| HIGH | recon/shodan-enrich.py | 633 | except Exception: | CODE |
| HIGH | recon/shodan-enrich.py | 258 | except OSError: | CODE |
| HIGH | recon/import-operator-package.py | 597 | except OSError: | CODE |
| HIGH | recon/import-operator-package.py | 777 | except Exception: | CODE |
| HIGH | recon/audit-build.py | 1223 | except Exception: | CODE |
| HIGH | recon/discover-config.py | 81 | except OSError: | CODE |
| HIGH | recon/discover-config.py | 137 | except OSError: | CODE |
| HIGH | recon/discover-config.py | 178 | except OSError: | CODE |
| HIGH | recon/discover-config.py | 318 | except OSError: | CODE |
| HIGH | recon/discover-config.py | 372 | except OSError: | CODE |
| HIGH | recon/discover-config.py | 366 | except FileNotFoundError: | CODE |
| HIGH | recon/software-cve.py | 358 | except Exception: | CODE |
| HIGH | recon/software-cve.py | 325 | except OSError: | CODE |
| HIGH | recon/software-cve.py | 341 | except OSError: | CODE |
| HIGH | recon/software-cve.py | 304 | except OSError: | CODE |
| HIGH | recon/software-cve.py | 332 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/host-scan-statusd.py | 174 | except Exception: | CODE |
| LOW | misc/host-scan-statusd.py | 195 | except Exception: | CODE |
| LOW | misc/host-scan-statusd.py | 563 | except Exception as exc: | CODE |
| LOW | misc/host-scan-statusd.py | 639 | except Exception: | CODE |
| LOW | misc/host-scan-statusd.py | 985 | except Exception as exc: | CODE |
| LOW | misc/host-scan-statusd.py | 1340 | except Exception as exc: | CODE |
| LOW | misc/op_notes.py | 52 | except Exception: | CODE |
| MEDIUM⚡ | misc/op_notes.py | 73 | print("Error: ~/.discover/client_secret.json not found.", file=sys.stderr) | CODE |
| LOW⚡ | misc/op_notes.py | 82 | except Exception: | CODE |
| LOW⚡ | misc/op_notes.py | 90 | except Exception: | CODE |
| MEDIUM⚡ | misc/op_notes.py | 91 | print("Error refreshing token.", file=sys.stderr) | CODE |
| LOW | misc/op_notes.py | 181 | except Exception: | CODE |
| LOW | misc/op_notes.py | 225 | except Exception as exc: | CODE |
| MEDIUM | misc/op_notes.py | 226 | print(f"Error syncing to Google Sheet: {exc}", file=sys.stderr) | CODE |
| LOW | misc/open-ffuf-tabs.sh | 110 | except Exception: | CODE |
| LOW | misc/open-ffuf-tabs.sh | 144 | except Exception: | CODE |
| LOW | misc/update.sh | 456 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 231 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 249 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 1646 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 1843 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 2064 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 2149 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 2291 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 2313 | except Exception: | CODE |
| LOW | misc/run-host-scan.sh | 2336 | except Exception: | CODE |
| LOW | parsers/parse-burp.py | 30 | except Exception as ex: | CODE |
| LOW | parsers/social.py | 162 | except Exception: | CODE |
| MEDIUM | parsers/parse-nessus-feed.py | 63 | print("Error writing CSV file. Check for permissions and/or path.\n") | CODE |
| MEDIUM | parsers/parse-nessus-feed.py | 76 | print("Error writing remainder of the column data to file. Check for permissions and/or path.") | CODE |
| MEDIUM | parsers/parse-nessus-feed.py | 93 | print("Error reading/parsing XML file. Its likely that the XML file is mangled in some way.") | CODE |
| LOW | dev/lib/sensitive-scanner/engine.py | 398 | except Exception as exc: | CODE |
| LOW | dev/lib/waf-detect/wafw00f_run.py | 27 | except Exception: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 234 | except Exception as exc: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 258 | except Exception as exc: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 395 | except Exception: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 424 | except Exception: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 452 | except Exception: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 585 | except Exception as exc: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 680 | except Exception as exc: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 697 | except Exception as exc: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 806 | except Exception: | CODE |
| LOW | recon/import-subdomains.sh | 310 | except Exception as exc: | CODE |
| LOW | recon/passive.sh | 493 | except Exception as exc: | CODE |
| LOW | recon/active-tech.py | 1226 | except Exception: | CODE |
| LOW | recon/active-tech.py | 1698 | except Exception: | CODE |
| LOW | recon/active-tech.py | 1791 | except Exception: | CODE |
| LOW | recon/active-tech.py | 1817 | except Exception: | CODE |
| LOW | recon/active-tech.py | 2841 | except Exception: | CODE |
| LOW | recon/shodan-enrich.py | 75 | except Exception: | CODE |
| LOW | recon/shodan-enrich.py | 633 | except Exception: | CODE |
| LOW | recon/shodan-enrich.py | 1061 | except Exception: | CODE |
| LOW | recon/import-operator-package.py | 92 | except Exception: | CODE |
| LOW | recon/import-operator-package.py | 154 | except Exception: | CODE |
| LOW | recon/import-operator-package.py | 624 | except Exception as exc: | CODE |
| LOW | recon/import-operator-package.py | 646 | except Exception as exc: | CODE |
| LOW | recon/import-operator-package.py | 777 | except Exception: | CODE |
| LOW | recon/audit-build.py | 60 | except Exception: | CODE |
| LOW | recon/audit-build.py | 138 | except Exception: | CODE |
| LOW | recon/audit-build.py | 303 | except Exception: | CODE |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/host-scan-statusd.py | 160 | def load_discover_config_module(discover_root: Path): | CODE |
| LOW | misc/host-scan-statusd.py | 178 | def shodan_api_key_configured(discover_root: Path) -> bool: | CODE |
| LOW | parsers/parse-burp.py | 119 | def parse_vulnerability_classifications(html_content): | CODE |
| LOW | parsers/company.py | 153 | def extract_contact_from_html(html: str) -> tuple[list[str], str] | None: | CODE |
| LOW | dev/lib/open-redirect-scanner/engine.py | 315 | def location_points_to_canary(location: str, canary: str, base_url: str) -> bool: | CODE |
| LOW | report/assets/javascript/inc-host-scan.js | 1587 | function hostScanArtifactAbsolutePath(relFromPages) { | CODE |
| LOW | report/assets/javascript/inc-active-align.js | 106 | function matchTechnologiesWidthToWebservers() { | CODE |
| LOW | recon/import-subdomains.sh | 1056 | def rows_from_subdomain_objects(rows): | CODE |
| LOW | recon/active-tech.py | 123 | def normalize_tech_separators(value): | CODE |
| LOW | recon/active-tech.py | 275 | def whatweb_has_password_field(plugins) -> bool: | CODE |
| LOW | recon/active-tech.py | 533 | def strip_redundant_technology_labels(technologies, webserver): | CODE |
| LOW | recon/active-tech.py | 555 | def strip_noise_technology_labels(technologies): | CODE |
| LOW | recon/active-tech.py | 590 | def strip_runtime_when_product(technologies, extra: str = ""): | CODE |
| LOW | recon/active-tech.py | 608 | def strip_generic_when_specific(technologies): | CODE |
| LOW | recon/active-tech.py | 648 | def append_control_m_from_row(technologies, title: str = "", host: str = "") -> str: | CODE |
| LOW | recon/active-tech.py | 661 | def strip_redundant_webserver_tokens(webserver, technologies): | CODE |
| LOW | recon/active-tech.py | 1172 | def _load_software_cve_module(): | CODE |
| LOW | recon/active-tech.py | 1180 | def enrich_software_rows_for_report( | CODE |
| LOW | recon/active-tech.py | 1580 | def is_generic_http_auth_title(title: str) -> bool: | CODE |
| LOW | recon/active-tech.py | 1649 | def is_microsoft_login_redirect(tech: dict | None) -> bool: | CODE |
| LOW | recon/active-tech.py | 1702 | def citrix_gateway_uses_microsoft_sso(host: str, timeout: float = 12.0) -> bool: | CODE |
| LOW | recon/active-tech.py | 2166 | def is_software_version_label(label): | CODE |
| LOW | recon/active-tech.py | 2489 | def write_subdomains_active_page(report_dir: str) -> dict: | CODE |
| LOW | recon/shodan-enrich.py | 63 | def _load_software_cve_module() -> Any | None: | CODE |
| LOW | recon/shodan-enrich.py | 404 | def report_has_shodan_artifacts(report_dir: str) -> bool: | CODE |
| LOW | recon/import-operator-package.py | 526 | def count_operator_audit_lines(source: Path, operator: str) -> int: | CODE |
| LOW | recon/audit-build.py | 95 | def normalize_audit_display_ts(s: str) -> str: | CODE |
| LOW | recon/audit-build.py | 180 | def _extract_command_from_output_text(text: str) -> str: | CODE |
| LOW | recon/audit-build.py | 307 | def _duration_for_finished_scan( | CODE |
| LOW | recon/audit-build.py | 435 | def _is_finished_host_scan_action(action: str) -> bool: | CODE |
| LOW | recon/audit-build.py | 447 | def _audit_action_hides_operator_ip(action: str) -> bool: | CODE |
| LOW | recon/audit-build.py | 533 | def delete_audit_line_by_hash(report_root: Path, line_hash: str) -> dict: | CODE |
| LOW | recon/audit-build.py | 608 | def _newest_host_scan_tool_meta(tool_dir: Path) -> dict: | CODE |
| LOW | recon/audit-build.py | 796 | def _robots_disallow_has_dirs(list_disk: Path) -> bool: | CODE |
| LOW | recon/audit-build.py | 814 | def _host_scan_finding_url_count(json_disk: Path) -> int: | CODE |
| LOW | recon/audit-build.py | 874 | def build_host_scan_output_index(report_root: Path) -> dict[str, dict[str, dict]]: | CODE |
| LOW | recon/audit-build.py | 1158 | def _software_product_from_action(action: str) -> str: | CODE |
| LOW | recon/audit-build.py | 1479 | def _metrics_range_select_html(selected: str) -> str: | CODE |
| LOW | recon/audit-build.py | 1497 | def _render_metrics_panel_body(metrics: dict) -> str: | CODE |
| LOW | recon/discover-config.py | 183 | def rewrite_audit_operator_name(report_root: Path, old_name: str, new_name: str) -> int: | CODE |
| LOW | recon/software-cve.py | 258 | def migrate_legacy_api_key_files() -> list[str]: | CODE |
| LOW | recon/software-cve.py | 412 | def _parse_nvd_vulnerabilities(payload: dict[str, Any]) -> list[dict[str, Any]]: | CODE |
| LOW | recon/software-cve.py | 700 | def enrich_software_version_rows( | CODE |
| LOW | recon/software-cve.py | 901 | def write_cve_software_index_js(cache_path: str) -> str: | CODE |
| LOW | recon/import-names-titles-emails.sh | 393 | def format_names_report_lines(contacts): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/host-scan-statusd.py | 178 | CODE | |
| LOW | misc/host-scan-statusd.py | 200 | CODE | |
| LOW | misc/host-scan-statusd.py | 282 | CODE | |
| LOW | parsers/parse-burp.py | 63 | CODE | |
| LOW | parsers/parse-burp.py | 83 | CODE | |
| LOW | parsers/social.py | 156 | CODE | |
| LOW | parsers/social.py | 237 | CODE | |
| LOW | parsers/company.py | 212 | CODE | |
| LOW | parsers/sec_people.py | 256 | CODE | |
| LOW | parsers/sec_people.py | 98 | CODE | |
| LOW | parsers/sec_common.py | 60 | CODE | |
| LOW | parsers/parse-nexpose.py | 65 | CODE | |
| LOW | parsers/parse-nipper.py | 75 | CODE | |
| LOW | parsers/parse-nessus-feed.py | 85 | CODE | |
| LOW | parsers/parse-nmap.py | 76 | CODE | |
| LOW | notes/build.py | 68 | CODE | |
| LOW | dev/lib/sensitive-scanner/engine.py | 102 | CODE | |
| LOW | dev/lib/sensitive-scanner/engine.py | 302 | CODE | |
| LOW | dev/lib/sensitive-scanner/filescan.py | 189 | CODE | |
| LOW | dev/lib/sensitive-scanner/filescan.py | 239 | CODE | |
| LOW | dev/lib/open-redirect-scanner/engine.py | 161 | CODE | |
| LOW | dev/lib/open-redirect-scanner/engine.py | 193 | CODE | |
| LOW | dev/lib/open-redirect-scanner/engine.py | 206 | CODE | |
| LOW | dev/lib/open-redirect-scanner/engine.py | 241 | CODE | |
| LOW | dev/lib/open-redirect-scanner/engine.py | 662 | CODE | |
| LOW | recon/active-tech.py | 244 | CODE | |
| LOW | recon/active-tech.py | 324 | CODE | |
| LOW | recon/active-tech.py | 661 | CODE | |
| LOW | recon/active-tech.py | 744 | CODE | |
| LOW | recon/active-tech.py | 848 | CODE | |
| LOW | recon/active-tech.py | 892 | CODE | |
| LOW | recon/active-tech.py | 1851 | CODE | |
| LOW | recon/active-tech.py | 2232 | CODE | |
| LOW | recon/shodan-enrich.py | 97 | CODE | |
| LOW | recon/shodan-enrich.py | 421 | CODE | |
| LOW | recon/shodan-enrich.py | 559 | CODE | |
| LOW | recon/shodan-enrich.py | 724 | CODE | |
| LOW | recon/import-operator-package.py | 104 | CODE | |
| LOW | recon/audit-build.py | 180 | CODE | |
| LOW | recon/audit-build.py | 307 | CODE | |
| LOW | recon/audit-build.py | 608 | CODE | |
| LOW | recon/audit-build.py | 685 | CODE | |
| LOW | recon/audit-build.py | 814 | CODE | |
| LOW | recon/audit-build.py | 886 | CODE | |
| LOW | recon/audit-build.py | 1285 | CODE | |
| LOW | recon/discover-config.py | 432 | CODE | |
| LOW | recon/software-cve.py | 238 | CODE | |
| LOW | recon/software-cve.py | 346 | CODE | |
| LOW | recon/software-cve.py | 953 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | old/deploy/main.tf | 16 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | old/deploy/main.tf | 45 | # --------------------------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | recon/import-subdomains.sh | 758 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | recon/import-subdomains.sh | 760 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | recon/import-subdomains.sh | 990 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | recon/import-subdomains.sh | 992 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | recon/active.sh | 1173 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | recon/active.sh | 1176 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/host-scan-statusd.py | 41 | CODE | |
| LOW | misc/op_notes.py | 16 | CODE | |
| LOW | parsers/social.py | 4 | CODE | |
| LOW | parsers/company.py | 4 | CODE | |
| LOW | parsers/sec_people.py | 4 | CODE | |
| LOW | parsers/sec_common.py | 4 | CODE | |
| LOW | notes/build.py | 4 | CODE | |
| LOW | dev/lib/sensitive-scanner/engine.py | 4 | CODE | |
| LOW | dev/lib/sensitive-scanner/filescan.py | 4 | CODE | |
| LOW | dev/lib/waf-detect/wafw00f_run.py | 4 | CODE | |
| LOW | dev/lib/web-api-scanner/msf_parse.py | 4 | CODE | |
| LOW | dev/lib/web-api-scanner/msf_parse.py | 9 | CODE | |
| LOW | dev/lib/open-redirect-scanner/engine.py | 6 | CODE | |
| LOW | recon/shodan-enrich.py | 27 | CODE | |
| LOW | recon/import-operator-package.py | 17 | CODE | |
| LOW | recon/touch-report-date.py | 13 | CODE | |
| LOW | recon/audit-build.py | 6 | CODE | |
| LOW | recon/discover-config.py | 19 | CODE | |
| LOW | recon/software-cve.py | 18 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | old/dns-reverse.sh | 21 | # Check if class is empty or invalid | COMMENT |
| LOW | old/dns-reverse.sh | 37 | # Check if the host command returns a valid PTR record | COMMENT |
| LOW | old/compare-sites.sh | 112 | # Check if selected versions are valid | COMMENT |
| LOW | old/rebrand.sh | 39 | # Check if index.htm exists | COMMENT |
| LOW | old/wtf.sh | 97 | # Check if the interface is in monitor | COMMENT |
| LOW | old/wtf.sh | 131 | # Check if the process is still running before trying to kill it | COMMENT |
| LOW | old/wtf.sh | 138 | # Check if the scan file exists | COMMENT |
| LOW | old/dns-transfer.sh | 53 | # Check if the DNS zone transfer is successful | COMMENT |
| LOW | dev/lib/container-scanner/k8s.sh | 18 | # Check if kubectl can connect to a cluster | COMMENT |
| LOW | dev/lib/container-scanner/docker.sh | 33 | # Check if there are any images | COMMENT |
| LOW | dev/lib/container-scanner/docker.sh | 407 | # Check if there are any containers | COMMENT |
| LOW | dev/lib/container-scanner/docker.sh | 483 | # Check if container is running in privileged mode | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | discover.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | discover.sh | 21 | # Matt Banick - original development | COMMENT |
| LOW | misc/open-ffuf-tabs.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | misc/run-host-scan.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | misc/open-robots-tabs.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | misc/patch-droopescan-py314.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | parsers/parse-nessus-feed.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | dev/cloud-scanner.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | dev/web-api-scanner.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | dev/container-scanner.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | resource/user-agent.txt | 1 | # Discover scanner User-Agent (Microsoft Edge on Windows). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | report/assets/javascript/jquery.min.js | 4 | return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{marginLeft | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | misc/open-theharvester-keys.sh | 9 | # Usage: | COMMENT |
| LOW | misc/open-ffuf-tabs.sh | 9 | # Usage: | COMMENT |
| LOW | misc/open-nmap-web-tabs.sh | 8 | # Usage: | COMMENT |
| LOW | misc/open-robots-tabs.sh | 9 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | dev/api-scanner.sh | 551 | # Scan orchestration | COMMENT |
| MEDIUM | dev/lib/web-api-scanner/probe.sh | 1 | # Technology fingerprinting and scan orchestration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | dev/lib/sensitive-scanner/run-tests.sh | 31 | grep -q 'your-api-key' "$OUT/hits.jsonl" && fail "denylist allows placeholder" || pass "denylist filters placeholder" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | dev/lib/container-scanner/k8s.sh | 523 | # Create comprehensive Kubernetes security summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dev/lib/sensitive-scanner/run-tests.sh | 32 | grep -q 'user@example.com' "$OUT/hits.jsonl" && fail "denylist allows example email" || pass "denylist filters example e | CODE |