souleyez 2.43.25__tar.gz → 2.43.26__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {souleyez-2.43.25/souleyez.egg-info → souleyez-2.43.26}/PKG-INFO +1 -1
- {souleyez-2.43.25 → souleyez-2.43.26}/pyproject.toml +1 -1
- souleyez-2.43.26/souleyez/__init__.py +2 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/README.md +1 -1
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/main.py +1 -1
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/interactive.py +199 -2
- {souleyez-2.43.25 → souleyez-2.43.26/souleyez.egg-info}/PKG-INFO +1 -1
- souleyez-2.43.25/souleyez/__init__.py +0 -2
- {souleyez-2.43.25 → souleyez-2.43.26}/LICENSE +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/MANIFEST.in +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/README.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/setup.cfg +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/action_mapper.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/chain_advisor.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/claude_provider.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/context_builder.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/executor.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/feedback_handler.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/llm_factory.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/llm_provider.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/ollama_provider.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/ollama_service.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/path_scorer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/recommender.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/report_context.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/report_prompts.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/report_service.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/result_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ai/safety.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/assets/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/assets/souleyez-icon.png +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/auth/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/auth/audit.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/auth/engagement_access.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/auth/permissions.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/auth/session_manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/auth/user_manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/audit.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/auth.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/deliverables.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/engagement.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/license.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/screenshots.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/commands/user.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/config.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/credential_tester.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/cve_mappings.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/cve_matcher.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_auto_mapper.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_chain_engine.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_database.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_integration.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_rpc_client.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_rpc_manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/msf_sync_manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/network_utils.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/parser_handler.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/pending_chains.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/templates.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/tool_chaining.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/version_utils.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/vuln_correlation.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/core/web_utils.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/README.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/active_directory.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/cis_controls_v8.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/cloud_security.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/cmmc_2.0.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/external_network.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/ffiec_cat.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/gdpr_article32.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/glba_safeguards.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/hipaa_security.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/hitrust_csf.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/internal_network.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/iso27001.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/nerc_cip.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/nist_csf.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/owasp_top10_2021.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/pci_dss_4.0.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/ptes_standard.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/red_team.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/soc2_type2.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/templates/webapp_advanced.json +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/README.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/all_users.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/api_endpoints.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/default_credentials.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/macos_users.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/router_passwords.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/router_users.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/soul_pass.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/soul_users.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/subdomains_common.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/top100.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/top20_quick.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/web_extensions.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/data/wordlists/web_files_common.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/detection/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/detection/attack_signatures.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/detection/mitre_mappings.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/detection/validator.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/devtools.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/api-reference/cli-commands.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/api-reference/engagement-api.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/api-reference/integration-guide.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/api-reference/parser-formats.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/architecture/decisions/000-template.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/architecture/overview.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/database/MIGRATIONS.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/database/SCHEMA.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/images/README.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/security/best-practices.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/security/credential-encryption.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/security/password-protected-commands.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/security/secure-defaults.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/security/threat-model.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/ai-integration.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/attack-surface.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/auto-chaining.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/configuration.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/dependencies.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/evidence-vault.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/getting-started.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/installation.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/rbac.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/report-generation.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/scope-management.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/siem-integration.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/tools-reference.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/troubleshooting.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/uninstall.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/worker-management.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/docs/user-guide/workflows.md +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/background.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/base.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/job_status.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/loader.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/log_sanitizer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/result_handler.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/engine/worker_manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/export/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/export/evidence_bundle.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/feature_flags/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/feature_flags/features.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/feature_flags.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/history.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/importers/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/importers/msf_importer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/importers/smart_importer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/base.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/elastic.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/factory.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/googlesecops.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/sentinel.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/splunk.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/siem/wazuh.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/wazuh/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/wazuh/client.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/wazuh/config.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/wazuh/host_mapper.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/integrations/wazuh/sync.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/correlation_analyzer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/exploit_knowledge.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/exploit_suggestions.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/gap_analyzer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/gap_detector.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/sensitive_tables.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/service_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/surface_analyzer.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/intelligence/target_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/licensing/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/licensing/validator.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/log_config.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/migrations/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/migrations/fix_job_counter.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/bloodhound_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/crackmapexec_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/dalfox_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/dnsrecon_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/enum4linux_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/ffuf_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/gobuster_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/hashcat_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/http_fingerprint_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/hydra_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/impacket_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/john_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/msf_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/nikto_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/nmap_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/nuclei_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/responder_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/searchsploit_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/smbmap_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/sqlmap_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/theharvester_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/whois_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/parsers/wpscan_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/afp.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/afp_brute.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/ard.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/bloodhound.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/crackmapexec.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/dalfox.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/dns_hijack.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/dnsrecon.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/enum4linux.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/ffuf.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/firmware_extract.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/gobuster.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/hashcat.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/http_fingerprint.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/hydra.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/impacket_getnpusers.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/impacket_psexec.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/impacket_secretsdump.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/impacket_smbclient.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/john.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/macos_ssh.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/mdns.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/msf_auxiliary.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/msf_exploit.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/nikto.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/nmap.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/nuclei.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/plugin_base.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/plugin_template.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/responder.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/router_http_brute.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/router_ssh_brute.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/router_telnet_brute.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/routersploit.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/routersploit_exploit.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/searchsploit.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/smbmap.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/sqlmap.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/theharvester.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/tr069.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/upnp.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/upnp_abuse.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/vnc_access.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/vnc_brute.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/whois.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/plugins/wpscan.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/attack_chain.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/charts.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/compliance_mappings.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/detection_report.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/formatters.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/generator.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/reporting/metrics.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/scanner.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/security/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/security/scope_validator.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/security/validation.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/security.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/credentials.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/crypto.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/database.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/db.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/deliverable_evidence.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/deliverable_exporter.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/deliverable_templates.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/deliverables.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/engagements.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/evidence.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/execution_log.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/exploit_attempts.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/exploits.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/findings.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/hosts.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrate_to_engagements.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_005_screenshots.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_006_deliverables.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/_027_multi_siem_persistence.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/migrations/migration_manager.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/msf_sessions.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/osint.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/recommendation_engine.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/schema.sql +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/screenshots.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/smb_shares.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/sqlmap_data.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/team_collaboration.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/timeline_tracker.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/wazuh_vulns.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/storage/web_paths.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/testing/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/testing/credential_tester.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/ai_quotes.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/attack_surface.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/chain_rules_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/correlation_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/dashboard.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/deliverables_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/design_system.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/errors.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/evidence_linking_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/evidence_vault.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/exploit_suggestions_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/export_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/gap_analysis_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/help_system.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/intelligence_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/interactive_selector.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/log_formatter.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/menu_components.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/msf_auxiliary_menu.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/pending_chains_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/progress_indicators.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/recommendations_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/rule_builder.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/setup_wizard.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/shortcuts.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/splunk_vulns_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/team_dashboard.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/template_selector.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/terminal.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/timeline_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/tool_setup.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/tutorial.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/tutorial_state.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/wazuh_vulns_view.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui/wordlist_browser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/ui.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/utils/__init__.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/utils/tool_checker.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/utils.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez/wordlists.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez.egg-info/SOURCES.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez.egg-info/dependency_links.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez.egg-info/entry_points.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez.egg-info/requires.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/souleyez.egg-info/top_level.txt +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_config.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_config_enhanced.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_crypto.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_database_100_final.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_engagements.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_engagements_simple.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_job_status_tracking.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_logging.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_network_utils.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_ollama_service.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_plugin_base.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_recommender.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_result_handler_sqlmap.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_schema.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_scope_integration.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_scope_validator.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_security_hardening.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_security_validation.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_sqlmap_parser.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_storage.py +0 -0
- {souleyez-2.43.25 → souleyez-2.43.26}/tests/test_version_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.26
|
|
4
4
|
Summary: AI-Powered Penetration Testing Platform with 40+ integrated tools
|
|
5
5
|
Author-email: CyberSoul Security <contact@cybersoulsecurity.com>
|
|
6
6
|
Maintainer-email: CyberSoul Security <contact@cybersoulsecurity.com>
|
|
@@ -173,7 +173,7 @@ def _check_privileged_tools():
|
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
@click.group()
|
|
176
|
-
@click.version_option(version='2.43.
|
|
176
|
+
@click.version_option(version='2.43.26')
|
|
177
177
|
def cli():
|
|
178
178
|
"""SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
|
|
179
179
|
from souleyez.log_config import init_logging
|
|
@@ -5907,6 +5907,48 @@ def view_job_detail(job_id: int):
|
|
|
5907
5907
|
# Silently fail - not critical
|
|
5908
5908
|
pass
|
|
5909
5909
|
|
|
5910
|
+
# SQLMap ERROR handler
|
|
5911
|
+
if not show_raw_logs and job.get('tool') == 'sqlmap' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
5912
|
+
try:
|
|
5913
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
5914
|
+
log_text = f.read()
|
|
5915
|
+
|
|
5916
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
5917
|
+
click.echo(click.style("[ERROR] SQLMAP SCAN FAILED", bold=True, fg='red'))
|
|
5918
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
5919
|
+
click.echo()
|
|
5920
|
+
|
|
5921
|
+
# Check for common sqlmap errors
|
|
5922
|
+
error_msg = None
|
|
5923
|
+
if 'connection timed out' in log_text.lower():
|
|
5924
|
+
error_msg = "Connection timed out - target may be slow or filtering"
|
|
5925
|
+
elif 'unable to connect' in log_text.lower():
|
|
5926
|
+
error_msg = "Unable to connect to target URL"
|
|
5927
|
+
elif 'page not found' in log_text.lower() or '404' in log_text:
|
|
5928
|
+
error_msg = "Target page not found (404)"
|
|
5929
|
+
elif 'invalid target url' in log_text.lower():
|
|
5930
|
+
error_msg = "Invalid target URL - check the URL format"
|
|
5931
|
+
elif 'WAF/IPS' in log_text or 'firewall' in log_text.lower():
|
|
5932
|
+
error_msg = "WAF/IPS detected - try --tamper scripts"
|
|
5933
|
+
elif 'all tested parameters do not appear' in log_text.lower():
|
|
5934
|
+
error_msg = "No injectable parameters found"
|
|
5935
|
+
elif '[CRITICAL]' in log_text:
|
|
5936
|
+
match = re.search(r'\[CRITICAL\]\s*(.+?)(?:\n|$)', log_text)
|
|
5937
|
+
if match:
|
|
5938
|
+
error_msg = match.group(1).strip()[:100]
|
|
5939
|
+
|
|
5940
|
+
if error_msg:
|
|
5941
|
+
click.echo(f" {error_msg}")
|
|
5942
|
+
else:
|
|
5943
|
+
click.echo(" Scan failed - see raw logs for details (press 'r')")
|
|
5944
|
+
|
|
5945
|
+
click.echo()
|
|
5946
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
5947
|
+
click.echo()
|
|
5948
|
+
|
|
5949
|
+
except Exception:
|
|
5950
|
+
pass
|
|
5951
|
+
|
|
5910
5952
|
# Parse and display SQLMap results if available (only when not showing raw logs)
|
|
5911
5953
|
if not show_raw_logs and job.get('tool') == 'sqlmap' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
5912
5954
|
try:
|
|
@@ -6379,6 +6421,78 @@ def view_job_detail(job_id: int):
|
|
|
6379
6421
|
# Parse and display Nmap results if available (only when not showing raw logs)
|
|
6380
6422
|
# ARD plugin uses nmap under the hood, so include it here
|
|
6381
6423
|
nmap_based_tools = ['nmap', 'ard']
|
|
6424
|
+
|
|
6425
|
+
# Nmap ERROR handler
|
|
6426
|
+
if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
6427
|
+
try:
|
|
6428
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
6429
|
+
log_text = f.read()
|
|
6430
|
+
|
|
6431
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
6432
|
+
click.echo(click.style("[ERROR] NMAP SCAN FAILED", bold=True, fg='red'))
|
|
6433
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
6434
|
+
click.echo()
|
|
6435
|
+
|
|
6436
|
+
# Check for common nmap errors
|
|
6437
|
+
error_msg = None
|
|
6438
|
+
if 'Failed to resolve' in log_text or 'Failed to open' in log_text:
|
|
6439
|
+
error_msg = "Failed to resolve target hostname"
|
|
6440
|
+
elif 'No targets were specified' in log_text:
|
|
6441
|
+
error_msg = "No valid targets specified"
|
|
6442
|
+
elif 'requires root privileges' in log_text or 'Operation not permitted' in log_text:
|
|
6443
|
+
error_msg = "Scan type requires root privileges (try sudo)"
|
|
6444
|
+
elif 'Host seems down' in log_text:
|
|
6445
|
+
error_msg = "Host appears to be down or blocking probes"
|
|
6446
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
6447
|
+
error_msg = "Scan timed out - target may be slow or filtering"
|
|
6448
|
+
elif 'Connection refused' in log_text:
|
|
6449
|
+
error_msg = "Connection refused - no services on target ports"
|
|
6450
|
+
|
|
6451
|
+
if error_msg:
|
|
6452
|
+
click.echo(f" {error_msg}")
|
|
6453
|
+
else:
|
|
6454
|
+
click.echo(" Scan failed - see raw logs for details (press 'r')")
|
|
6455
|
+
|
|
6456
|
+
click.echo()
|
|
6457
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
6458
|
+
click.echo()
|
|
6459
|
+
|
|
6460
|
+
except Exception:
|
|
6461
|
+
pass
|
|
6462
|
+
|
|
6463
|
+
# Nmap NO_RESULTS handler
|
|
6464
|
+
if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') == 'no_results' and log_path and os.path.exists(log_path):
|
|
6465
|
+
try:
|
|
6466
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
6467
|
+
log_text = f.read()
|
|
6468
|
+
|
|
6469
|
+
click.echo(click.style("=" * 70, fg='cyan'))
|
|
6470
|
+
click.echo(click.style("NMAP SCAN RESULTS", bold=True, fg='cyan'))
|
|
6471
|
+
click.echo(click.style("=" * 70, fg='cyan'))
|
|
6472
|
+
click.echo()
|
|
6473
|
+
click.echo(" No open ports or services discovered.")
|
|
6474
|
+
click.echo()
|
|
6475
|
+
|
|
6476
|
+
# Check for additional context
|
|
6477
|
+
if 'Host seems down' in log_text:
|
|
6478
|
+
click.echo(click.style(" Note: Host appears to be down or blocking probes", fg='yellow'))
|
|
6479
|
+
elif 'filtered' in log_text.lower():
|
|
6480
|
+
click.echo(click.style(" Note: Ports may be filtered by firewall", fg='yellow'))
|
|
6481
|
+
|
|
6482
|
+
click.echo()
|
|
6483
|
+
click.echo(click.style(" This could mean:", fg='bright_black'))
|
|
6484
|
+
click.echo(click.style(" - All ports are closed or filtered", fg='bright_black'))
|
|
6485
|
+
click.echo(click.style(" - Host is behind a firewall", fg='bright_black'))
|
|
6486
|
+
click.echo(click.style(" - Try different scan types (-sS, -sT, -sU)", fg='bright_black'))
|
|
6487
|
+
click.echo(click.style(" - Try scanning more ports (-p-)", fg='bright_black'))
|
|
6488
|
+
click.echo()
|
|
6489
|
+
click.echo(click.style("=" * 70, fg='cyan'))
|
|
6490
|
+
click.echo()
|
|
6491
|
+
|
|
6492
|
+
except Exception:
|
|
6493
|
+
pass
|
|
6494
|
+
|
|
6495
|
+
# Nmap DONE/COMPLETED handler
|
|
6382
6496
|
if not show_raw_logs and job.get('tool') in nmap_based_tools and job.get('status') in ['done', 'completed'] and log_path and os.path.exists(log_path):
|
|
6383
6497
|
try:
|
|
6384
6498
|
from souleyez.parsers.nmap_parser import parse_nmap_output
|
|
@@ -6545,6 +6659,48 @@ def view_job_detail(job_id: int):
|
|
|
6545
6659
|
except Exception as e:
|
|
6546
6660
|
pass
|
|
6547
6661
|
|
|
6662
|
+
# Nuclei ERROR handler
|
|
6663
|
+
if not show_raw_logs and job.get('tool') == 'nuclei' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
6664
|
+
try:
|
|
6665
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
6666
|
+
log_text = f.read()
|
|
6667
|
+
|
|
6668
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
6669
|
+
click.echo(click.style("[ERROR] NUCLEI SCAN FAILED", bold=True, fg='red'))
|
|
6670
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
6671
|
+
click.echo()
|
|
6672
|
+
|
|
6673
|
+
# Check for common nuclei errors
|
|
6674
|
+
error_msg = None
|
|
6675
|
+
if 'Could not run nuclei' in log_text or 'not found' in log_text.lower():
|
|
6676
|
+
error_msg = "Nuclei binary not found - check installation"
|
|
6677
|
+
elif 'no templates' in log_text.lower():
|
|
6678
|
+
error_msg = "No templates found - update nuclei templates"
|
|
6679
|
+
elif 'rate limit' in log_text.lower():
|
|
6680
|
+
error_msg = "Rate limited by target - try with -rl flag"
|
|
6681
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
6682
|
+
error_msg = "Scan timed out - target may be slow or filtering"
|
|
6683
|
+
elif 'Connection refused' in log_text:
|
|
6684
|
+
error_msg = "Connection refused - target may be down"
|
|
6685
|
+
elif 'could not connect' in log_text.lower():
|
|
6686
|
+
error_msg = "Could not connect to target"
|
|
6687
|
+
elif '[ERR]' in log_text or '[FTL]' in log_text:
|
|
6688
|
+
match = re.search(r'\[(ERR|FTL)\]\s*(.+?)(?:\n|$)', log_text)
|
|
6689
|
+
if match:
|
|
6690
|
+
error_msg = match.group(2).strip()[:100]
|
|
6691
|
+
|
|
6692
|
+
if error_msg:
|
|
6693
|
+
click.echo(f" {error_msg}")
|
|
6694
|
+
else:
|
|
6695
|
+
click.echo(" Scan failed - see raw logs for details (press 'r')")
|
|
6696
|
+
|
|
6697
|
+
click.echo()
|
|
6698
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
6699
|
+
click.echo()
|
|
6700
|
+
|
|
6701
|
+
except Exception:
|
|
6702
|
+
pass
|
|
6703
|
+
|
|
6548
6704
|
# Parse and display Nuclei results if available (only when not showing raw logs)
|
|
6549
6705
|
if not show_raw_logs and job.get('tool') == 'nuclei' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
6550
6706
|
try:
|
|
@@ -7157,6 +7313,46 @@ def view_job_detail(job_id: int):
|
|
|
7157
7313
|
except Exception as e:
|
|
7158
7314
|
pass
|
|
7159
7315
|
|
|
7316
|
+
# Hydra ERROR handler
|
|
7317
|
+
if not show_raw_logs and job.get('tool') == 'hydra' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7318
|
+
try:
|
|
7319
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7320
|
+
log_text = f.read()
|
|
7321
|
+
|
|
7322
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7323
|
+
click.echo(click.style("[ERROR] HYDRA ATTACK FAILED", bold=True, fg='red'))
|
|
7324
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7325
|
+
click.echo()
|
|
7326
|
+
|
|
7327
|
+
# Check for common hydra errors
|
|
7328
|
+
error_msg = None
|
|
7329
|
+
if 'Connection refused' in log_text:
|
|
7330
|
+
error_msg = "Connection refused - service may be down or port closed"
|
|
7331
|
+
elif 'could not connect' in log_text.lower():
|
|
7332
|
+
error_msg = "Could not connect to target service"
|
|
7333
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
7334
|
+
error_msg = "Connection timed out - target may be slow or filtering"
|
|
7335
|
+
elif 'too many connections' in log_text.lower():
|
|
7336
|
+
error_msg = "Too many connections - try reducing threads with -t"
|
|
7337
|
+
elif 'target does not support' in log_text.lower():
|
|
7338
|
+
error_msg = "Target does not support the specified protocol"
|
|
7339
|
+
elif 'ERROR' in log_text:
|
|
7340
|
+
match = re.search(r'\[ERROR\]\s*(.+?)(?:\n|$)', log_text)
|
|
7341
|
+
if match:
|
|
7342
|
+
error_msg = match.group(1).strip()[:100]
|
|
7343
|
+
|
|
7344
|
+
if error_msg:
|
|
7345
|
+
click.echo(f" {error_msg}")
|
|
7346
|
+
else:
|
|
7347
|
+
click.echo(" Attack failed - see raw logs for details (press 'r')")
|
|
7348
|
+
|
|
7349
|
+
click.echo()
|
|
7350
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7351
|
+
click.echo()
|
|
7352
|
+
|
|
7353
|
+
except Exception:
|
|
7354
|
+
pass
|
|
7355
|
+
|
|
7160
7356
|
# Parse and display Hydra results if available (only when not showing raw logs)
|
|
7161
7357
|
if not show_raw_logs and job.get('tool') == 'hydra' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
7162
7358
|
try:
|
|
@@ -7472,7 +7668,7 @@ def view_job_detail(job_id: int):
|
|
|
7472
7668
|
# =================================================================
|
|
7473
7669
|
|
|
7474
7670
|
# Tools with custom error handlers (don't show generic for these)
|
|
7475
|
-
tools_with_error_handlers = ['gobuster', 'ffuf']
|
|
7671
|
+
tools_with_error_handlers = ['gobuster', 'ffuf', 'nmap', 'ard', 'hydra', 'nuclei', 'sqlmap']
|
|
7476
7672
|
|
|
7477
7673
|
# Tools with custom warning handlers
|
|
7478
7674
|
tools_with_warning_handlers = ['gobuster', 'ffuf']
|
|
@@ -7481,7 +7677,8 @@ def view_job_detail(job_id: int):
|
|
|
7481
7677
|
tools_with_no_results_handlers = [
|
|
7482
7678
|
'ffuf', 'gobuster', 'sqlmap', 'wpscan', 'dnsrecon', 'nuclei',
|
|
7483
7679
|
'theharvester', 'nikto', 'whois', 'crackmapexec', 'smbmap',
|
|
7484
|
-
'enum4linux', 'hydra', 'searchsploit', 'http_fingerprint'
|
|
7680
|
+
'enum4linux', 'hydra', 'searchsploit', 'http_fingerprint',
|
|
7681
|
+
'nmap', 'ard'
|
|
7485
7682
|
]
|
|
7486
7683
|
|
|
7487
7684
|
current_tool = job.get('tool', '')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.26
|
|
4
4
|
Summary: AI-Powered Penetration Testing Platform with 40+ integrated tools
|
|
5
5
|
Author-email: CyberSoul Security <contact@cybersoulsecurity.com>
|
|
6
6
|
Maintainer-email: CyberSoul Security <contact@cybersoulsecurity.com>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|