souleyez 2.28.0__tar.gz → 2.31.0__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.28.0 → souleyez-2.31.0}/BETA_README.md +2 -2
- {souleyez-2.28.0/souleyez.egg-info → souleyez-2.31.0}/PKG-INFO +3 -3
- {souleyez-2.28.0 → souleyez-2.31.0}/pyproject.toml +1 -1
- souleyez-2.31.0/souleyez/__init__.py +1 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/tool_chaining.py +24 -4
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/README.md +1 -1
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/main.py +1 -1
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/database.py +59 -20
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/__init__.py +4 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/schema.sql +36 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/interactive.py +480 -215
- {souleyez-2.28.0 → souleyez-2.31.0/souleyez.egg-info}/PKG-INFO +3 -3
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_config.py +10 -1
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_result_handler_sqlmap.py +11 -4
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_storage.py +5 -4
- souleyez-2.28.0/souleyez/__init__.py +0 -1
- {souleyez-2.28.0 → souleyez-2.31.0}/LICENSE +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/MANIFEST.in +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/README.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/setup.cfg +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/action_mapper.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/chain_advisor.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/claude_provider.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/context_builder.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/executor.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/feedback_handler.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/llm_factory.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/llm_provider.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/ollama_provider.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/ollama_service.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/path_scorer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/recommender.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/report_context.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/report_prompts.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/report_service.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/result_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ai/safety.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/assets/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/assets/souleyez-icon.png +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/auth/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/auth/audit.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/auth/engagement_access.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/auth/permissions.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/auth/session_manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/auth/user_manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/audit.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/auth.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/deliverables.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/engagement.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/license.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/screenshots.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/commands/user.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/config.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/credential_tester.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/cve_mappings.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/cve_matcher.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_auto_mapper.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_chain_engine.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_database.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_integration.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_rpc_client.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_rpc_manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/msf_sync_manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/network_utils.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/parser_handler.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/pending_chains.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/templates.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/version_utils.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/vuln_correlation.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/core/web_utils.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/README.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/active_directory.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/cis_controls_v8.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/cloud_security.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/cmmc_2.0.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/external_network.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/ffiec_cat.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/gdpr_article32.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/glba_safeguards.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/hipaa_security.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/hitrust_csf.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/internal_network.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/iso27001.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/nerc_cip.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/nist_csf.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/owasp_top10_2021.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/pci_dss_4.0.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/ptes_standard.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/red_team.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/soc2_type2.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/templates/webapp_advanced.json +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/README.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/all_users.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/api_endpoints.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/default_credentials.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/macos_users.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/router_passwords.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/router_users.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/soul_pass.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/soul_users.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/subdomains_common.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/top100.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/top20_quick.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/web_extensions.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/data/wordlists/web_files_common.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/detection/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/detection/attack_signatures.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/detection/mitre_mappings.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/detection/validator.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/devtools.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/api-reference/cli-commands.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/api-reference/engagement-api.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/api-reference/integration-guide.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/api-reference/parser-formats.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/architecture/decisions/000-template.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/architecture/overview.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/database/MIGRATIONS.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/database/SCHEMA.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/images/README.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/security/best-practices.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/security/credential-encryption.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/security/password-protected-commands.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/security/secure-defaults.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/security/threat-model.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/ai-integration.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/attack-surface.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/auto-chaining.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/configuration.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/dependencies.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/evidence-vault.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/getting-started.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/installation.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/rbac.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/report-generation.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/scope-management.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/siem-integration.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/tools-reference.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/troubleshooting.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/uninstall.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/worker-management.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/docs/user-guide/workflows.md +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/background.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/base.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/job_status.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/loader.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/log_sanitizer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/result_handler.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/engine/worker_manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/export/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/export/evidence_bundle.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/feature_flags/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/feature_flags/features.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/feature_flags.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/history.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/importers/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/importers/msf_importer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/importers/smart_importer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/base.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/elastic.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/factory.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/sentinel.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/splunk.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/siem/wazuh.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/wazuh/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/wazuh/client.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/wazuh/config.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/wazuh/host_mapper.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/integrations/wazuh/sync.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/correlation_analyzer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/exploit_knowledge.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/exploit_suggestions.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/gap_analyzer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/gap_detector.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/sensitive_tables.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/service_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/surface_analyzer.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/intelligence/target_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/licensing/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/licensing/validator.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/log_config.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/migrations/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/migrations/fix_job_counter.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/bloodhound_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/crackmapexec_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/dalfox_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/dnsrecon_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/enum4linux_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/ffuf_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/gobuster_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/hashcat_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/http_fingerprint_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/hydra_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/impacket_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/john_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/msf_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/nikto_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/nmap_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/nuclei_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/responder_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/searchsploit_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/smbmap_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/sqlmap_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/theharvester_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/whois_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/parsers/wpscan_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/afp.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/afp_brute.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/ard.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/bloodhound.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/crackmapexec.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/dalfox.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/dns_hijack.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/dnsrecon.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/enum4linux.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/ffuf.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/firmware_extract.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/gobuster.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/hashcat.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/http_fingerprint.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/hydra.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/impacket_getnpusers.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/impacket_psexec.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/impacket_secretsdump.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/impacket_smbclient.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/john.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/macos_ssh.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/mdns.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/msf_auxiliary.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/msf_exploit.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/nikto.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/nmap.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/nuclei.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/plugin_base.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/plugin_template.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/responder.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/router_http_brute.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/router_ssh_brute.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/router_telnet_brute.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/routersploit.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/routersploit_exploit.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/searchsploit.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/smbmap.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/sqlmap.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/theharvester.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/tr069.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/upnp.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/upnp_abuse.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/vnc_access.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/vnc_brute.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/whois.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/plugins/wpscan.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/attack_chain.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/charts.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/compliance_mappings.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/detection_report.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/formatters.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/generator.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/reporting/metrics.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/scanner.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/security/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/security/scope_validator.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/security/validation.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/security.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/credentials.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/crypto.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/db.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/deliverable_evidence.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/deliverable_exporter.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/deliverable_templates.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/deliverables.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/engagements.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/evidence.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/execution_log.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/exploit_attempts.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/exploits.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/findings.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/hosts.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrate_to_engagements.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_005_screenshots.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_006_deliverables.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/migrations/migration_manager.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/msf_sessions.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/osint.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/recommendation_engine.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/screenshots.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/smb_shares.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/sqlmap_data.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/team_collaboration.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/timeline_tracker.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/wazuh_vulns.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/storage/web_paths.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/testing/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/testing/credential_tester.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/ai_quotes.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/attack_surface.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/chain_rules_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/correlation_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/dashboard.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/deliverables_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/design_system.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/errors.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/evidence_linking_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/evidence_vault.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/exploit_suggestions_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/export_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/gap_analysis_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/help_system.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/intelligence_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/interactive_selector.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/log_formatter.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/menu_components.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/msf_auxiliary_menu.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/pending_chains_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/progress_indicators.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/recommendations_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/rule_builder.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/setup_wizard.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/shortcuts.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/splunk_vulns_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/team_dashboard.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/template_selector.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/terminal.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/timeline_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/tool_setup.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/tutorial.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/tutorial_state.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui/wazuh_vulns_view.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/ui.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/utils/__init__.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/utils/tool_checker.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/utils.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez/wordlists.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez.egg-info/SOURCES.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez.egg-info/dependency_links.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez.egg-info/entry_points.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez.egg-info/requires.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/souleyez.egg-info/top_level.txt +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_config_enhanced.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_crypto.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_database_100_final.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_engagements.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_engagements_simple.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_job_status_tracking.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_logging.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_network_utils.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_ollama_service.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_plugin_base.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_recommender.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_schema.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_scope_integration.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_scope_validator.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_security_hardening.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_security_validation.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_sqlmap_parser.py +0 -0
- {souleyez-2.28.0 → souleyez-2.31.0}/tests/test_version_utils.py +0 -0
|
@@ -27,7 +27,7 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
|
|
|
27
27
|
|
|
28
28
|
> ⚠️ **Important**: Only use SoulEyez on systems you have explicit authorization to test.
|
|
29
29
|
|
|
30
|
-
## Version: 2.
|
|
30
|
+
## Version: 2.31.0
|
|
31
31
|
|
|
32
32
|
### What's Included
|
|
33
33
|
|
|
@@ -265,4 +265,4 @@ Happy hacking! 🛡️
|
|
|
265
265
|
|
|
266
266
|
---
|
|
267
267
|
|
|
268
|
-
**Version**: 2.
|
|
268
|
+
**Version**: 2.31.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.31.0
|
|
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>
|
|
@@ -78,7 +78,7 @@ Welcome to the SoulEyez beta! Thank you for helping us test and improve this pen
|
|
|
78
78
|
|
|
79
79
|
> ⚠️ **Important**: Only use SoulEyez on systems you have explicit authorization to test.
|
|
80
80
|
|
|
81
|
-
## Version: 2.
|
|
81
|
+
## Version: 2.31.0
|
|
82
82
|
|
|
83
83
|
### What's Included
|
|
84
84
|
|
|
@@ -316,4 +316,4 @@ Happy hacking! 🛡️
|
|
|
316
316
|
|
|
317
317
|
---
|
|
318
318
|
|
|
319
|
-
**Version**: 2.
|
|
319
|
+
**Version**: 2.31.0 | **Release Date**: January 2026 | **Maintainer**: CyberSoul Security
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.31.0'
|
|
@@ -1759,6 +1759,20 @@ class ToolChaining:
|
|
|
1759
1759
|
)
|
|
1760
1760
|
)
|
|
1761
1761
|
|
|
1762
|
+
# Database Admin → SQLMap (gentler settings for phpMyAdmin/Adminer)
|
|
1763
|
+
# These panels are slow and easily overwhelmed - use single thread and basic tests
|
|
1764
|
+
self.rules.append(
|
|
1765
|
+
ChainRule(
|
|
1766
|
+
trigger_tool='gobuster',
|
|
1767
|
+
trigger_condition='category:database_admin',
|
|
1768
|
+
target_tool='sqlmap',
|
|
1769
|
+
priority=6, # Lower priority than CVE/exploit scans
|
|
1770
|
+
args_template=['-u', '{target}', '--batch', '--forms', '--threads=1', '--time-sec=10',
|
|
1771
|
+
'--level=1', '--risk=1', '--technique=BEU', '--timeout=30'],
|
|
1772
|
+
description='Database admin panel detected, testing login form for SQL injection (low intensity)'
|
|
1773
|
+
)
|
|
1774
|
+
)
|
|
1775
|
+
|
|
1762
1776
|
# WordPress → WPScan enumeration
|
|
1763
1777
|
self.rules.append(
|
|
1764
1778
|
ChainRule(
|
|
@@ -5017,6 +5031,7 @@ class ToolChaining:
|
|
|
5017
5031
|
label=f"Auto-retry: gobuster (wildcard {exclude_length}b)",
|
|
5018
5032
|
engagement_id=engagement_id,
|
|
5019
5033
|
parent_id=job.get('id'),
|
|
5034
|
+
reason=f"Auto-triggered by gobuster: Wildcard response detected, retrying with --exclude-length {exclude_length}",
|
|
5020
5035
|
metadata={'retry_attempt': 1, 'retry_parent_job_id': job.get('id')}
|
|
5021
5036
|
)
|
|
5022
5037
|
|
|
@@ -5116,7 +5131,8 @@ class ToolChaining:
|
|
|
5116
5131
|
args=sqlmap_args,
|
|
5117
5132
|
label=f"Auto-chain: SQLMap testing {endpoint_url}",
|
|
5118
5133
|
engagement_id=engagement_id,
|
|
5119
|
-
parent_id=job.get('id')
|
|
5134
|
+
parent_id=job.get('id'),
|
|
5135
|
+
reason=f"Auto-triggered by ffuf: Database/dynamic endpoint detected ({status_code} response)"
|
|
5120
5136
|
)
|
|
5121
5137
|
|
|
5122
5138
|
job_ids.append(sqlmap_job_id)
|
|
@@ -5144,6 +5160,7 @@ class ToolChaining:
|
|
|
5144
5160
|
label=f"Auto-chain: ffuf recursive {endpoint_url}",
|
|
5145
5161
|
engagement_id=engagement_id,
|
|
5146
5162
|
parent_id=job.get('id'),
|
|
5163
|
+
reason=f"Auto-triggered by ffuf: {status_code} response suggests deeper path, fuzzing recursively",
|
|
5147
5164
|
metadata={'ffuf_depth': current_depth + 1}
|
|
5148
5165
|
)
|
|
5149
5166
|
|
|
@@ -5367,7 +5384,8 @@ class ToolChaining:
|
|
|
5367
5384
|
args=['-m', '18200', '-a', '0', 'data/wordlists/top100.txt'],
|
|
5368
5385
|
label='CRACK_ASREP',
|
|
5369
5386
|
engagement_id=engagement_id,
|
|
5370
|
-
parent_id=job.get('id')
|
|
5387
|
+
parent_id=job.get('id'),
|
|
5388
|
+
reason="Auto-triggered by impacket-getnpusers: AS-REP hash extracted, attempting to crack"
|
|
5371
5389
|
)
|
|
5372
5390
|
|
|
5373
5391
|
job_ids.append(job_id)
|
|
@@ -5412,7 +5430,8 @@ class ToolChaining:
|
|
|
5412
5430
|
args=['-m', '1000', '-a', '0', 'data/wordlists/top100.txt'],
|
|
5413
5431
|
label='CRACK_NTLM',
|
|
5414
5432
|
engagement_id=engagement_id,
|
|
5415
|
-
parent_id=job.get('id')
|
|
5433
|
+
parent_id=job.get('id'),
|
|
5434
|
+
reason="Auto-triggered by impacket-secretsdump: NTLM hash extracted, attempting to crack"
|
|
5416
5435
|
)
|
|
5417
5436
|
|
|
5418
5437
|
job_ids.append(job_id)
|
|
@@ -5452,7 +5471,8 @@ class ToolChaining:
|
|
|
5452
5471
|
args=[cred_str],
|
|
5453
5472
|
label='EXTRACT_CREDS',
|
|
5454
5473
|
engagement_id=engagement_id,
|
|
5455
|
-
parent_id=job.get('id')
|
|
5474
|
+
parent_id=job.get('id'),
|
|
5475
|
+
reason="Auto-triggered by hydra: Valid credentials found, attempting to extract domain secrets"
|
|
5456
5476
|
)
|
|
5457
5477
|
|
|
5458
5478
|
job_ids.append(job_id)
|
|
@@ -173,7 +173,7 @@ def _check_privileged_tools():
|
|
|
173
173
|
|
|
174
174
|
|
|
175
175
|
@click.group()
|
|
176
|
-
@click.version_option(version='2.
|
|
176
|
+
@click.version_option(version='2.31.0')
|
|
177
177
|
def cli():
|
|
178
178
|
"""SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
|
|
179
179
|
from souleyez.log_config import init_logging
|
|
@@ -31,7 +31,7 @@ class Database:
|
|
|
31
31
|
os.makedirs(db_dir, exist_ok=True)
|
|
32
32
|
|
|
33
33
|
conn = sqlite3.connect(self.db_path, timeout=30.0)
|
|
34
|
-
|
|
34
|
+
|
|
35
35
|
# Set secure permissions (owner read/write only)
|
|
36
36
|
os.chmod(self.db_path, 0o600)
|
|
37
37
|
conn.row_factory = sqlite3.Row
|
|
@@ -46,7 +46,44 @@ class Database:
|
|
|
46
46
|
"foreign_keys": True
|
|
47
47
|
})
|
|
48
48
|
|
|
49
|
+
# Check if this is an existing database (has tables)
|
|
50
|
+
cursor = conn.execute(
|
|
51
|
+
"SELECT name FROM sqlite_master WHERE type='table' AND name='engagements'"
|
|
52
|
+
)
|
|
53
|
+
is_existing_db = cursor.fetchone() is not None
|
|
54
|
+
conn.close()
|
|
55
|
+
|
|
56
|
+
# For EXISTING databases: Run migrations FIRST
|
|
57
|
+
# This ensures new columns exist before schema.sql tries to create indexes on them
|
|
58
|
+
if is_existing_db:
|
|
59
|
+
try:
|
|
60
|
+
from .migrations.migration_manager import MigrationManager
|
|
61
|
+
manager = MigrationManager(self.db_path)
|
|
62
|
+
pending = manager.get_pending_migrations()
|
|
63
|
+
if pending:
|
|
64
|
+
logger.info("Running pending migrations for existing database", extra={
|
|
65
|
+
"pending_count": len(pending)
|
|
66
|
+
})
|
|
67
|
+
manager.migrate()
|
|
68
|
+
logger.info("Migrations completed successfully", extra={
|
|
69
|
+
"count": len(pending)
|
|
70
|
+
})
|
|
71
|
+
except Exception as migration_error:
|
|
72
|
+
logger.error("Failed to run migrations on existing database", extra={
|
|
73
|
+
"error": str(migration_error),
|
|
74
|
+
"error_type": type(migration_error).__name__,
|
|
75
|
+
"traceback": traceback.format_exc()
|
|
76
|
+
})
|
|
77
|
+
raise # Don't continue if migrations fail for existing DB
|
|
78
|
+
|
|
79
|
+
# Reconnect for schema loading
|
|
80
|
+
conn = sqlite3.connect(self.db_path, timeout=30.0)
|
|
81
|
+
conn.row_factory = sqlite3.Row
|
|
82
|
+
conn.execute("PRAGMA foreign_keys = ON")
|
|
83
|
+
|
|
49
84
|
# Load and execute schema from the same directory as this file
|
|
85
|
+
# For fresh DBs: Creates all tables with current schema
|
|
86
|
+
# For existing DBs: CREATE TABLE IF NOT EXISTS is no-op, but ensures new tables/indexes
|
|
50
87
|
schema_path = Path(__file__).parent / "schema.sql"
|
|
51
88
|
|
|
52
89
|
if schema_path.exists():
|
|
@@ -228,26 +265,28 @@ class Database:
|
|
|
228
265
|
|
|
229
266
|
conn.commit()
|
|
230
267
|
conn.close()
|
|
231
|
-
|
|
232
|
-
# Run
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
268
|
+
|
|
269
|
+
# For FRESH databases: Run migrations after schema.sql loads
|
|
270
|
+
# (Existing DBs already had migrations run before schema.sql)
|
|
271
|
+
if not is_existing_db:
|
|
272
|
+
try:
|
|
273
|
+
from .migrations.migration_manager import MigrationManager
|
|
274
|
+
manager = MigrationManager(self.db_path)
|
|
275
|
+
pending = manager.get_pending_migrations()
|
|
276
|
+
if pending:
|
|
277
|
+
logger.info("Running pending migrations for fresh database", extra={
|
|
278
|
+
"pending_count": len(pending)
|
|
279
|
+
})
|
|
280
|
+
manager.migrate()
|
|
281
|
+
logger.info("Migrations completed successfully", extra={
|
|
282
|
+
"count": len(pending)
|
|
283
|
+
})
|
|
284
|
+
except Exception as migration_error:
|
|
285
|
+
logger.error("Failed to run migrations", extra={
|
|
286
|
+
"error": str(migration_error),
|
|
287
|
+
"error_type": type(migration_error).__name__,
|
|
288
|
+
"traceback": traceback.format_exc()
|
|
244
289
|
})
|
|
245
|
-
except Exception as migration_error:
|
|
246
|
-
logger.error("Failed to run migrations", extra={
|
|
247
|
-
"error": str(migration_error),
|
|
248
|
-
"error_type": type(migration_error).__name__,
|
|
249
|
-
"traceback": traceback.format_exc()
|
|
250
|
-
})
|
|
251
290
|
|
|
252
291
|
except Exception as e:
|
|
253
292
|
logger.error("Database initialization failed", extra={
|
|
@@ -29,6 +29,8 @@ from . import (
|
|
|
29
29
|
_022_wazuh_indexer_columns,
|
|
30
30
|
_023_fix_detection_results_fk,
|
|
31
31
|
_024_wazuh_vulnerabilities,
|
|
32
|
+
_025_multi_siem_support,
|
|
33
|
+
_026_add_engagement_scope,
|
|
32
34
|
)
|
|
33
35
|
|
|
34
36
|
# Migration registry - maps version to module
|
|
@@ -56,6 +58,8 @@ MIGRATIONS_REGISTRY = {
|
|
|
56
58
|
'022': _022_wazuh_indexer_columns,
|
|
57
59
|
'023': _023_fix_detection_results_fk,
|
|
58
60
|
'024': _024_wazuh_vulnerabilities,
|
|
61
|
+
'025': _025_multi_siem_support,
|
|
62
|
+
'026': _026_add_engagement_scope,
|
|
59
63
|
}
|
|
60
64
|
|
|
61
65
|
|
|
@@ -6,6 +6,7 @@ CREATE TABLE IF NOT EXISTS engagements (
|
|
|
6
6
|
owner_id INTEGER,
|
|
7
7
|
estimated_hours FLOAT DEFAULT 0,
|
|
8
8
|
actual_hours FLOAT DEFAULT 0,
|
|
9
|
+
scope_enforcement TEXT DEFAULT 'off',
|
|
9
10
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
10
11
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
11
12
|
);
|
|
@@ -21,6 +22,7 @@ CREATE TABLE IF NOT EXISTS hosts (
|
|
|
21
22
|
mac_address TEXT,
|
|
22
23
|
status TEXT DEFAULT 'up',
|
|
23
24
|
access_level TEXT DEFAULT 'none',
|
|
25
|
+
scope_status TEXT DEFAULT 'unknown',
|
|
24
26
|
notes TEXT,
|
|
25
27
|
tags TEXT,
|
|
26
28
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
@@ -540,3 +542,37 @@ CREATE INDEX IF NOT EXISTS idx_wazuh_config_engagement ON wazuh_config(engagemen
|
|
|
540
542
|
CREATE INDEX IF NOT EXISTS idx_detection_results_job ON detection_results(job_id);
|
|
541
543
|
CREATE INDEX IF NOT EXISTS idx_detection_results_engagement ON detection_results(engagement_id);
|
|
542
544
|
CREATE INDEX IF NOT EXISTS idx_detection_results_status ON detection_results(detection_status);
|
|
545
|
+
|
|
546
|
+
-- Engagement Scope Validation (from migration 026)
|
|
547
|
+
CREATE TABLE IF NOT EXISTS engagement_scope (
|
|
548
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
549
|
+
engagement_id INTEGER NOT NULL,
|
|
550
|
+
scope_type TEXT NOT NULL,
|
|
551
|
+
value TEXT NOT NULL,
|
|
552
|
+
is_excluded BOOLEAN DEFAULT 0,
|
|
553
|
+
description TEXT,
|
|
554
|
+
added_by TEXT,
|
|
555
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
556
|
+
FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE,
|
|
557
|
+
UNIQUE(engagement_id, scope_type, value)
|
|
558
|
+
);
|
|
559
|
+
|
|
560
|
+
CREATE TABLE IF NOT EXISTS scope_validation_log (
|
|
561
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
562
|
+
engagement_id INTEGER NOT NULL,
|
|
563
|
+
job_id INTEGER,
|
|
564
|
+
target TEXT NOT NULL,
|
|
565
|
+
validation_result TEXT NOT NULL,
|
|
566
|
+
action_taken TEXT NOT NULL,
|
|
567
|
+
matched_scope_id INTEGER,
|
|
568
|
+
user_id TEXT,
|
|
569
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
570
|
+
FOREIGN KEY (engagement_id) REFERENCES engagements(id) ON DELETE CASCADE
|
|
571
|
+
);
|
|
572
|
+
|
|
573
|
+
CREATE INDEX IF NOT EXISTS idx_scope_engagement ON engagement_scope(engagement_id);
|
|
574
|
+
CREATE INDEX IF NOT EXISTS idx_scope_type ON engagement_scope(scope_type);
|
|
575
|
+
CREATE INDEX IF NOT EXISTS idx_scope_log_engagement ON scope_validation_log(engagement_id);
|
|
576
|
+
CREATE INDEX IF NOT EXISTS idx_scope_log_result ON scope_validation_log(validation_result);
|
|
577
|
+
CREATE INDEX IF NOT EXISTS idx_scope_log_timestamp ON scope_validation_log(created_at DESC);
|
|
578
|
+
CREATE INDEX IF NOT EXISTS idx_hosts_scope_status ON hosts(scope_status);
|