E-mails, subdomains and names Harvester - OSINT
This report presents the forensic synthetic code analysis of laramies/theHarvester, a Python project with 16,785 GitHub stars. SynthScan v2.0 examined 64,060 lines of code across 128 source files, recording 473 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 9.5 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 473 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/discovery/test_thc.py | 153 | except Exception: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 166 | except Exception: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 179 | except Exception: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 192 | except Exception: | CODE |
| MEDIUM⚡ | theHarvester/__main__.py | 1090 | print(f'Error in Shodan search: {e}') | CODE |
| MEDIUM | theHarvester/__main__.py | 234 | print(f'Error initializing StashManager: {init_error}') | CODE |
| MEDIUM | theHarvester/__main__.py | 1951 | def entry_point() -> None: | CODE |
| LOW⚡ | theHarvester/__main__.py | 1089 | except Exception as e: | CODE |
| LOW⚡ | theHarvester/__main__.py | 1097 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 448 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 462 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 476 | except Exception as ex: | CODE |
| LOW | theHarvester/__main__.py | 493 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 507 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 514 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 544 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 564 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 578 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 595 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 610 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 621 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 635 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 656 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 674 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 692 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 703 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 734 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 741 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 754 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 773 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 787 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 796 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 814 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 832 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 845 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 862 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 879 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 908 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 935 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 943 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 954 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 977 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 992 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 999 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1019 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1036 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1053 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1121 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1141 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1149 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1160 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1174 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1188 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1218 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1235 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1246 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1261 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1268 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1287 | except Exception as e: | CODE |
| LOW | theHarvester/__main__.py | 1313 | except Exception as e: | CODE |
| 212 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_hackertarget_apikey.py | 9 | async def test_do_search_with_apikey(self, monkeypatch): | CODE |
| LOW | tests/test_hackertarget_apikey.py | 28 | async def test_do_search_without_apikey(self, monkeypatch): | CODE |
| LOW | tests/test_security.py | 15 | def test_cors_does_not_allow_credentials_with_wildcard_origins(self): | CODE |
| LOW | tests/test_security.py | 44 | def test_cors_restricts_http_methods(self): | CODE |
| LOW | tests/test_security.py | 78 | def test_sanitize_for_xml_escapes_special_characters(self): | CODE |
| LOW | tests/test_security.py | 100 | def test_sanitize_for_xml_prevents_xml_entity_injection(self): | CODE |
| LOW | tests/test_security.py | 117 | def test_command_line_args_are_sanitized_in_xml_output(self): | CODE |
| LOW | tests/test_security.py | 149 | def test_api_does_not_expose_traceback_in_error_responses(self, client): | CODE |
| LOW | tests/test_security.py | 165 | def test_error_responses_do_not_leak_internal_paths(self, client): | CODE |
| LOW | tests/test_security.py | 190 | def test_debug_mode_does_not_expose_sensitive_info(self, client, monkeypatch): | CODE |
| LOW⚡ | tests/test_security.py | 216 | def test_additional_endpoints_fail_closed_without_configured_api_key(self, client, monkeypatch): | CODE |
| LOW⚡ | tests/test_security.py | 223 | def test_additional_endpoints_reject_missing_or_invalid_api_key(self, client, monkeypatch): | CODE |
| LOW⚡ | tests/test_security.py | 232 | def test_additional_endpoints_do_not_expose_internal_errors(self, client, monkeypatch): | CODE |
| LOW | tests/test_security.py | 257 | def test_sanitize_filename_removes_path_components(self): | CODE |
| LOW | tests/test_security.py | 284 | def test_sanitize_filename_removes_dangerous_characters(self): | CODE |
| LOW | tests/test_security.py | 311 | def test_sanitize_filename_prevents_hidden_files(self): | CODE |
| LOW | tests/test_security.py | 324 | def test_filename_sanitization_preserves_safe_filenames(self): | CODE |
| LOW | tests/test_security.py | 342 | def test_path_traversal_in_file_operations(self): | CODE |
| LOW | tests/test_security.py | 367 | def test_no_hardcoded_secrets_in_code(self): | CODE |
| LOW | tests/test_security.py | 404 | def test_api_has_rate_limiting(self): | CODE |
| LOW | tests/test_security.py | 414 | def test_sensitive_endpoints_require_validation(self): | CODE |
| LOW | tests/discovery/test_rocketreach.py | 29 | async def test_do_search_uses_people_data_endpoint_and_start_pagination(monkeypatch) -> None: | CODE |
| LOW | tests/discovery/test_rocketreach.py | 98 | async def test_do_search_stops_on_throttling_message(monkeypatch) -> None: | CODE |
| LOW | tests/discovery/test_dymosearch.py | 38 | async def test_process_extracts_canonical_and_suggestion(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_dymosearch.py | 82 | async def test_process_handles_empty_payload(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_dymosearch.py | 98 | async def test_process_ignores_unrelated_suggestion(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_dymosearch.py | 120 | async def test_process_handles_non_dict_response(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_dymosearch.py | 137 | def test_module_exposes_class(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_dymosearch.py | 142 | def test_supportedengines_lists_dymo(self): | CODE |
| LOW | tests/discovery/test_censys.py | 38 | async def test_search_uses_documented_pagination_and_fields(monkeypatch) -> None: | CODE |
| LOW | tests/discovery/test_censys.py | 77 | async def test_search_respects_limit_across_page_data(monkeypatch) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 32 | async def test_api_subdomains_download_endpoint_responds(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 146 | async def test_search_nonexistent_domain(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 172 | async def test_search_special_characters_domain(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 185 | async def test_search_unicode_domain(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 198 | async def test_search_subdomain_as_input(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 220 | async def test_process_accepts_proxy_parameter(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 231 | async def test_proxy_attribute_is_set(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 249 | def test_init_creates_empty_results(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 255 | def test_init_proxy_default_false(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 260 | def test_init_has_rate_limit_settings(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 268 | def test_class_has_required_methods(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 290 | async def test_hostnames_are_strings(self) -> None: | CODE |
| LOW⚡ | tests/discovery/test_thc.py | 336 | async def test_module_can_be_imported(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 43 | async def test_api_subdomains_returns_text_format(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 55 | async def test_api_cli_subdomain_endpoint(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 66 | async def test_api_returns_rate_limit_headers(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 104 | async def test_search_finds_subdomains(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 115 | async def test_search_results_contain_target_domain(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 127 | async def test_search_no_duplicates(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 302 | async def test_hostnames_are_valid_format(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 316 | async def test_hostnames_are_lowercase(self) -> None: | CODE |
| LOW | tests/discovery/test_thc.py | 348 | async def test_compatible_with_store_function(self) -> None: | CODE |
| LOW | tests/discovery/test_githubcode_additions.py | 10 | async def test_process_stops_after_max_retries(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_githubcode_additions.py | 36 | async def test_process_stops_on_error_result(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_githubcode_additions.py | 59 | async def test_process_breaks_on_same_page_pagination(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_baidusearch.py | 50 | async def test_pagination_limit_exclusive(self, monkeypatch): | CODE |
| LOW | tests/discovery/test_githubcode.py | 63 | async def test_fragments_from_response(self): | CODE |
| LOW | tests/discovery/test_githubcode.py | 73 | async def test_invalid_fragments_from_response(self): | CODE |
| LOW | tests/discovery/test_githubcode.py | 96 | async def test_infinite_loop_fix_page_zero(self): | CODE |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/discovery/test_thc.py | 25 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 27 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 139 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 141 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 209 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 211 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 237 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 239 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 279 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 281 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 328 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | tests/discovery/test_thc.py | 330 | # ============================================================================= | COMMENT |
| MEDIUM | tests/discovery/test_thc.py | 78 | # ============================================================================= | COMMENT |
| MEDIUM | tests/discovery/test_thc.py | 80 | # ============================================================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | theHarvester/__main__.py | 111 | CODE | |
| LOW | theHarvester/parsers/venacusparser.py | 38 | CODE | |
| LOW | theHarvester/parsers/securitytrailsparser.py | 11 | CODE | |
| LOW | theHarvester/parsers/intelxparser.py | 6 | CODE | |
| LOW | theHarvester/discovery/fofa.py | 50 | CODE | |
| LOW | theHarvester/discovery/rocketreach.py | 21 | CODE | |
| LOW | theHarvester/discovery/bitbucket.py | 109 | CODE | |
| LOW | theHarvester/discovery/certspottersearch.py | 10 | CODE | |
| LOW | theHarvester/discovery/search_dnsdumpster.py | 16 | CODE | |
| LOW | theHarvester/discovery/censysearch.py | 36 | CODE | |
| LOW | theHarvester/discovery/duckduckgosearch.py | 32 | CODE | |
| LOW | theHarvester/discovery/leaklookup.py | 20 | CODE | |
| LOW | theHarvester/discovery/mojeek.py | 24 | CODE | |
| LOW | theHarvester/discovery/thc.py | 18 | CODE | |
| LOW | theHarvester/discovery/hudsonrocksearch.py | 209 | CODE | |
| LOW | theHarvester/discovery/hudsonrocksearch.py | 302 | CODE | |
| LOW | theHarvester/discovery/rapiddns.py | 13 | CODE | |
| LOW | theHarvester/discovery/zoomeyesearch.py | 260 | CODE | |
| LOW | theHarvester/discovery/githubcode.py | 113 | CODE | |
| LOW | theHarvester/discovery/chaos.py | 47 | CODE | |
| LOW | theHarvester/discovery/builtwith.py | 46 | CODE | |
| LOW | theHarvester/discovery/criminalip.py | 186 | CODE | |
| LOW | theHarvester/discovery/robtex.py | 44 | CODE | |
| LOW | theHarvester/discovery/onyphe.py | 35 | CODE | |
| LOW | theHarvester/discovery/waybackarchive.py | 31 | CODE | |
| LOW | theHarvester/discovery/leakix.py | 42 | CODE | |
| LOW | theHarvester/discovery/bravesearch.py | 22 | CODE | |
| LOW | theHarvester/discovery/api_endpoints.py | 477 | CODE | |
| LOW | theHarvester/discovery/api_endpoints.py | 539 | CODE | |
| LOW | theHarvester/discovery/threatcrowd.py | 38 | CODE | |
| LOW | theHarvester/discovery/additional_apis.py | 110 | CODE | |
| LOW | theHarvester/discovery/commoncrawl.py | 58 | CODE | |
| LOW | theHarvester/discovery/search_dehashed.py | 26 | CODE | |
| LOW | theHarvester/discovery/gitlabsearch.py | 75 | CODE | |
| LOW | theHarvester/discovery/gitlabsearch.py | 136 | CODE | |
| LOW | theHarvester/discovery/windvane.py | 85 | CODE | |
| LOW | theHarvester/discovery/windvane.py | 125 | CODE | |
| LOW | theHarvester/discovery/windvane.py | 169 | CODE | |
| LOW | theHarvester/discovery/windvane.py | 202 | CODE | |
| LOW | theHarvester/discovery/windvane.py | 244 | CODE | |
| LOW | theHarvester/discovery/shodansearch.py | 18 | CODE | |
| LOW | theHarvester/lib/stash.py | 170 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | theHarvester/__main__.py | 1532 | # Check if Rest API is being used if so return found hosts | COMMENT |
| LOW | theHarvester/__main__.py | 1657 | # Check if the result is a string (error message) | COMMENT |
| LOW | theHarvester/__main__.py | 1818 | # Print results | COMMENT |
| LOW⚡ | theHarvester/discovery/waybackarchive.py | 59 | # Check if it's a subdomain of our target | COMMENT |
| LOW | theHarvester/discovery/leakix.py | 66 | # Check if the response is an error message | COMMENT |
| LOW | theHarvester/discovery/api_endpoints.py | 606 | # Check if rate limited | COMMENT |
| LOW | theHarvester/discovery/api_endpoints.py | 615 | # Check if this is an interesting endpoint | COMMENT |
| LOW | theHarvester/discovery/commoncrawl.py | 92 | # Check if it's a subdomain of our target | COMMENT |
| LOW | theHarvester/discovery/windvane.py | 99 | # Check if response is successful | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | theHarvester/discovery/fullhuntsearch.py | 216 | """Get comprehensive details about a domain""" | STRING |
| MEDIUM | theHarvester/discovery/constants.py | 93 | # That means we will try out second option which will utilize proxies | COMMENT |
| MEDIUM | theHarvester/discovery/securitytrailssearch.py | 19 | # Hold structured responses for robust parsing | COMMENT |
| MEDIUM | theHarvester/discovery/securitytrailssearch.py | 38 | # Request JSON payloads for robust parsing | COMMENT |
| MEDIUM | theHarvester/discovery/api_endpoints.py | 106 | # Add comprehensive API paths categorized by functionality | COMMENT |
| MEDIUM | theHarvester/discovery/api_endpoints.py | 725 | """Get a comprehensive summary of scan results. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_security.py | 4 | CODE | |
| LOW | tests/discovery/test_certspotter.py | 10 | CODE | |
| LOW | tests/discovery/test_otx.py | 9 | CODE | |
| LOW | tests/lib/test_core.py | 1 | CODE | |
| LOW | tests/lib/test_output.py | 1 | CODE | |
| LOW | theHarvester/lib/hostchecker.py | 7 | CODE | |
| LOW | theHarvester/lib/core.py | 1 | CODE | |
| LOW | theHarvester/lib/output.py | 1 | CODE | |
| LOW | theHarvester/lib/api/api.py | 7 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/discovery/test_censys.py | 52 | {'names': ['a.example.com'], 'parsed': {'subject': {'email_address': 'admin@example.com'}}}, | CODE |
| LOW | tests/discovery/test_censys.py | 73 | assert await search.get_emails() == {'admin@example.com', 'ops@example.com'} | CODE |
| LOW | tests/discovery/test_builtwith.py | 33 | monkeypatch.setattr(builtwith.Core, 'builtwith_key', lambda: 'dummy-key') | CODE |
| LOW | tests/discovery/test_builtwith.py | 92 | monkeypatch.setattr(builtwith.Core, 'builtwith_key', lambda: 'dummy-key') | CODE |
| LOW | tests/discovery/test_sherlockeye.py | 31 | monkeypatch.setattr(sherlockeye.Core, 'sherlockeye_key', lambda: 'dummy-key') | CODE |
| LOW | tests/discovery/test_sherlockeye.py | 48 | 'email': 'user@example.com', | CODE |
| LOW⚡ | tests/discovery/test_sherlockeye.py | 97 | assert await search.get_emails() == {'user@example.com'} | CODE |
| LOW⚡ | tests/discovery/test_sherlockeye.py | 103 | monkeypatch.setattr(sherlockeye.Core, 'sherlockeye_key', lambda: 'dummy-key') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | theHarvester/__main__.py | 1780 | # Define a default wordlist if none is specified | COMMENT |
| MEDIUM | theHarvester/__main__.py | 1786 | # Create a default simple API endpoint list | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | theHarvester/__main__.py | 321 | CODE | |
| LOW | theHarvester/discovery/api_endpoints.py | 52 | CODE | |
| LOW | theHarvester/lib/core.py | 580 | CODE | |
| LOW | theHarvester/lib/api/api.py | 288 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | theHarvester/discovery/windvane.py | 306 | def set_api_key(self, api_key: str) -> None: | CODE |
| LOW | theHarvester/lib/__init__.py | 1 | __all__ = ['hostchecker'] | CODE |
| LOW | theHarvester/lib/api/additional_endpoints.py | 11 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | theHarvester/lib/hostchecker.py | 21 | self.hosts: list[str] = hosts | COMMENT |
| LOW | .github/workflows/codeql-analysis.yml | 1 | # For most projects, this workflow file will not need changing; you simply need | COMMENT |
| LOW | .github/workflows/codeql-analysis.yml | 61 | # Prefix the list here with "+" to use these queries and those in the config file. | COMMENT |