Web path scanner
This report summarizes scanner evidence for maurosoria/dirsearch, a Python project with 14,942 GitHub stars. SynthScan examined 77,901 lines of code across 353 source files, recording 1408 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 23.4 (Elevated 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? 1230 finding(s).
Are imports declared and package/API names verified? 105 finding(s).
Are wrappers, guards, and repeated structures necessary? 1108 finding(s).
Which changes need focused human review? 1408 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 1408 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 |
|---|---|---|---|---|
| LOW | tests/test_optional_db_dependencies.py | 67 | def test_core_imports_without_database_drivers(self): | CODE |
| LOW | tests/test_optional_db_dependencies.py | 73 | def test_file_reports_import_without_database_drivers(self): | CODE |
| LOW | tests/test_optional_db_dependencies.py | 89 | def test_mysql_report_fails_only_when_driver_is_used(self): | CODE |
| LOW | tests/test_optional_db_dependencies.py | 99 | def test_postgresql_report_fails_only_when_driver_is_used(self): | CODE |
| LOW⚡ | tests/test_release_scripts.py | 46 | def test_configure_threaded_stack(self): | STRING |
| LOW⚡ | tests/test_release_scripts.py | 53 | def test_configure_async_stack(self): | STRING |
| LOW⚡ | tests/test_release_scripts.py | 60 | def test_configure_native_rust_stack(self): | STRING |
| LOW | tests/test_native_install_packaging.py | 17 | def test_setuptools_build_floor_is_patched_and_not_runtime(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 53 | def test_native_package_versions_match_python_contract(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 62 | def test_native_rust_msrv_matches_user_guidance(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 80 | def test_native_ci_enforces_msrv_and_clippy(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 91 | def test_native_dependency_audit_is_automatic_and_read_only(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 105 | def test_async_socks_dependency_is_packaged(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 121 | def test_entrypoints_include_native_builder(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 131 | def test_package_data_includes_native_sources(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 137 | def test_setup_uses_standard_package_dir_mapping(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 146 | def test_ntlm_auth_is_not_a_direct_dependency(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 163 | def test_macos_pyinstaller_omits_mysql_vendor_openssl(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 176 | def test_portable_workflow_uses_github_token(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 183 | def test_install_docs_use_native_builder_flow(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 191 | def test_pyinstaller_native_build_uses_selected_python(self): | CODE |
| LOW⚡ | tests/test_native_install_packaging.py | 197 | def test_native_builder_preserves_python_symlink(self): | CODE |
| LOW | tests/test_native_install_packaging.py | 210 | def test_native_builder_force_reinstalls_and_verifies_exact_wheel(self): | CODE |
| LOW⚡ | tests/test_report_exception_handling.py | 30 | def test_csv_report_rejects_wrong_header(self): | CODE |
| LOW⚡ | tests/test_report_exception_handling.py | 38 | def test_file_report_validation_chains_parse_error(self): | CODE |
| LOW⚡ | tests/test_report_exception_handling.py | 48 | def test_html_report_validation_stops_at_end_of_malformed_file(self): | CODE |
| LOW⚡ | tests/test_report_exception_handling.py | 61 | def test_html_report_parser_preserves_generated_resources(self): | CODE |
| LOW⚡ | tests/test_report_exception_handling.py | 71 | def test_sqlite_report_rejects_non_sqlite_file(self): | CODE |
| LOW⚡ | tests/test_report_exception_handling.py | 81 | def test_sqlite_report_closes_connection_after_validation_failure(self): | CODE |
| LOW | tests/test_report_exception_handling.py | 95 | def test_raw_request_malformed_input_preserves_invalid_request_type(self): | CODE |
| LOW⚡ | tests/test_test_discovery.py | 31 | def test_all_test_modules_are_discoverable(self): | CODE |
| LOW⚡ | tests/test_test_discovery.py | 38 | def test_legacy_runner_uses_the_canonical_discovery_suite(self): | CODE |
| LOW⚡ | tests/test_test_discovery.py | 43 | def test_ci_runs_canonical_test_discovery(self): | CODE |
| LOW | tests/test_docker_workflow.py | 6 | def test_compose_plan_grants_only_host_network_to_bake(self): | CODE |
| LOW | tests/test_docker_workflow.py | 26 | def test_release_matrix_keeps_all_stack_smokes(self): | CODE |
| LOW⚡ | tests/core/test_task_spec.py | 8 | def test_preserves_input_until_target_preparation_validates_it(self): | CODE |
| LOW⚡ | tests/core/test_task_spec.py | 17 | def test_input_cannot_change_after_construction(self): | CODE |
| LOW⚡ | tests/core/test_task_spec.py | 22 | def test_repr_does_not_include_credentials_or_queries(self): | CODE |
| LOW | tests/core/test_fuzzer_lifecycle.py | 96 | def test_saved_state_retries_in_flight_path(self): | CODE |
| LOW | tests/core/test_fuzzer_lifecycle.py | 141 | def test_terminal_callback_failure_stops_intake_and_drains_siblings(self): | CODE |
| LOW | tests/core/test_fuzzer_lifecycle.py | 183 | async def test_terminal_callback_failure_cancels_and_drains_siblings(self): | CODE |
| LOW | tests/core/test_run_config.py | 28 | def test_every_policy_uses_supplied_normalized_values_without_globals(self): | CODE |
| LOW | tests/core/test_run_config.py | 50 | def test_shared_settings_agree_for_every_engine_and_capture_destination(self): | CODE |
| LOW | tests/core/test_run_config.py | 68 | def test_nested_inputs_are_detached_and_both_levels_are_frozen(self): | CODE |
| LOW | tests/core/test_run_config.py | 101 | def test_invalid_engine_fails_before_other_policy_adapters(self): | CODE |
| LOW | tests/core/test_run_config.py | 112 | def test_blacklist_attachment_preserves_every_other_policy_identity(self): | CODE |
| LOW | tests/core/test_run_config.py | 133 | def test_aggregate_repr_omits_secret_bearing_policies(self): | CODE |
| LOW | tests/core/test_run_config.py | 141 | def test_default_aggregates_do_not_share_policy_instances(self): | CODE |
| LOW | tests/core/test_importable_api.py | 101 | def test_public_imports_are_available(self): | CODE |
| LOW | tests/core/test_importable_api.py | 120 | def test_builtin_template_and_wordlist_limit(self): | CODE |
| LOW | tests/core/test_importable_api.py | 150 | def test_python_api_runs_template_wordlist_and_callbacks(self): | CODE |
| LOW | tests/core/test_importable_api.py | 176 | def test_result_predicate_filters_custom_matches(self): | CODE |
| LOW | tests/core/test_importable_api.py | 193 | def test_session_factory_customizes_requests(self): | CODE |
| LOW | tests/core/test_importable_api.py | 213 | def test_from_raw_request_runs_with_body_and_query(self): | CODE |
| LOW | tests/core/test_importable_api.py | 239 | def test_from_raw_request_file_uses_absolute_form_target(self): | CODE |
| LOW | tests/core/test_importable_api.py | 260 | def test_from_raw_request_requires_one_source(self): | CODE |
| LOW | tests/core/test_importable_api.py | 273 | def test_raise_on_error_invokes_callback_then_raises(self): | CODE |
| LOW | tests/core/test_importable_api.py | 295 | def test_response_length_falls_back_for_invalid_headers(self): | CODE |
| LOW | tests/core/test_importable_api.py | 323 | def test_two_configs_do_not_leak_state(self): | CODE |
| LOW | tests/core/test_options.py | 19 | def test_client_certificate_and_key_must_be_used_together(self): | CODE |
| 974 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | dirsearch.py | 32 | from lib.core.exceptions import WordlistLimitError | CODE |
| CRITICAL | tests/core/test_wordlist_backend.py | 12 | from lib.core.exceptions import WordlistBackendUnavailableError | CODE |
| CRITICAL | tests/core/test_dictionary_templates.py | 11 | from lib.core.exceptions import WordlistLimitError | CODE |
| CRITICAL | tests/core/test_wordlist_config.py | 8 | from lib.core.exceptions import WordlistBackendUnavailableError, WordlistLimitError | CODE |
| CRITICAL | tests/controller/test_pause_state.py | 169 | self.controller.resources.interface.in_line.assert_any_call( | CODE |
| CRITICAL⚡ | tests/controller/test_target_dns.py | 76 | self.controller.resources.requester.set_ip.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_dns.py | 81 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_dns.py | 108 | self.controller.resources.requester.set_auth.assert_not_called() | CODE |
| CRITICAL⚡ | tests/controller/test_target_dns.py | 109 | self.controller.resources.requester.set_url.assert_not_called() | CODE |
| CRITICAL | tests/controller/test_target_dns.py | 124 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL | tests/controller/test_target_dns.py | 142 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 57 | self.controller.resources.requester.reset_auth.assert_called_once_with() | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 58 | self.controller.resources.requester.set_auth.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 61 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 71 | self.controller.resources.requester.reset_auth.assert_called_once_with() | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 72 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 75 | self.controller.resources.requester.set_query.assert_called_once_with("debug=true") | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 84 | self.controller.resources.requester.set_auth.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 87 | self.controller.resources.requester.reset_auth.assert_called_once_with() | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 88 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 95 | self.controller.resources.requester.reset_auth.assert_called_once_with() | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 96 | self.controller.resources.requester.set_auth.assert_not_called() | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 97 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 107 | self.controller.resources.requester.reset_auth.assert_not_called() | CODE |
| CRITICAL⚡ | tests/controller/test_target_credentials.py | 108 | self.controller.resources.requester.set_auth.assert_not_called() | CODE |
| CRITICAL | tests/controller/test_target_url.py | 152 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL | tests/controller/test_target_url.py | 163 | self.controller.resources.requester.set_url.assert_called_once_with( | CODE |
| CRITICAL | tests/controller/test_session_store.py | 40 | from lib.core.exceptions import UnpicklingError | CODE |
| CRITICAL | lib/core/api.py | 30 | from lib.core.exceptions import WordlistLimitError | CODE |
| CRITICAL | lib/core/wordlist_backend.py | 7 | from lib.core.exceptions import WordlistBackendUnavailableError, WordlistLimitError | CODE |
| CRITICAL | lib/controller/session.py | 30 | from lib.core.exceptions import UnpicklingError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 53 | CODE | |
| LOW | tests/check_packaged_install.py | 12 | CODE | |
| LOW | tests/core/test_options.py | 19 | CODE | |
| LOW | tests/core/test_options.py | 141 | CODE | |
| LOW | tests/core/test_execution_config.py | 112 | CODE | |
| LOW | tests/core/test_discovery_config.py | 72 | CODE | |
| LOW | tests/core/test_discovery_config.py | 110 | CODE | |
| LOW | tests/core/test_filter_config.py | 130 | CODE | |
| LOW | tests/connection/test_dns.py | 168 | CODE | |
| LOW | tests/connection/test_native_engine.py | 69 | CODE | |
| LOW | tests/connection/test_native_engine.py | 107 | CODE | |
| LOW | tests/connection/test_native_engine.py | 132 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 118 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 381 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 479 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 509 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 543 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 574 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 597 | CODE | |
| LOW | tests/connection/test_proxy_integration.py | 624 | CODE | |
| LOW | tests/connection/test_requester.py | 186 | CODE | |
| LOW | tests/connection/test_requester.py | 871 | CODE | |
| LOW | tests/connection/test_requester.py | 1152 | CODE | |
| LOW | tests/connection/test_requester.py | 1173 | CODE | |
| LOW | tests/connection/test_requester.py | 1232 | CODE | |
| LOW | tests/connection/test_requester.py | 1347 | CODE | |
| LOW | tests/connection/test_requester.py | 1496 | CODE | |
| LOW | tests/connection/test_requester.py | 2043 | CODE | |
| LOW | tests/connection/test_requester.py | 3121 | CODE | |
| LOW | tests/connection/test_logging_ownership.py | 17 | CODE | |
| LOW | tests/utils/test_terminal_ownership.py | 114 | CODE | |
| LOW | tests/utils/test_file.py | 90 | CODE | |
| LOW | tests/utils/test_file.py | 135 | CODE | |
| LOW | tests/utils/test_file.py | 154 | CODE | |
| LOW | tests/controller/test_pause_state.py | 97 | CODE | |
| LOW | tests/controller/test_pause_state.py | 150 | CODE | |
| LOW | tests/controller/test_pause_state.py | 196 | CODE | |
| LOW | tests/controller/test_run_config.py | 36 | CODE | |
| LOW | tests/controller/test_run_config.py | 119 | CODE | |
| LOW | tests/controller/test_progress_ownership.py | 33 | CODE | |
| LOW | tests/controller/test_execution_config.py | 37 | CODE | |
| LOW | tests/controller/test_execution_config.py | 57 | CODE | |
| LOW | tests/controller/test_execution_config.py | 65 | CODE | |
| LOW | tests/controller/test_execution_config.py | 115 | CODE | |
| LOW | tests/controller/test_report_config.py | 58 | CODE | |
| LOW | tests/controller/test_session_snapshot.py | 266 | CODE | |
| LOW | tests/controller/test_session_snapshot.py | 332 | CODE | |
| LOW | tests/controller/test_result_config.py | 47 | CODE | |
| LOW | tests/controller/test_result_config.py | 114 | CODE | |
| LOW | tests/controller/test_target_config.py | 23 | CODE | |
| LOW | tests/controller/test_target_url.py | 167 | CODE | |
| LOW | tests/controller/test_target_url.py | 189 | CODE | |
| LOW | tests/controller/test_target_url.py | 262 | CODE | |
| LOW | tests/controller/test_target_url.py | 278 | CODE | |
| LOW | tests/controller/test_target_url.py | 327 | CODE | |
| LOW | tests/controller/test_discovery_config.py | 68 | CODE | |
| LOW | tests/controller/test_request_config.py | 9 | CODE | |
| LOW | tests/controller/test_run_resources.py | 54 | CODE | |
| LOW | tests/controller/test_run_resources.py | 87 | CODE | |
| LOW | tests/controller/test_run_resources.py | 160 | CODE | |
| 55 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | dirsearch.py | 88 | except KeyboardInterrupt: | CODE |
| HIGH | tests/core/test_dictionary_concurrency.py | 58 | except threading.BrokenBarrierError: | CODE |
| HIGH | tests/connection/proxy_server.py | 428 | except OSError: | CODE |
| HIGH | tests/connection/test_native_engine.py | 82 | except OSError: | CODE |
| HIGH | tests/connection/test_native_engine.py | 120 | except OSError: | CODE |
| HIGH | tests/connection/test_native_engine.py | 148 | except OSError: | CODE |
| HIGH | tests/connection/test_native_engine.py | 166 | except BrokenPipeError: | CODE |
| HIGH | lib/connection/requester.py | 615 | except IndexError: | CODE |
| HIGH | lib/utils/file.py | 276 | except FileNotFoundError: | CODE |
| HIGH | lib/utils/file.py | 217 | except OSError: | CODE |
| HIGH | lib/utils/common.py | 143 | except OSError: | CODE |
| HIGH | lib/controller/controller.py | 620 | except (KeyboardInterrupt, asyncio.CancelledError): | CODE |
| HIGH | lib/controller/controller.py | 1052 | except Exception: | CODE |
| HIGH | lib/controller/controller.py | 1080 | except Exception: | CODE |
| HIGH | lib/controller/controller.py | 480 | except ImportError: | CODE |
| HIGH | lib/controller/session.py | 280 | except FileNotFoundError: | CODE |
| HIGH | lib/report/directory_response_store.py | 72 | except OSError: | CODE |
| HIGH | lib/report/jsonl_response_store.py | 127 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dirsearch.py | 23 | CODE | |
| LOW | dirsearch.py | 23 | CODE | |
| LOW | dirsearch.py | 23 | CODE | |
| LOW | dirsearch.py | 23 | CODE | |
| LOW | dirsearch.py | 23 | CODE | |
| LOW | dirsearch.py | 23 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | __init__.py | 6 | CODE | |
| LOW | tests/test_optional_db_dependencies.py | 19 | CODE | |
| LOW | tests/core/test_importable_api.py | 1 | CODE | |
| LOW | tests/core/test_wordlist_backend.py | 1 | CODE | |
| LOW | tests/core/test_dictionary_templates.py | 1 | CODE | |
| LOW | tests/connection/proxy_server.py | 1 | CODE | |
| LOW | tests/controller/test_session_store.py | 19 | CODE | |
| LOW | scripts/split_wordlists.py | 4 | CODE | |
| LOW | scripts/configure_stack.py | 2 | CODE | |
| LOW | scripts/build_portable.py | 2 | CODE | |
| LOW | scripts/build_native.py | 2 | CODE | |
| LOW | lib/core/task_checkpoint.py | 3 | CODE | |
| LOW | lib/core/options.py | 19 | CODE | |
| LOW | lib/core/native_runtime.py | 1 | CODE | |
| LOW | lib/core/terminal_config.py | 3 | CODE | |
| LOW | lib/core/scanner.py | 19 | CODE | |
| LOW | lib/core/run_metadata.py | 3 | CODE | |
| LOW | lib/core/target_progress.py | 3 | CODE | |
| LOW | lib/core/report_config.py | 3 | CODE | |
| LOW | lib/core/filter_state.py | 3 | CODE | |
| LOW | lib/core/log_config.py | 3 | CODE | |
| LOW | lib/core/discovery_config.py | 3 | CODE | |
| LOW | lib/core/scan_run_state.py | 3 | CODE | |
| LOW | lib/core/request_config.py | 3 | CODE | |
| LOW | lib/core/execution_config.py | 3 | CODE | |
| LOW | lib/core/wordlist_template.py | 1 | CODE | |
| LOW | lib/core/api.py | 19 | CODE | |
| LOW | lib/core/target_config.py | 3 | CODE | |
| LOW | lib/core/wordlist_backend.py | 1 | CODE | |
| LOW | lib/core/fuzzer.py | 19 | CODE | |
| LOW | lib/core/result_config.py | 3 | CODE | |
| LOW | lib/core/structures.py | 19 | CODE | |
| LOW | lib/core/run_config.py | 3 | CODE | |
| LOW | lib/core/dictionary.py | 19 | CODE | |
| LOW | lib/core/wordlist_config.py | 3 | CODE | |
| LOW | lib/core/filter_config.py | 3 | CODE | |
| LOW | lib/core/native_builder.py | 1 | CODE | |
| LOW | lib/core/filters.py | 16 | CODE | |
| LOW | lib/core/data.py | 19 | CODE | |
| LOW | lib/core/request_backend.py | 1 | CODE | |
| LOW | lib/core/decorators.py | 19 | CODE | |
| LOW | lib/connection/proxy.py | 1 | CODE | |
| LOW | lib/connection/rate_limiter.py | 1 | CODE | |
| LOW | lib/connection/response.py | 19 | CODE | |
| LOW | lib/connection/native.py | 1 | CODE | |
| LOW | lib/connection/requester.py | 19 | CODE | |
| LOW | lib/connection/ip_overrides.py | 19 | CODE | |
| LOW | lib/parse/config.py | 19 | CODE | |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dirsearch.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | pyproject.toml | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | config.ini | 21 | #include-status = 200-299,401 | COMMENT |
| LOW | config.ini | 41 | #filter-status = 500-599 | COMMENT |
| LOW | config.ini | 61 | #prefixes = .,admin | COMMENT |
| LOW | config.ini | 101 | disable-cli = False | COMMENT |
| LOW | config.ini | 121 | # may lose up to N-1 recent rows after an abrupt process exit. | COMMENT |
| LOW | setup.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | testing.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | tests/test_optional_db_dependencies.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/test_release_scripts.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/core/test_scanner.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/connection/test_dns.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/connection/test_requester.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/parse/test_config.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/parse/test_url.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/parse/test_headers.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/utils/test_mimetype.py | 1 | # This program is free software; you can redistribute it and/or modify | COMMENT |
| LOW | tests/utils/test_common.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/utils/test_schemedet.py | 1 | # This program is free software; you can redistribute it and/or modify | COMMENT |
| LOW | tests/utils/test_diff.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/utils/test_crawl.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/utils/test_random.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | tests/controller/test_target_dns.py | 1 | from dataclasses import replace | COMMENT |
| LOW | tests/controller/test_session_store.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | .github/workflows/codeql-analysis.yml | 1 | # For most projects, this workflow file will not need changing; you simply need | COMMENT |
| LOW | lib/core/options.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/scanner.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/logger.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/api.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/fuzzer.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/settings.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/exceptions.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/structures.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/dictionary.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/filters.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/data.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/core/decorators.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/connection/response.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/connection/requester.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/connection/ip_overrides.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/parse/config.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/parse/cmdline.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/parse/rawrequest.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/parse/url.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/parse/headers.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/crawl.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/command.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/mimetype.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/safe_xml.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/random.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/file.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/cli.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/common.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/diff.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/utils/schemedet.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/controller/controller.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/controller/session.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/view/terminal.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | lib/view/colors.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/core/test_run_logger.py | 91 | except Exception as error: | CODE |
| MEDIUM | tests/core/test_run_logger.py | 88 | def write(): | CODE |
| LOW | tests/core/test_dictionary_concurrency.py | 240 | except Exception as error: | CODE |
| LOW | tests/core/test_dictionary_concurrency.py | 279 | except Exception as error: | CODE |
| LOW | tests/core/test_dictionary_concurrency.py | 315 | except Exception as error: | CODE |
| LOW | tests/core/test_dictionary_concurrency.py | 322 | except Exception as error: | CODE |
| MEDIUM | tests/core/test_dictionary_concurrency.py | 275 | def add_candidate() -> None: | CODE |
| MEDIUM | tests/core/test_dictionary_concurrency.py | 312 | def snapshot() -> None: | CODE |
| LOW | tests/connection/proxy_server.py | 641 | except Exception: | CODE |
| LOW | tests/connection/proxy_server.py | 669 | except Exception as error: | CODE |
| LOW | tests/connection/test_requester_rate.py | 119 | except Exception as error: | CODE |
| MEDIUM | tests/connection/test_requester_rate.py | 116 | def read_rate(name, requester, finished=None): | CODE |
| LOW | tests/utils/test_terminal_ownership.py | 171 | except Exception as error: | CODE |
| MEDIUM | tests/utils/test_terminal_ownership.py | 168 | def write(terminal, done=None): | CODE |
| LOW | tests/report/test_response_store.py | 258 | except Exception as error: | CODE |
| LOW | tests/report/test_response_store.py | 520 | except Exception as error: | CODE |
| LOW | tests/report/test_report_locking.py | 56 | except Exception as error: | CODE |
| LOW | tests/report/test_report_locking.py | 100 | except Exception as error: | CODE |
| LOW | lib/core/options.py | 85 | except Exception: | CODE |
| LOW | lib/core/fuzzer.py | 529 | except Exception as e: | CODE |
| LOW | lib/connection/requester.py | 667 | except Exception as e: | CODE |
| LOW | lib/connection/requester.py | 807 | except Exception as error: | CODE |
| LOW | lib/connection/requester.py | 1005 | except Exception as e: | CODE |
| LOW | lib/utils/file.py | 351 | except Exception: | CODE |
| MEDIUM | lib/utils/file.py | 91 | def can_read(file_name): | CODE |
| MEDIUM | lib/controller/controller.py | 679 | def run_fuzzer() -> None: | CODE |
| LOW | lib/controller/controller.py | 1052 | except Exception: | CODE |
| LOW | lib/controller/controller.py | 1080 | except Exception: | CODE |
| LOW | lib/report/response_store.py | 126 | except Exception: | CODE |
| LOW | lib/report/response_store.py | 184 | except Exception: | CODE |
| LOW | lib/report/jsonl_response_store.py | 37 | except Exception: | CODE |
| LOW | lib/report/jsonl_response_store.py | 44 | except Exception: | CODE |
| LOW | db/categories/generate_wpscan_wordlists.py | 33 | except Exception as e: | CODE |
| LOW⚡ | db/categories/php/generate_wpscan_wordlists.py | 19 | except Exception as e: | CODE |
| MEDIUM⚡ | db/categories/php/generate_wpscan_wordlists.py | 20 | print(f"Error downloading: {e}") | CODE |
| MEDIUM | db/categories/php/generate_wpscan_wordlists.py | 4 | def download_file(url, output_path): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dirsearch.py | 37 | __all__ = [ | CODE |
| LOW | __init__.py | 16 | __all__ = [ | CODE |
| LOW | lib/core/api.py | 40 | __all__ = [ | CODE |
| LOW | lib/core/fuzzer.py | 95 | def set_base_path(self, path: str) -> None: | CODE |
| LOW⚡ | lib/connection/native.py | 500 | def set_url(self, url: str) -> None: | CODE |
| LOW⚡ | lib/connection/native.py | 503 | def set_query(self, query: str) -> None: | CODE |
| LOW⚡ | lib/connection/native.py | 506 | def set_ip(self, host: str, port: int, ip_address: str) -> None: | CODE |
| LOW⚡ | lib/connection/native.py | 513 | def set_auth(self, auth_type: str, credential: str) -> None: | CODE |
| LOW⚡ | lib/connection/requester.py | 489 | def set_url(self, url: str) -> None: | CODE |
| LOW⚡ | lib/connection/requester.py | 492 | def set_query(self, query: str) -> None: | CODE |
| LOW⚡ | lib/connection/requester.py | 495 | def set_ip(self, host: str, port: int, ip_address: str) -> None: | CODE |
| LOW⚡ | lib/connection/requester.py | 502 | def set_header(self, key: str, value: str) -> None: | CODE |
| LOW | lib/connection/requester.py | 570 | def set_auth(self, type: str, credential: str) -> None: | CODE |
| LOW | lib/connection/requester.py | 897 | def set_auth(self, type: str, credential: str) -> None: | CODE |
| LOW | lib/connection/ip_overrides.py | 38 | def set_override(self, host: str, port: int, ip_address: str) -> None: | CODE |
| LOW | lib/controller/controller.py | 782 | def set_target(self, url: str) -> None: | CODE |
| LOW | lib/controller/controller.py | 1010 | def update_progress_bar(self, response: BaseResponse | None) -> None: | CODE |
| LOW | lib/controller/controller.py | 1029 | def update_progress_bar_batch(self, _count: int) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | db/categories/php/generate_wpscan_wordlists.py | 16 | # Actually, for this task, I will mock the data if download fails or just create placeholders | COMMENT |
| LOW | db/categories/php/generate_wpscan_wordlists.py | 34 | # or just use a predefined list if we can't scrape. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/controller/test_result_config.py | 247 | # Creating the first store succeeds, but the JSONL destination is | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/core/fuzzer.py | 333 | # Check if the response is unique, not wildcard | COMMENT |
| LOW | lib/report/sqlite_report.py | 63 | # Check if the file is a proper sqlite database | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/connection/native.py | 83 | # Filters are supplied by orchestration, independently of request policy. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/core/test_scan_run_state.py | 35 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/core/api.py | 214 | CODE |