Repository Analysis

laramies/theHarvester

E-mails, subdomains and names Harvester - OSINT

9.1 Low AI signal View on GitHub
9.1
Adjusted Score
9.1
Raw Score
100%
Time Factor
2026-05-28
Last Push
16,359
Stars
Python
Language
63,582
Lines of Code
125
Files
447
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 91LOW 356

Pattern Findings

447 matches across 10 categories. Click a row to expand file-level details.

Excessive Try-Catch Wrapping269 hits · 341 pts
SeverityFileLineSnippet
LOWtests/discovery/test_thc.py153 except Exception:
LOWtests/discovery/test_thc.py166 except Exception:
LOWtests/discovery/test_thc.py179 except Exception:
LOWtests/discovery/test_thc.py192 except Exception:
MEDIUMtheHarvester/__main__.py1069 print(f'Error in Shodan search: {e}')
MEDIUMtheHarvester/__main__.py232 print(f'Error initializing StashManager: {init_error}')
MEDIUMtheHarvester/__main__.py1917def entry_point() -> None:
LOWtheHarvester/__main__.py1068 except Exception as e:
LOWtheHarvester/__main__.py1076 except Exception as e:
LOWtheHarvester/__main__.py446 except Exception as e:
LOWtheHarvester/__main__.py460 except Exception as e:
LOWtheHarvester/__main__.py474 except Exception as ex:
LOWtheHarvester/__main__.py491 except Exception as e:
LOWtheHarvester/__main__.py505 except Exception as e:
LOWtheHarvester/__main__.py512 except Exception as e:
LOWtheHarvester/__main__.py542 except Exception as e:
LOWtheHarvester/__main__.py562 except Exception as e:
LOWtheHarvester/__main__.py576 except Exception as e:
LOWtheHarvester/__main__.py593 except Exception as e:
LOWtheHarvester/__main__.py608 except Exception as e:
LOWtheHarvester/__main__.py619 except Exception as e:
LOWtheHarvester/__main__.py633 except Exception as e:
LOWtheHarvester/__main__.py654 except Exception as e:
LOWtheHarvester/__main__.py672 except Exception as e:
LOWtheHarvester/__main__.py690 except Exception as e:
LOWtheHarvester/__main__.py701 except Exception as e:
LOWtheHarvester/__main__.py732 except Exception as e:
LOWtheHarvester/__main__.py739 except Exception as e:
LOWtheHarvester/__main__.py752 except Exception as e:
LOWtheHarvester/__main__.py771 except Exception as e:
LOWtheHarvester/__main__.py785 except Exception as e:
LOWtheHarvester/__main__.py794 except Exception as e:
LOWtheHarvester/__main__.py812 except Exception as e:
LOWtheHarvester/__main__.py830 except Exception as e:
LOWtheHarvester/__main__.py843 except Exception as e:
LOWtheHarvester/__main__.py860 except Exception as e:
LOWtheHarvester/__main__.py877 except Exception as e:
LOWtheHarvester/__main__.py906 except Exception as e:
LOWtheHarvester/__main__.py933 except Exception as e:
LOWtheHarvester/__main__.py941 except Exception as e:
LOWtheHarvester/__main__.py952 except Exception as e:
LOWtheHarvester/__main__.py975 except Exception as e:
LOWtheHarvester/__main__.py990 except Exception as e:
LOWtheHarvester/__main__.py997 except Exception as e:
LOWtheHarvester/__main__.py1017 except Exception as e:
LOWtheHarvester/__main__.py1034 except Exception as e:
LOWtheHarvester/__main__.py1100 except Exception as e:
LOWtheHarvester/__main__.py1120 except Exception as e:
LOWtheHarvester/__main__.py1128 except Exception as e:
LOWtheHarvester/__main__.py1139 except Exception as e:
LOWtheHarvester/__main__.py1153 except Exception as e:
LOWtheHarvester/__main__.py1167 except Exception as e:
LOWtheHarvester/__main__.py1197 except Exception as e:
LOWtheHarvester/__main__.py1214 except Exception as e:
LOWtheHarvester/__main__.py1225 except Exception as e:
LOWtheHarvester/__main__.py1240 except Exception as e:
LOWtheHarvester/__main__.py1247 except Exception as e:
LOWtheHarvester/__main__.py1266 except Exception as e:
LOWtheHarvester/__main__.py1292 except Exception as e:
LOWtheHarvester/__main__.py1310 except Exception as e:
209 more matches not shown…
Hyper-Verbose Identifiers92 hits · 89 pts
SeverityFileLineSnippet
LOWtests/test_hackertarget_apikey.py9 async def test_do_search_with_apikey(self, monkeypatch):
LOWtests/test_hackertarget_apikey.py28 async def test_do_search_without_apikey(self, monkeypatch):
LOWtests/test_security.py15 def test_cors_does_not_allow_credentials_with_wildcard_origins(self):
LOWtests/test_security.py44 def test_cors_restricts_http_methods(self):
LOWtests/test_security.py78 def test_sanitize_for_xml_escapes_special_characters(self):
LOWtests/test_security.py100 def test_sanitize_for_xml_prevents_xml_entity_injection(self):
LOWtests/test_security.py117 def test_command_line_args_are_sanitized_in_xml_output(self):
LOWtests/test_security.py149 def test_api_does_not_expose_traceback_in_error_responses(self, client):
LOWtests/test_security.py165 def test_error_responses_do_not_leak_internal_paths(self, client):
LOWtests/test_security.py190 def test_debug_mode_does_not_expose_sensitive_info(self, client, monkeypatch):
LOWtests/test_security.py216 def test_additional_endpoints_fail_closed_without_configured_api_key(self, client, monkeypatch):
LOWtests/test_security.py223 def test_additional_endpoints_reject_missing_or_invalid_api_key(self, client, monkeypatch):
LOWtests/test_security.py232 def test_additional_endpoints_do_not_expose_internal_errors(self, client, monkeypatch):
LOWtests/test_security.py257 def test_sanitize_filename_removes_path_components(self):
LOWtests/test_security.py284 def test_sanitize_filename_removes_dangerous_characters(self):
LOWtests/test_security.py311 def test_sanitize_filename_prevents_hidden_files(self):
LOWtests/test_security.py324 def test_filename_sanitization_preserves_safe_filenames(self):
LOWtests/test_security.py342 def test_path_traversal_in_file_operations(self):
LOWtests/test_security.py367 def test_no_hardcoded_secrets_in_code(self):
LOWtests/test_security.py404 def test_api_has_rate_limiting(self):
LOWtests/test_security.py414 def test_sensitive_endpoints_require_validation(self):
LOWtests/discovery/test_rocketreach.py29async def test_do_search_uses_people_data_endpoint_and_start_pagination(monkeypatch) -> None:
LOWtests/discovery/test_rocketreach.py98async def test_do_search_stops_on_throttling_message(monkeypatch) -> None:
LOWtests/discovery/test_dymosearch.py38 async def test_process_extracts_canonical_and_suggestion(self, monkeypatch):
LOWtests/discovery/test_dymosearch.py82 async def test_process_handles_empty_payload(self, monkeypatch):
LOWtests/discovery/test_dymosearch.py98 async def test_process_ignores_unrelated_suggestion(self, monkeypatch):
LOWtests/discovery/test_dymosearch.py120 async def test_process_handles_non_dict_response(self, monkeypatch):
LOWtests/discovery/test_dymosearch.py137 def test_module_exposes_class(self, monkeypatch):
LOWtests/discovery/test_dymosearch.py142 def test_supportedengines_lists_dymo(self):
LOWtests/discovery/test_censys.py38async def test_search_uses_documented_pagination_and_fields(monkeypatch) -> None:
LOWtests/discovery/test_censys.py77async def test_search_respects_limit_across_page_data(monkeypatch) -> None:
LOWtests/discovery/test_thc.py32 async def test_api_subdomains_download_endpoint_responds(self) -> None:
LOWtests/discovery/test_thc.py146 async def test_search_nonexistent_domain(self) -> None:
LOWtests/discovery/test_thc.py172 async def test_search_special_characters_domain(self) -> None:
LOWtests/discovery/test_thc.py185 async def test_search_unicode_domain(self) -> None:
LOWtests/discovery/test_thc.py198 async def test_search_subdomain_as_input(self) -> None:
LOWtests/discovery/test_thc.py220 async def test_process_accepts_proxy_parameter(self) -> None:
LOWtests/discovery/test_thc.py231 async def test_proxy_attribute_is_set(self) -> None:
LOWtests/discovery/test_thc.py249 def test_init_creates_empty_results(self) -> None:
LOWtests/discovery/test_thc.py255 def test_init_proxy_default_false(self) -> None:
LOWtests/discovery/test_thc.py260 def test_init_has_rate_limit_settings(self) -> None:
LOWtests/discovery/test_thc.py268 def test_class_has_required_methods(self) -> None:
LOWtests/discovery/test_thc.py290 async def test_hostnames_are_strings(self) -> None:
LOWtests/discovery/test_thc.py336 async def test_module_can_be_imported(self) -> None:
LOWtests/discovery/test_thc.py43 async def test_api_subdomains_returns_text_format(self) -> None:
LOWtests/discovery/test_thc.py55 async def test_api_cli_subdomain_endpoint(self) -> None:
LOWtests/discovery/test_thc.py66 async def test_api_returns_rate_limit_headers(self) -> None:
LOWtests/discovery/test_thc.py104 async def test_search_finds_subdomains(self) -> None:
LOWtests/discovery/test_thc.py115 async def test_search_results_contain_target_domain(self) -> None:
LOWtests/discovery/test_thc.py127 async def test_search_no_duplicates(self) -> None:
LOWtests/discovery/test_thc.py302 async def test_hostnames_are_valid_format(self) -> None:
LOWtests/discovery/test_thc.py316 async def test_hostnames_are_lowercase(self) -> None:
LOWtests/discovery/test_thc.py348 async def test_compatible_with_store_function(self) -> None:
LOWtests/discovery/test_githubcode_additions.py10 async def test_process_stops_after_max_retries(self, monkeypatch):
LOWtests/discovery/test_githubcode_additions.py36 async def test_process_stops_on_error_result(self, monkeypatch):
LOWtests/discovery/test_githubcode_additions.py59 async def test_process_breaks_on_same_page_pagination(self, monkeypatch):
LOWtests/discovery/test_baidusearch.py50 async def test_pagination_limit_exclusive(self, monkeypatch):
LOWtests/discovery/test_githubcode.py63 async def test_fragments_from_response(self):
LOWtests/discovery/test_githubcode.py73 async def test_invalid_fragments_from_response(self):
LOWtests/discovery/test_githubcode.py96 async def test_infinite_loop_fix_page_zero(self):
32 more matches not shown…
Decorative Section Separators14 hits · 60 pts
SeverityFileLineSnippet
MEDIUMtests/discovery/test_thc.py25# =============================================================================
MEDIUMtests/discovery/test_thc.py27# =============================================================================
MEDIUMtests/discovery/test_thc.py139# =============================================================================
MEDIUMtests/discovery/test_thc.py141# =============================================================================
MEDIUMtests/discovery/test_thc.py209# =============================================================================
MEDIUMtests/discovery/test_thc.py211# =============================================================================
MEDIUMtests/discovery/test_thc.py237# =============================================================================
MEDIUMtests/discovery/test_thc.py239# =============================================================================
MEDIUMtests/discovery/test_thc.py279# =============================================================================
MEDIUMtests/discovery/test_thc.py281# =============================================================================
MEDIUMtests/discovery/test_thc.py328# =============================================================================
MEDIUMtests/discovery/test_thc.py330# =============================================================================
MEDIUMtests/discovery/test_thc.py78# =============================================================================
MEDIUMtests/discovery/test_thc.py80# =============================================================================
Deep Nesting42 hits · 40 pts
SeverityFileLineSnippet
LOWtheHarvester/__main__.py110
LOWtheHarvester/parsers/venacusparser.py38
LOWtheHarvester/parsers/securitytrailsparser.py11
LOWtheHarvester/parsers/intelxparser.py6
LOWtheHarvester/discovery/fofa.py50
LOWtheHarvester/discovery/rocketreach.py21
LOWtheHarvester/discovery/bitbucket.py109
LOWtheHarvester/discovery/certspottersearch.py10
LOWtheHarvester/discovery/search_dnsdumpster.py16
LOWtheHarvester/discovery/censysearch.py36
LOWtheHarvester/discovery/duckduckgosearch.py32
LOWtheHarvester/discovery/leaklookup.py20
LOWtheHarvester/discovery/mojeek.py24
LOWtheHarvester/discovery/thc.py18
LOWtheHarvester/discovery/hudsonrocksearch.py209
LOWtheHarvester/discovery/hudsonrocksearch.py302
LOWtheHarvester/discovery/rapiddns.py13
LOWtheHarvester/discovery/zoomeyesearch.py260
LOWtheHarvester/discovery/githubcode.py113
LOWtheHarvester/discovery/chaos.py47
LOWtheHarvester/discovery/builtwith.py46
LOWtheHarvester/discovery/criminalip.py186
LOWtheHarvester/discovery/robtex.py44
LOWtheHarvester/discovery/onyphe.py35
LOWtheHarvester/discovery/waybackarchive.py31
LOWtheHarvester/discovery/leakix.py42
LOWtheHarvester/discovery/bravesearch.py22
LOWtheHarvester/discovery/api_endpoints.py477
LOWtheHarvester/discovery/api_endpoints.py539
LOWtheHarvester/discovery/threatcrowd.py38
LOWtheHarvester/discovery/additional_apis.py110
LOWtheHarvester/discovery/commoncrawl.py58
LOWtheHarvester/discovery/search_dehashed.py26
LOWtheHarvester/discovery/gitlabsearch.py75
LOWtheHarvester/discovery/gitlabsearch.py136
LOWtheHarvester/discovery/windvane.py85
LOWtheHarvester/discovery/windvane.py125
LOWtheHarvester/discovery/windvane.py169
LOWtheHarvester/discovery/windvane.py202
LOWtheHarvester/discovery/windvane.py244
LOWtheHarvester/discovery/shodansearch.py18
LOWtheHarvester/lib/stash.py170
Redundant / Tautological Comments9 hits · 14 pts
SeverityFileLineSnippet
LOWtheHarvester/__main__.py1511 # Check if Rest API is being used if so return found hosts
LOWtheHarvester/__main__.py1636 # Check if the result is a string (error message)
LOWtheHarvester/__main__.py1797 # Print results
LOWtheHarvester/discovery/waybackarchive.py59 # Check if it's a subdomain of our target
LOWtheHarvester/discovery/leakix.py66 # Check if the response is an error message
LOWtheHarvester/discovery/api_endpoints.py606 # Check if rate limited
LOWtheHarvester/discovery/api_endpoints.py615 # Check if this is an interesting endpoint
LOWtheHarvester/discovery/commoncrawl.py92 # Check if it's a subdomain of our target
LOWtheHarvester/discovery/windvane.py99 # Check if response is successful
AI Slop Vocabulary6 hits · 14 pts
SeverityFileLineSnippet
MEDIUMtheHarvester/discovery/fullhuntsearch.py216 """Get comprehensive details about a domain"""
MEDIUMtheHarvester/discovery/constants.py93 # That means we will try out second option which will utilize proxies
MEDIUMtheHarvester/discovery/securitytrailssearch.py19 # Hold structured responses for robust parsing
MEDIUMtheHarvester/discovery/securitytrailssearch.py38 # Request JSON payloads for robust parsing
MEDIUMtheHarvester/discovery/api_endpoints.py106 # Add comprehensive API paths categorized by functionality
MEDIUMtheHarvester/discovery/api_endpoints.py725 """Get a comprehensive summary of scan results.
Unused Imports9 hits · 9 pts
SeverityFileLineSnippet
LOWtests/test_security.py4
LOWtests/discovery/test_certspotter.py10
LOWtests/discovery/test_otx.py9
LOWtests/lib/test_core.py1
LOWtests/lib/test_output.py1
LOWtheHarvester/lib/hostchecker.py7
LOWtheHarvester/lib/core.py1
LOWtheHarvester/lib/output.py1
LOWtheHarvester/lib/api/api.py4
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippet
MEDIUMtheHarvester/__main__.py1759 # Define a default wordlist if none is specified
MEDIUMtheHarvester/__main__.py1765 # Create a default simple API endpoint list
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippet
LOWtests/discovery/test_censys.py52 {'names': ['a.example.com'], 'parsed': {'subject': {'email_address': 'admin@example.com'}}},
LOWtests/discovery/test_censys.py73 assert await search.get_emails() == {'admin@example.com', 'ops@example.com'}
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippet
LOWtheHarvester/lib/hostchecker.py21 self.hosts: list[str] = hosts
LOW.github/workflows/codeql-analysis.yml1# For most projects, this workflow file will not need changing; you simply need