souleyez 2.43.27__tar.gz → 2.43.28__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.27/souleyez.egg-info → souleyez-2.43.28}/PKG-INFO +1 -1
- {souleyez-2.43.27 → souleyez-2.43.28}/pyproject.toml +1 -1
- souleyez-2.43.28/souleyez/__init__.py +2 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/README.md +1 -1
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/main.py +1 -1
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/interactive.py +230 -1
- {souleyez-2.43.27 → souleyez-2.43.28/souleyez.egg-info}/PKG-INFO +1 -1
- souleyez-2.43.27/souleyez/__init__.py +0 -2
- {souleyez-2.43.27 → souleyez-2.43.28}/LICENSE +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/MANIFEST.in +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/README.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/setup.cfg +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/action_mapper.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/chain_advisor.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/claude_provider.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/context_builder.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/executor.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/feedback_handler.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/llm_factory.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/llm_provider.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/ollama_provider.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/ollama_service.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/path_scorer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/recommender.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/report_context.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/report_prompts.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/report_service.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/result_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ai/safety.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/assets/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/assets/souleyez-icon.png +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/auth/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/auth/audit.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/auth/engagement_access.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/auth/permissions.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/auth/session_manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/auth/user_manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/audit.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/auth.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/deliverables.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/engagement.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/license.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/screenshots.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/commands/user.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/config.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/credential_tester.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/cve_mappings.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/cve_matcher.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_auto_mapper.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_chain_engine.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_database.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_integration.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_rpc_client.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_rpc_manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/msf_sync_manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/network_utils.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/parser_handler.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/pending_chains.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/templates.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/tool_chaining.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/version_utils.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/vuln_correlation.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/core/web_utils.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/README.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/active_directory.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/cis_controls_v8.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/cloud_security.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/cmmc_2.0.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/external_network.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/ffiec_cat.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/gdpr_article32.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/glba_safeguards.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/hipaa_security.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/hitrust_csf.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/internal_network.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/iso27001.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/nerc_cip.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/nist_csf.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/owasp_top10_2021.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/pci_dss_4.0.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/ptes_standard.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/red_team.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/soc2_type2.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/templates/webapp_advanced.json +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/README.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/all_users.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/api_endpoints.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/default_credentials.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/macos_users.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/router_passwords.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/router_users.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/soul_pass.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/soul_users.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/subdomains_common.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/top100.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/top20_quick.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/vnc_passwords.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/web_dirs_common.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/web_extensions.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/data/wordlists/web_files_common.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/detection/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/detection/attack_signatures.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/detection/mitre_mappings.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/detection/validator.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/devtools.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/api-reference/cli-commands.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/api-reference/engagement-api.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/api-reference/integration-guide.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/api-reference/parser-formats.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/architecture/decisions/000-template.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/architecture/decisions/001-local-llm-over-cloud.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/architecture/decisions/002-master-password-approach.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/architecture/decisions/003-database-schema-design.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/architecture/overview.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/database/MIGRATIONS.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/database/SCHEMA.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/database/SCHEMA_ERD.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/developer-guide/test_coverage_plan.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/developer-guide/ui-design-system.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/images/README.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/security/best-practices.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/security/credential-encryption.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/security/password-protected-commands.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/security/secure-defaults.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/security/threat-model.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/ai-integration.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/attack-surface.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/auto-chaining.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/configuration.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/deliverables-screenshots.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/dependencies.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/evidence-vault.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/exploit-suggestions.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/getting-started.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/installation.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/metasploit-integration.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/rbac.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/report-generation.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/scope-management.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/siem-integration.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/tools-reference.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/troubleshooting.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/uninstall.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/worker-management.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/docs/user-guide/workflows.md +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/background.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/base.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/job_status.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/loader.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/log_sanitizer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/result_handler.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/engine/worker_manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/export/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/export/evidence_bundle.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/feature_flags/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/feature_flags/features.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/feature_flags.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/history.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/importers/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/importers/msf_importer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/importers/smart_importer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/base.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/elastic.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/factory.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/googlesecops.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/rule_mappings/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/rule_mappings/wazuh_rules.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/sentinel.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/splunk.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/siem/wazuh.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/wazuh/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/wazuh/client.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/wazuh/config.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/wazuh/host_mapper.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/integrations/wazuh/sync.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/correlation_analyzer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/exploit_knowledge.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/exploit_suggestions.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/gap_analyzer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/gap_detector.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/sensitive_tables.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/service_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/surface_analyzer.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/intelligence/target_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/licensing/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/licensing/validator.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/log_config.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/migrations/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/migrations/fix_job_counter.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/bloodhound_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/crackmapexec_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/dalfox_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/dnsrecon_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/enum4linux_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/ffuf_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/gobuster_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/hashcat_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/http_fingerprint_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/hydra_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/impacket_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/john_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/msf_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/nikto_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/nmap_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/nuclei_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/responder_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/searchsploit_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/smbmap_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/sqlmap_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/theharvester_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/whois_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/parsers/wpscan_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/afp.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/afp_brute.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/ard.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/bloodhound.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/crackmapexec.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/dalfox.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/dns_hijack.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/dnsrecon.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/enum4linux.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/ffuf.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/firmware_extract.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/gobuster.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/hashcat.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/http_fingerprint.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/hydra.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/impacket_getnpusers.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/impacket_psexec.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/impacket_secretsdump.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/impacket_smbclient.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/john.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/macos_ssh.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/mdns.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/msf_auxiliary.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/msf_exploit.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/nikto.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/nmap.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/nuclei.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/plugin_base.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/plugin_template.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/responder.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/router_http_brute.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/router_ssh_brute.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/router_telnet_brute.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/routersploit.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/routersploit_exploit.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/searchsploit.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/smbmap.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/sqlmap.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/theharvester.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/tr069.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/upnp.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/upnp_abuse.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/vnc_access.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/vnc_brute.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/whois.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/plugins/wpscan.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/attack_chain.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/charts.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/compliance_mappings.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/detection_report.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/formatters.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/generator.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/reporting/metrics.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/scanner.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/security/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/security/scope_validator.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/security/validation.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/security.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/credentials.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/crypto.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/database.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/db.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/deliverable_evidence.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/deliverable_exporter.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/deliverable_templates.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/deliverables.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/engagements.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/evidence.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/execution_log.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/exploit_attempts.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/exploits.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/findings.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/hosts.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrate_to_engagements.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_001_add_credential_enhancements.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_002_add_status_tracking.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_003_add_execution_log.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_005_screenshots.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_006_deliverables.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_007_deliverable_templates.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_008_add_nuclei_table.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_009_add_cme_tables.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_010_evidence_linking.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_011_timeline_tracking.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_012_team_collaboration.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_013_add_host_tags.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_014_exploit_attempts.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_015_add_mac_os_fields.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_016_add_domain_field.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_017_msf_sessions.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_018_add_osint_target.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_019_add_engagement_type.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_020_add_rbac.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_021_wazuh_integration.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_022_wazuh_indexer_columns.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_023_fix_detection_results_fk.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_025_multi_siem_support.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_026_add_engagement_scope.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/_027_multi_siem_persistence.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/migrations/migration_manager.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/msf_sessions.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/osint.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/recommendation_engine.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/schema.sql +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/screenshots.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/smb_shares.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/sqlmap_data.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/team_collaboration.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/timeline_tracker.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/wazuh_vulns.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/storage/web_paths.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/testing/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/testing/credential_tester.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/ai_quotes.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/attack_surface.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/chain_rules_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/correlation_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/dashboard.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/deliverables_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/design_system.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/errors.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/evidence_linking_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/evidence_vault.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/exploit_suggestions_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/export_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/gap_analysis_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/help_system.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/intelligence_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/interactive_selector.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/log_formatter.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/menu_components.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/msf_auxiliary_menu.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/pending_chains_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/progress_indicators.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/recommendations_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/rule_builder.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/setup_wizard.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/shortcuts.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/splunk_gap_analysis_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/splunk_vulns_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/team_dashboard.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/template_selector.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/terminal.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/timeline_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/tool_setup.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/tutorial.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/tutorial_state.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/wazuh_vulns_view.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui/wordlist_browser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/ui.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/utils/__init__.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/utils/tool_checker.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/utils.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez/wordlists.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez.egg-info/SOURCES.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez.egg-info/dependency_links.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez.egg-info/entry_points.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez.egg-info/requires.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/souleyez.egg-info/top_level.txt +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_config.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_config_enhanced.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_crypto.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_database_100_final.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_engagements.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_engagements_simple.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_job_status_tracking.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_logging.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_network_utils.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_ollama_service.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_plugin_base.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_recommender.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_result_handler_sqlmap.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_schema.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_scope_integration.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_scope_validator.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_security_hardening.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_security_validation.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_sqlmap_parser.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/tests/test_storage.py +0 -0
- {souleyez-2.43.27 → souleyez-2.43.28}/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.28
|
|
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.28')
|
|
177
177
|
def cli():
|
|
178
178
|
"""SoulEyez - AI-Powered Pentesting Platform by CyberSoul Security"""
|
|
179
179
|
from souleyez.log_config import init_logging
|
|
@@ -7113,6 +7113,40 @@ def view_job_detail(job_id: int):
|
|
|
7113
7113
|
# Fall back to raw log if parsing fails
|
|
7114
7114
|
pass
|
|
7115
7115
|
|
|
7116
|
+
# WHOIS ERROR handler
|
|
7117
|
+
if not show_raw_logs and job.get('tool') == 'whois' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7118
|
+
try:
|
|
7119
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7120
|
+
log_text = f.read()
|
|
7121
|
+
|
|
7122
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7123
|
+
click.echo(click.style("[ERROR] WHOIS LOOKUP FAILED", bold=True, fg='red'))
|
|
7124
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7125
|
+
click.echo()
|
|
7126
|
+
|
|
7127
|
+
# Check for common whois errors
|
|
7128
|
+
error_msg = None
|
|
7129
|
+
if 'No match for' in log_text or 'NOT FOUND' in log_text.upper():
|
|
7130
|
+
error_msg = "Domain not found in WHOIS database"
|
|
7131
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
7132
|
+
error_msg = "WHOIS query timed out - server may be slow"
|
|
7133
|
+
elif 'Connection refused' in log_text:
|
|
7134
|
+
error_msg = "Connection refused - WHOIS server may be down"
|
|
7135
|
+
elif 'rate limit' in log_text.lower() or 'too many' in log_text.lower():
|
|
7136
|
+
error_msg = "Rate limited - too many WHOIS queries"
|
|
7137
|
+
|
|
7138
|
+
if error_msg:
|
|
7139
|
+
click.echo(f" {error_msg}")
|
|
7140
|
+
else:
|
|
7141
|
+
click.echo(" Lookup failed - see raw logs for details (press 'r')")
|
|
7142
|
+
|
|
7143
|
+
click.echo()
|
|
7144
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7145
|
+
click.echo()
|
|
7146
|
+
|
|
7147
|
+
except Exception:
|
|
7148
|
+
pass
|
|
7149
|
+
|
|
7116
7150
|
# Parse and display WHOIS results if available (only when not showing raw logs)
|
|
7117
7151
|
if not show_raw_logs and job.get('tool') == 'whois' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
7118
7152
|
try:
|
|
@@ -7192,6 +7226,46 @@ def view_job_detail(job_id: int):
|
|
|
7192
7226
|
except Exception as e:
|
|
7193
7227
|
pass
|
|
7194
7228
|
|
|
7229
|
+
# CrackMapExec ERROR handler
|
|
7230
|
+
if not show_raw_logs and job.get('tool') == 'crackmapexec' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7231
|
+
try:
|
|
7232
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7233
|
+
log_text = f.read()
|
|
7234
|
+
|
|
7235
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7236
|
+
click.echo(click.style("[ERROR] CRACKMAPEXEC FAILED", bold=True, fg='red'))
|
|
7237
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7238
|
+
click.echo()
|
|
7239
|
+
|
|
7240
|
+
# Check for common CME errors
|
|
7241
|
+
error_msg = None
|
|
7242
|
+
if 'Connection refused' in log_text or 'Connection reset' in log_text:
|
|
7243
|
+
error_msg = "Connection refused - SMB service may be down"
|
|
7244
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
7245
|
+
error_msg = "Connection timed out - target may be slow or filtering"
|
|
7246
|
+
elif 'STATUS_LOGON_FAILURE' in log_text:
|
|
7247
|
+
error_msg = "Authentication failed - invalid credentials"
|
|
7248
|
+
elif 'STATUS_ACCESS_DENIED' in log_text:
|
|
7249
|
+
error_msg = "Access denied - insufficient privileges"
|
|
7250
|
+
elif 'Errno 113' in log_text or 'No route to host' in log_text:
|
|
7251
|
+
error_msg = "No route to host - network unreachable"
|
|
7252
|
+
elif '[-]' in log_text:
|
|
7253
|
+
match = re.search(r'\[-\]\s*(.+?)(?:\n|$)', log_text)
|
|
7254
|
+
if match:
|
|
7255
|
+
error_msg = match.group(1).strip()[:100]
|
|
7256
|
+
|
|
7257
|
+
if error_msg:
|
|
7258
|
+
click.echo(f" {error_msg}")
|
|
7259
|
+
else:
|
|
7260
|
+
click.echo(" Scan failed - see raw logs for details (press 'r')")
|
|
7261
|
+
|
|
7262
|
+
click.echo()
|
|
7263
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7264
|
+
click.echo()
|
|
7265
|
+
|
|
7266
|
+
except Exception:
|
|
7267
|
+
pass
|
|
7268
|
+
|
|
7195
7269
|
# Parse and display CrackMapExec results if available (only when not showing raw logs)
|
|
7196
7270
|
if not show_raw_logs and job.get('tool') == 'crackmapexec' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
7197
7271
|
try:
|
|
@@ -7241,6 +7315,46 @@ def view_job_detail(job_id: int):
|
|
|
7241
7315
|
except Exception as e:
|
|
7242
7316
|
pass
|
|
7243
7317
|
|
|
7318
|
+
# SMBMap ERROR handler
|
|
7319
|
+
if not show_raw_logs and job.get('tool') == 'smbmap' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7320
|
+
try:
|
|
7321
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7322
|
+
log_text = f.read()
|
|
7323
|
+
|
|
7324
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7325
|
+
click.echo(click.style("[ERROR] SMBMAP FAILED", bold=True, fg='red'))
|
|
7326
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7327
|
+
click.echo()
|
|
7328
|
+
|
|
7329
|
+
# Check for common smbmap errors
|
|
7330
|
+
error_msg = None
|
|
7331
|
+
if 'Connection refused' in log_text or 'Connection reset' in log_text:
|
|
7332
|
+
error_msg = "Connection refused - SMB service may be down"
|
|
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 'Authentication error' in log_text or 'LOGON_FAILURE' in log_text:
|
|
7336
|
+
error_msg = "Authentication failed - invalid credentials"
|
|
7337
|
+
elif 'Access denied' in log_text.lower():
|
|
7338
|
+
error_msg = "Access denied - insufficient privileges"
|
|
7339
|
+
elif 'Errno 113' in log_text or 'No route to host' in log_text:
|
|
7340
|
+
error_msg = "No route to host - network unreachable"
|
|
7341
|
+
elif '[-]' in log_text:
|
|
7342
|
+
match = re.search(r'\[-\]\s*(.+?)(?:\n|$)', log_text)
|
|
7343
|
+
if match:
|
|
7344
|
+
error_msg = match.group(1).strip()[:100]
|
|
7345
|
+
|
|
7346
|
+
if error_msg:
|
|
7347
|
+
click.echo(f" {error_msg}")
|
|
7348
|
+
else:
|
|
7349
|
+
click.echo(" Scan failed - see raw logs for details (press 'r')")
|
|
7350
|
+
|
|
7351
|
+
click.echo()
|
|
7352
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7353
|
+
click.echo()
|
|
7354
|
+
|
|
7355
|
+
except Exception:
|
|
7356
|
+
pass
|
|
7357
|
+
|
|
7244
7358
|
# Parse and display SMBMap results if available (only when not showing raw logs)
|
|
7245
7359
|
if not show_raw_logs and job.get('tool') == 'smbmap' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
7246
7360
|
try:
|
|
@@ -7320,6 +7434,44 @@ def view_job_detail(job_id: int):
|
|
|
7320
7434
|
except Exception as e:
|
|
7321
7435
|
pass
|
|
7322
7436
|
|
|
7437
|
+
# enum4linux ERROR handler
|
|
7438
|
+
if not show_raw_logs and job.get('tool') == 'enum4linux' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7439
|
+
try:
|
|
7440
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7441
|
+
log_text = f.read()
|
|
7442
|
+
|
|
7443
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7444
|
+
click.echo(click.style("[ERROR] ENUM4LINUX FAILED", bold=True, fg='red'))
|
|
7445
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7446
|
+
click.echo()
|
|
7447
|
+
|
|
7448
|
+
# Check for common enum4linux errors
|
|
7449
|
+
error_msg = None
|
|
7450
|
+
if 'Connection refused' in log_text:
|
|
7451
|
+
error_msg = "Connection refused - SMB/NetBIOS service may be down"
|
|
7452
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
7453
|
+
error_msg = "Connection timed out - target may be slow or filtering"
|
|
7454
|
+
elif 'NT_STATUS_ACCESS_DENIED' in log_text:
|
|
7455
|
+
error_msg = "Access denied - null session may be blocked"
|
|
7456
|
+
elif 'NT_STATUS_LOGON_FAILURE' in log_text:
|
|
7457
|
+
error_msg = "Logon failure - authentication failed"
|
|
7458
|
+
elif 'Errno 113' in log_text or 'No route to host' in log_text:
|
|
7459
|
+
error_msg = "No route to host - network unreachable"
|
|
7460
|
+
elif 'Could not initialise' in log_text:
|
|
7461
|
+
error_msg = "Could not initialize - target may not support SMB"
|
|
7462
|
+
|
|
7463
|
+
if error_msg:
|
|
7464
|
+
click.echo(f" {error_msg}")
|
|
7465
|
+
else:
|
|
7466
|
+
click.echo(" Scan failed - see raw logs for details (press 'r')")
|
|
7467
|
+
|
|
7468
|
+
click.echo()
|
|
7469
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7470
|
+
click.echo()
|
|
7471
|
+
|
|
7472
|
+
except Exception:
|
|
7473
|
+
pass
|
|
7474
|
+
|
|
7323
7475
|
# Parse and display enum4linux results if available (only when not showing raw logs)
|
|
7324
7476
|
if not show_raw_logs and job.get('tool') == 'enum4linux' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
7325
7477
|
try:
|
|
@@ -7410,6 +7562,48 @@ def view_job_detail(job_id: int):
|
|
|
7410
7562
|
has_credentials = False
|
|
7411
7563
|
has_many_credentials = False
|
|
7412
7564
|
|
|
7565
|
+
# msf_auxiliary ERROR handler
|
|
7566
|
+
if not show_raw_logs and job.get('tool') == 'msf_auxiliary' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7567
|
+
try:
|
|
7568
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7569
|
+
log_text = f.read()
|
|
7570
|
+
|
|
7571
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7572
|
+
click.echo(click.style("[ERROR] METASPLOIT AUXILIARY FAILED", bold=True, fg='red'))
|
|
7573
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7574
|
+
click.echo()
|
|
7575
|
+
|
|
7576
|
+
# Check for common MSF errors
|
|
7577
|
+
error_msg = None
|
|
7578
|
+
if 'Connection refused' in log_text:
|
|
7579
|
+
error_msg = "Connection refused - target service may be down"
|
|
7580
|
+
elif 'timed out' in log_text.lower() or 'timeout' in log_text.lower():
|
|
7581
|
+
error_msg = "Connection timed out - target may be slow or filtering"
|
|
7582
|
+
elif 'Exploit failed' in log_text:
|
|
7583
|
+
error_msg = "Exploit failed - target may not be vulnerable"
|
|
7584
|
+
elif 'Module not found' in log_text or 'Unknown module' in log_text:
|
|
7585
|
+
error_msg = "Module not found - check module name"
|
|
7586
|
+
elif 'Required option' in log_text:
|
|
7587
|
+
match = re.search(r'Required option\s*[\'"]?(\w+)[\'"]?\s*is missing', log_text)
|
|
7588
|
+
if match:
|
|
7589
|
+
error_msg = f"Required option '{match.group(1)}' is missing"
|
|
7590
|
+
elif '[-]' in log_text:
|
|
7591
|
+
match = re.search(r'\[-\]\s*(.+?)(?:\n|$)', log_text)
|
|
7592
|
+
if match:
|
|
7593
|
+
error_msg = match.group(1).strip()[:100]
|
|
7594
|
+
|
|
7595
|
+
if error_msg:
|
|
7596
|
+
click.echo(f" {error_msg}")
|
|
7597
|
+
else:
|
|
7598
|
+
click.echo(" Module failed - see raw logs for details (press 'r')")
|
|
7599
|
+
|
|
7600
|
+
click.echo()
|
|
7601
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7602
|
+
click.echo()
|
|
7603
|
+
|
|
7604
|
+
except Exception:
|
|
7605
|
+
pass
|
|
7606
|
+
|
|
7413
7607
|
# Parse and display msf_auxiliary results if available (only when not showing raw logs)
|
|
7414
7608
|
if not show_raw_logs and job.get('tool') == 'msf_auxiliary' and job.get('status') in ['done', 'completed'] and log_path and os.path.exists(log_path):
|
|
7415
7609
|
try:
|
|
@@ -7627,6 +7821,40 @@ def view_job_detail(job_id: int):
|
|
|
7627
7821
|
# Silently fail - not critical
|
|
7628
7822
|
pass
|
|
7629
7823
|
|
|
7824
|
+
# SearchSploit ERROR handler
|
|
7825
|
+
if not show_raw_logs and job.get('tool') == 'searchsploit' and job.get('status') == 'error' and log_path and os.path.exists(log_path):
|
|
7826
|
+
try:
|
|
7827
|
+
with open(log_path, 'r', encoding='utf-8', errors='replace') as f:
|
|
7828
|
+
log_text = f.read()
|
|
7829
|
+
|
|
7830
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7831
|
+
click.echo(click.style("[ERROR] SEARCHSPLOIT FAILED", bold=True, fg='red'))
|
|
7832
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7833
|
+
click.echo()
|
|
7834
|
+
|
|
7835
|
+
# Check for common searchsploit errors
|
|
7836
|
+
error_msg = None
|
|
7837
|
+
if 'not found' in log_text.lower() and 'command' in log_text.lower():
|
|
7838
|
+
error_msg = "searchsploit not found - install exploitdb package"
|
|
7839
|
+
elif 'database' in log_text.lower() and ('not found' in log_text.lower() or 'missing' in log_text.lower()):
|
|
7840
|
+
error_msg = "Exploit database not found - run searchsploit -u to update"
|
|
7841
|
+
elif 'Error' in log_text:
|
|
7842
|
+
match = re.search(r'Error[:\s]+(.+?)(?:\n|$)', log_text, re.IGNORECASE)
|
|
7843
|
+
if match:
|
|
7844
|
+
error_msg = match.group(1).strip()[:100]
|
|
7845
|
+
|
|
7846
|
+
if error_msg:
|
|
7847
|
+
click.echo(f" {error_msg}")
|
|
7848
|
+
else:
|
|
7849
|
+
click.echo(" Search failed - see raw logs for details (press 'r')")
|
|
7850
|
+
|
|
7851
|
+
click.echo()
|
|
7852
|
+
click.echo(click.style("=" * 70, fg='red'))
|
|
7853
|
+
click.echo()
|
|
7854
|
+
|
|
7855
|
+
except Exception:
|
|
7856
|
+
pass
|
|
7857
|
+
|
|
7630
7858
|
# Parse and display SearchSploit results if available (only when not showing raw logs)
|
|
7631
7859
|
if not show_raw_logs and job.get('tool') == 'searchsploit' and job.get('status') in ['done', 'completed', 'no_results'] and log_path and os.path.exists(log_path):
|
|
7632
7860
|
try:
|
|
@@ -7830,7 +8058,8 @@ def view_job_detail(job_id: int):
|
|
|
7830
8058
|
# Tools with custom error handlers (don't show generic for these)
|
|
7831
8059
|
tools_with_error_handlers = [
|
|
7832
8060
|
'gobuster', 'ffuf', 'nmap', 'ard', 'hydra', 'nuclei', 'sqlmap',
|
|
7833
|
-
'nikto', 'wpscan', 'dnsrecon', 'theharvester'
|
|
8061
|
+
'nikto', 'wpscan', 'dnsrecon', 'theharvester', 'crackmapexec',
|
|
8062
|
+
'smbmap', 'enum4linux', 'whois', 'searchsploit', 'msf_auxiliary'
|
|
7834
8063
|
]
|
|
7835
8064
|
|
|
7836
8065
|
# Tools with custom warning handlers
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: souleyez
|
|
3
|
-
Version: 2.43.
|
|
3
|
+
Version: 2.43.28
|
|
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
|