zen-ai-pentest 2.0.4__tar.gz → 2.2.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.
Files changed (134) hide show
  1. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/PKG-INFO +46 -3
  2. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/README.md +45 -2
  3. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/api/main.py +14 -2
  4. zen_ai_pentest-2.2.0/api/websocket_v2.py +181 -0
  5. zen_ai_pentest-2.2.0/docs/architecture.md +119 -0
  6. zen_ai_pentest-2.2.0/docs/architecture.svg +112 -0
  7. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/__init__.py +2 -2
  8. zen_ai_pentest-2.2.0/modules/report_export.py +207 -0
  9. zen_ai_pentest-2.2.0/modules/siem_integration.py +501 -0
  10. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/pyproject.toml +1 -1
  11. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/requirements.txt +6 -1
  12. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/__init__.py +3 -1
  13. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/PKG-INFO +46 -3
  14. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/SOURCES.txt +5 -0
  15. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/CONTRIBUTING.md +0 -0
  16. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/CONTRIBUTORS.md +0 -0
  17. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/LICENSE +0 -0
  18. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/MANIFEST.in +0 -0
  19. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/__init__.py +0 -0
  20. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/agent_base.py +0 -0
  21. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/agent_orchestrator.py +0 -0
  22. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/analysis_agent.py +0 -0
  23. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/cli.py +0 -0
  24. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/exploit_agent.py +0 -0
  25. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/integration.py +0 -0
  26. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/post_scan_agent.py +0 -0
  27. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/react_agent.py +0 -0
  28. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/react_agent_enhanced.py +0 -0
  29. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/react_agent_vm.py +0 -0
  30. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/agents/research_agent.py +0 -0
  31. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/api/__init__.py +0 -0
  32. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/api/auth.py +0 -0
  33. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/api/schemas.py +0 -0
  34. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/api/websocket.py +0 -0
  35. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/__init__.py +0 -0
  36. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/agent.py +0 -0
  37. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/agent_loop.py +0 -0
  38. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/exploit_validator.py +0 -0
  39. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/memory.py +0 -0
  40. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/react.py +0 -0
  41. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/autonomous/tool_executor.py +0 -0
  42. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/backends/__init__.py +0 -0
  43. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/backends/chatgpt_direct.py +0 -0
  44. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/backends/claude_direct.py +0 -0
  45. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/backends/duckduckgo.py +0 -0
  46. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/backends/openrouter.py +0 -0
  47. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/benchmarks/__init__.py +0 -0
  48. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/benchmarks/benchmark_engine.py +0 -0
  49. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/benchmarks/ci_benchmark.py +0 -0
  50. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/benchmarks/comparison.py +0 -0
  51. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/benchmarks/metrics.py +0 -0
  52. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/benchmarks/run_benchmarks.py +0 -0
  53. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/ci_cd/__init__.py +0 -0
  54. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/__init__.py +0 -0
  55. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/async_pool.py +0 -0
  56. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/asyncio_fix.py +0 -0
  57. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/cache.py +0 -0
  58. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/container.py +0 -0
  59. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/database.py +0 -0
  60. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/input_validator.py +0 -0
  61. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/models.py +0 -0
  62. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/orchestrator.py +0 -0
  63. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/plugin_manager.py +0 -0
  64. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/rate_limiter.py +0 -0
  65. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/secure_config.py +0 -0
  66. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/core/shield_integration.py +0 -0
  67. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/.gitkeep +0 -0
  68. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/API.md +0 -0
  69. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/API_DOCUMENTATION.md +0 -0
  70. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/ATTACKERS_MINDSET_TTPs.md +0 -0
  71. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/BRANCH_PROTECTION.md +0 -0
  72. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/CI_CD_MONITORING.md +0 -0
  73. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/CONTAINER_INTEGRATION.md +0 -0
  74. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/DEPENDABOT.md +0 -0
  75. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/DOCKER_SETUP.md +0 -0
  76. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/GITHUB_SETUP.md +0 -0
  77. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/NOTIFICATIONS.md +0 -0
  78. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/OSINT_MODULE.md +0 -0
  79. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/PENTESTER_VS_ATTACKER_MINDSET.md +0 -0
  80. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/PLUGIN_SYSTEM.md +0 -0
  81. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/POSTMAN.md +0 -0
  82. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/POST_SCAN_AGENT.md +0 -0
  83. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/PROTONVPN_INTEGRATION.md +0 -0
  84. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/REACT_AGENT.md +0 -0
  85. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/README.md +0 -0
  86. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/REAL_LIFE_SCENARIOS.md +0 -0
  87. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/ROADMAP-2026.md +0 -0
  88. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/TOOLS_SUMMARY.md +0 -0
  89. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/VIRTUALIZATION_SUMMARY.md +0 -0
  90. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/WEBHOOK_SETUP.md +0 -0
  91. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/ZEN_SHIELD.md +0 -0
  92. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/_config.yml +0 -0
  93. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/0001-record-architecture-decisions.md +0 -0
  94. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/0002-multi-agent-architecture.md +0 -0
  95. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/0003-llm-backend-routing.md +0 -0
  96. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/0004-autonomous-agent-architecture.md +0 -0
  97. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/0005-tool-execution-framework.md +0 -0
  98. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/0006-risk-scoring-methodology.md +0 -0
  99. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/adr/README.md +0 -0
  100. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/api/autonomous.md +0 -0
  101. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/api/risk_engine.md +0 -0
  102. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/index.html +0 -0
  103. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/index.md +0 -0
  104. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/research/FUNDAMENTAL_PENTEST_TOOLS.md +0 -0
  105. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/roadmap/2026/Q1_Q2_Q3_Q4_SUMMARY.md +0 -0
  106. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/setup/VIRTUALBOX_SETUP.md +0 -0
  107. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/docs/tutorials/getting-started.md +0 -0
  108. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/cve_database.py +0 -0
  109. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/exploit_assist.py +0 -0
  110. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/nuclei_integration.py +0 -0
  111. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/osint.py +0 -0
  112. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/protonvpn.py +0 -0
  113. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/recon.py +0 -0
  114. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/sql_injection_db.py +0 -0
  115. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/tool_orchestrator.py +0 -0
  116. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/vuln_scanner.py +0 -0
  117. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/modules/wordlist_generator.py +0 -0
  118. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/business_impact.py +0 -0
  119. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/business_impact_calculator.py +0 -0
  120. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/cvss.py +0 -0
  121. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/epss.py +0 -0
  122. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/example_usage.py +0 -0
  123. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/false_positive_engine.py +0 -0
  124. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/risk_engine/scorer.py +0 -0
  125. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/setup.cfg +0 -0
  126. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/setup.py +0 -0
  127. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/templates/reports/executive_summary.md +0 -0
  128. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/templates/reports/technical_report.md +0 -0
  129. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/web_ui/backend/main.py +0 -0
  130. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/dependency_links.txt +0 -0
  131. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/entry_points.txt +0 -0
  132. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/not-zip-safe +0 -0
  133. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/requires.txt +0 -0
  134. {zen_ai_pentest-2.0.4 → zen_ai_pentest-2.2.0}/zen_ai_pentest.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zen-ai-pentest
3
- Version: 2.0.4
3
+ Version: 2.2.0
4
4
  Summary: Advanced AI-Powered Penetration Testing Framework with Multi-Agent Orchestration
5
5
  Home-page: https://github.com/SHAdd0WTAka/zen-ai-pentest
6
6
  Author: SHAdd0WTAka
@@ -63,10 +63,53 @@ Dynamic: requires-python
63
63
  [![Docker](https://img.shields.io/badge/Docker-Ready-blue)](docker/)
64
64
  [![Tests](https://img.shields.io/badge/Tests-pytest-brightgreen)](tests/)
65
65
  [![PyPI](https://img.shields.io/pypi/v/zen-ai-pentest)](https://pypi.org/project/zen-ai-pentest/)
66
- [![Version](https://img.shields.io/badge/Version-2.0.3-orange)](https://github.com/SHAdd0WTAka/zen-ai-pentest/releases)
66
+ [![Version](https://img.shields.io/badge/Version-2.0.4-orange)](https://github.com/SHAdd0WTAka/zen-ai-pentest/releases)
67
67
  [![Authors](https://img.shields.io/badge/Authors-SHAdd0WTAka%20%7C%20KimiAI-purple)](#-authors--team)
68
68
  [![Roadmap](https://img.shields.io/badge/Roadmap-2026-blueviolet)](ROADMAP_2026.md)
69
-
69
+ [![Architecture](https://img.shields.io/badge/Architecture-Diagram-blue)](docs/architecture.md)
70
+ ```mermaid
71
+ graph TB
72
+ subgraph "User Interface"
73
+ CLI[CLI]
74
+ API[REST API]
75
+ WebUI[Web UI]
76
+ end
77
+
78
+ subgraph "Core Engine"
79
+ Orchestrator[Agent Orchestrator]
80
+ StateMachine[State Machine]
81
+ RiskEngine[Risk Engine]
82
+ end
83
+
84
+ subgraph "AI Agents"
85
+ Recon[Reconnaissance]
86
+ Vuln[Vulnerability]
87
+ Exploit[Exploit]
88
+ Report[Report]
89
+ end
90
+
91
+ subgraph "Tools"
92
+ Nmap[Nmap]
93
+ SQLMap[SQLMap]
94
+ Metasploit[Metasploit]
95
+ end
96
+
97
+ subgraph "External APIs"
98
+ OpenAI[OpenAI]
99
+ Anthropic[Anthropic]
100
+ ThreatIntel[Threat Intelligence]
101
+ end
102
+
103
+ CLI --> API
104
+ WebUI --> API
105
+ API --> Orchestrator
106
+ Orchestrator --> StateMachine
107
+ StateMachine --> Recon
108
+ StateMachine --> Vuln
109
+ StateMachine --> Exploit
110
+ Exploit --> OpenAI
111
+ RiskEngine --> ThreatIntel
112
+ ```
70
113
  **Zen-AI-Pentest** is an autonomous, AI-powered penetration testing framework that combines cutting-edge language models with professional security tools. Built for security professionals, bug bounty hunters, and enterprise security teams.
71
114
 
72
115
  ---
@@ -8,10 +8,53 @@
8
8
  [![Docker](https://img.shields.io/badge/Docker-Ready-blue)](docker/)
9
9
  [![Tests](https://img.shields.io/badge/Tests-pytest-brightgreen)](tests/)
10
10
  [![PyPI](https://img.shields.io/pypi/v/zen-ai-pentest)](https://pypi.org/project/zen-ai-pentest/)
11
- [![Version](https://img.shields.io/badge/Version-2.0.3-orange)](https://github.com/SHAdd0WTAka/zen-ai-pentest/releases)
11
+ [![Version](https://img.shields.io/badge/Version-2.0.4-orange)](https://github.com/SHAdd0WTAka/zen-ai-pentest/releases)
12
12
  [![Authors](https://img.shields.io/badge/Authors-SHAdd0WTAka%20%7C%20KimiAI-purple)](#-authors--team)
13
13
  [![Roadmap](https://img.shields.io/badge/Roadmap-2026-blueviolet)](ROADMAP_2026.md)
14
-
14
+ [![Architecture](https://img.shields.io/badge/Architecture-Diagram-blue)](docs/architecture.md)
15
+ ```mermaid
16
+ graph TB
17
+ subgraph "User Interface"
18
+ CLI[CLI]
19
+ API[REST API]
20
+ WebUI[Web UI]
21
+ end
22
+
23
+ subgraph "Core Engine"
24
+ Orchestrator[Agent Orchestrator]
25
+ StateMachine[State Machine]
26
+ RiskEngine[Risk Engine]
27
+ end
28
+
29
+ subgraph "AI Agents"
30
+ Recon[Reconnaissance]
31
+ Vuln[Vulnerability]
32
+ Exploit[Exploit]
33
+ Report[Report]
34
+ end
35
+
36
+ subgraph "Tools"
37
+ Nmap[Nmap]
38
+ SQLMap[SQLMap]
39
+ Metasploit[Metasploit]
40
+ end
41
+
42
+ subgraph "External APIs"
43
+ OpenAI[OpenAI]
44
+ Anthropic[Anthropic]
45
+ ThreatIntel[Threat Intelligence]
46
+ end
47
+
48
+ CLI --> API
49
+ WebUI --> API
50
+ API --> Orchestrator
51
+ Orchestrator --> StateMachine
52
+ StateMachine --> Recon
53
+ StateMachine --> Vuln
54
+ StateMachine --> Exploit
55
+ Exploit --> OpenAI
56
+ RiskEngine --> ThreatIntel
57
+ ```
15
58
  **Zen-AI-Pentest** is an autonomous, AI-powered penetration testing framework that combines cutting-edge language models with professional security tools. Built for security professionals, bug bounty hunters, and enterprise security teams.
16
59
 
17
60
  ---
@@ -60,7 +60,7 @@ async def lifespan(app: FastAPI):
60
60
  app = FastAPI(
61
61
  title="Zen-AI-Pentest API",
62
62
  description="Professional Pentesting Framework API",
63
- version="2.0.0",
63
+ version="2.2.0",
64
64
  lifespan=lifespan
65
65
  )
66
66
 
@@ -500,7 +500,7 @@ async def health_check():
500
500
  """Health check endpoint"""
501
501
  return {
502
502
  "status": "healthy",
503
- "version": "2.0.0",
503
+ "version": "2.2.0",
504
504
  "timestamp": datetime.utcnow().isoformat()
505
505
  }
506
506
 
@@ -1022,6 +1022,18 @@ async def create_jira_ticket(
1022
1022
  # Import models for reports
1023
1023
  from database.models import Report
1024
1024
 
1025
+ # ============================================================================
1026
+ # API v1.0 (Q1 2026)
1027
+ # ============================================================================
1028
+
1029
+ # Import v1 router
1030
+ try:
1031
+ from api.v1.siem import router as siem_v1_router
1032
+ app.include_router(siem_v1_router, prefix="/api/v1/siem", tags=["SIEM v1.0"])
1033
+ logger.info("API v1.0 SIEM endpoints loaded")
1034
+ except ImportError as e:
1035
+ logger.warning(f"Could not load API v1.0 endpoints: {e}")
1036
+
1025
1037
  if __name__ == "__main__":
1026
1038
  import uvicorn
1027
1039
  uvicorn.run(app, host="0.0.0.0", port=8000)
@@ -0,0 +1,181 @@
1
+ """
2
+ WebSocket v2.0 - Real-time Updates
3
+ Q2 2026 Feature
4
+ """
5
+
6
+ import json
7
+ import logging
8
+ from typing import Dict, Set
9
+ from fastapi import WebSocket, WebSocketDisconnect
10
+ from datetime import datetime
11
+
12
+ logger = logging.getLogger(__name__)
13
+
14
+
15
+ class ConnectionManagerV2:
16
+ """Advanced WebSocket connection manager with rooms"""
17
+
18
+ def __init__(self):
19
+ # Active connections by room
20
+ self.rooms: Dict[str, Set[WebSocket]] = {
21
+ "dashboard": set(),
22
+ "scans": set(),
23
+ "findings": set(),
24
+ "notifications": set()
25
+ }
26
+ # User connections
27
+ self.user_connections: Dict[str, WebSocket] = {}
28
+
29
+ async def connect(self, websocket: WebSocket, room: str = "dashboard", user_id: str = None):
30
+ """Connect client to room"""
31
+ await websocket.accept()
32
+
33
+ if room in self.rooms:
34
+ self.rooms[room].add(websocket)
35
+
36
+ if user_id:
37
+ self.user_connections[user_id] = websocket
38
+
39
+ logger.info(f"Client connected to room: {room}")
40
+
41
+ # Send welcome message
42
+ await websocket.send_json({
43
+ "type": "connection",
44
+ "status": "connected",
45
+ "room": room,
46
+ "timestamp": datetime.utcnow().isoformat()
47
+ })
48
+
49
+ def disconnect(self, websocket: WebSocket, room: str = None):
50
+ """Disconnect client"""
51
+ if room and room in self.rooms:
52
+ self.rooms[room].discard(websocket)
53
+ else:
54
+ # Remove from all rooms
55
+ for room_set in self.rooms.values():
56
+ room_set.discard(websocket)
57
+
58
+ # Remove from user connections
59
+ for user_id, conn in list(self.user_connections.items()):
60
+ if conn == websocket:
61
+ del self.user_connections[user_id]
62
+
63
+ logger.info("Client disconnected")
64
+
65
+ async def broadcast_to_room(self, room: str, message: dict):
66
+ """Broadcast message to all clients in room"""
67
+ if room not in self.rooms:
68
+ return
69
+
70
+ disconnected = set()
71
+ for connection in self.rooms[room]:
72
+ try:
73
+ await connection.send_json(message)
74
+ except Exception:
75
+ disconnected.add(connection)
76
+
77
+ # Clean up disconnected clients
78
+ for conn in disconnected:
79
+ self.rooms[room].discard(conn)
80
+
81
+ async def send_to_user(self, user_id: str, message: dict):
82
+ """Send message to specific user"""
83
+ if user_id in self.user_connections:
84
+ try:
85
+ await self.user_connections[user_id].send_json(message)
86
+ except Exception:
87
+ del self.user_connections[user_id]
88
+
89
+ async def broadcast_scan_update(self, scan_id: str, status: str, progress: int = None):
90
+ """Broadcast scan progress update"""
91
+ await self.broadcast_to_room("scans", {
92
+ "type": "scan_update",
93
+ "scan_id": scan_id,
94
+ "status": status,
95
+ "progress": progress,
96
+ "timestamp": datetime.utcnow().isoformat()
97
+ })
98
+
99
+ async def broadcast_finding(self, finding: dict):
100
+ """Broadcast new finding discovery"""
101
+ await self.broadcast_to_room("findings", {
102
+ "type": "new_finding",
103
+ "finding": finding,
104
+ "timestamp": datetime.utcnow().isoformat()
105
+ })
106
+
107
+ async def broadcast_notification(self, title: str, message: str, severity: str = "info"):
108
+ """Broadcast system notification"""
109
+ await self.broadcast_to_room("notifications", {
110
+ "type": "notification",
111
+ "title": title,
112
+ "message": message,
113
+ "severity": severity,
114
+ "timestamp": datetime.utcnow().isoformat()
115
+ })
116
+
117
+ def get_room_stats(self) -> dict:
118
+ """Get connection statistics"""
119
+ return {
120
+ room: len(connections)
121
+ for room, connections in self.rooms.items()
122
+ }
123
+
124
+
125
+ # Global manager instance
126
+ manager_v2 = ConnectionManagerV2()
127
+
128
+
129
+ async def websocket_dashboard_endpoint(websocket: WebSocket):
130
+ """Dashboard real-time updates"""
131
+ await manager_v2.connect(websocket, room="dashboard")
132
+ try:
133
+ while True:
134
+ # Receive ping from client
135
+ data = await websocket.receive_text()
136
+ message = json.loads(data)
137
+
138
+ if message.get("action") == "ping":
139
+ await websocket.send_json({
140
+ "type": "pong",
141
+ "timestamp": datetime.utcnow().isoformat()
142
+ })
143
+
144
+ except WebSocketDisconnect:
145
+ manager_v2.disconnect(websocket, room="dashboard")
146
+
147
+
148
+ async def websocket_scans_endpoint(websocket: WebSocket):
149
+ """Scan progress real-time updates"""
150
+ await manager_v2.connect(websocket, room="scans")
151
+ try:
152
+ while True:
153
+ data = await websocket.receive_text()
154
+ # Handle scan subscription requests
155
+ message = json.loads(data)
156
+
157
+ if message.get("action") == "subscribe_scan":
158
+ scan_id = message.get("scan_id")
159
+ await websocket.send_json({
160
+ "type": "subscribed",
161
+ "scan_id": scan_id,
162
+ "message": f"Subscribed to scan {scan_id} updates"
163
+ })
164
+
165
+ except WebSocketDisconnect:
166
+ manager_v2.disconnect(websocket, room="scans")
167
+
168
+
169
+ async def websocket_notifications_endpoint(websocket: WebSocket, user_id: str = None):
170
+ """User-specific notifications"""
171
+ await manager_v2.connect(websocket, room="notifications", user_id=user_id)
172
+ try:
173
+ while True:
174
+ data = await websocket.receive_text()
175
+ # Acknowledge receipt
176
+ await websocket.send_json({
177
+ "type": "ack",
178
+ "received": True
179
+ })
180
+ except WebSocketDisconnect:
181
+ manager_v2.disconnect(websocket, room="notifications")
@@ -0,0 +1,119 @@
1
+ # Zen AI Pentest Architecture
2
+
3
+ ## System Architecture Diagram
4
+
5
+ ```mermaid
6
+ graph TB
7
+ subgraph "User Interface Layer"
8
+ CLI[CLI Interface]
9
+ API[REST API / FastAPI]
10
+ WebUI[React Web UI]
11
+ end
12
+
13
+ subgraph "Core Engine"
14
+ Orchestrator[Agent Orchestrator]
15
+ StateMachine[State Machine<br/>IDLE → PLANNING → EXECUTING → OBSERVING]
16
+ Memory[Memory System<br/>Short-term / Long-term]
17
+ RiskEngine[Risk Engine<br/>Scoring & Validation]
18
+ end
19
+
20
+ subgraph "AI Agents"
21
+ ReconAgent[Reconnaissance Agent]
22
+ VulnAgent[Vulnerability Agent]
23
+ ExploitAgent[Exploit Agent]
24
+ ReportAgent[Report Agent]
25
+ Consensus[LLM Voting Consensus]
26
+ end
27
+
28
+ subgraph "Tool Integration"
29
+ Nmap[Nmap]
30
+ Gobuster[Gobuster]
31
+ SQLMap[SQLMap]
32
+ Metasploit[Metasploit]
33
+ CustomTools[Custom Tools]
34
+ end
35
+
36
+ subgraph "Data Storage"
37
+ Evidence[Evidence Collection]
38
+ Logs[Audit Logs]
39
+ Reports[Generated Reports]
40
+ CVE_DB[CVE Database]
41
+ end
42
+
43
+ subgraph "External APIs"
44
+ OpenAI[OpenAI API]
45
+ Anthropic[Anthropic API]
46
+ Ollama[Local Ollama]
47
+ ThreatIntel[Threat Intelligence<br/>ThreatFox / URLhaus]
48
+ end
49
+
50
+ CLI --> API
51
+ WebUI --> API
52
+ API --> Orchestrator
53
+
54
+ Orchestrator --> StateMachine
55
+ Orchestrator --> Memory
56
+ Orchestrator --> RiskEngine
57
+
58
+ StateMachine --> ReconAgent
59
+ StateMachine --> VulnAgent
60
+ StateMachine --> ExploitAgent
61
+ StateMachine --> ReportAgent
62
+
63
+ ReconAgent --> Nmap
64
+ ReconAgent --> Gobuster
65
+ VulnAgent --> SQLMap
66
+ ExploitAgent --> Metasploit
67
+
68
+ ReconAgent --> Consensus
69
+ VulnAgent --> Consensus
70
+ ExploitAgent --> Consensus
71
+
72
+ Consensus --> OpenAI
73
+ Consensus --> Anthropic
74
+ Consensus --> Ollama
75
+
76
+ RiskEngine --> ThreatIntel
77
+ RiskEngine --> CVE_DB
78
+
79
+ ExploitAgent --> Evidence
80
+ ReportAgent --> Reports
81
+ Orchestrator --> Logs
82
+ ```
83
+
84
+ ## Component Overview
85
+
86
+ ### 1. User Interface Layer
87
+ - **CLI**: Command-line interface for scripting and automation
88
+ - **REST API**: FastAPI-based backend for web integration
89
+ - **Web UI**: React-based dashboard for interactive use
90
+
91
+ ### 2. Core Engine
92
+ - **Agent Orchestrator**: Manages multi-agent workflow and task distribution
93
+ - **State Machine**: Implements ReAct pattern (Reason → Act → Observe → Reflect)
94
+ - **Memory System**: Maintains context across sessions
95
+ - **Risk Engine**: Validates findings and calculates risk scores
96
+
97
+ ### 3. AI Agents
98
+ Specialized agents for different penetration testing phases:
99
+ - **Reconnaissance**: Network scanning and enumeration
100
+ - **Vulnerability**: Identifies security weaknesses
101
+ - **Exploit**: Attempts controlled exploitation
102
+ - **Report**: Generates comprehensive reports
103
+
104
+ ### 4. Tool Integration
105
+ Integrates with industry-standard security tools:
106
+ - Nmap, Gobuster, SQLMap, Metasploit
107
+ - Custom exploitation modules
108
+
109
+ ### 5. External APIs
110
+ - **LLM Providers**: OpenAI, Anthropic, Local Ollama
111
+ - **Threat Intelligence**: Real-time threat data
112
+
113
+ ## Data Flow
114
+
115
+ 1. User input → API → Orchestrator
116
+ 2. Orchestrator selects appropriate agent
117
+ 3. Agent uses tools and AI consensus
118
+ 4. Results validated by Risk Engine
119
+ 5. Evidence collected and reports generated
@@ -0,0 +1,112 @@
1
+ <svg viewBox="0 0 1000 700" xmlns="http://www.w3.org/2000/svg">
2
+ <!-- Background -->
3
+ <rect width="1000" height="700" fill="#f8f9fa"/>
4
+
5
+ <!-- Title -->
6
+ <text x="500" y="30" text-anchor="middle" font-size="24" font-weight="bold" fill="#212529">Zen AI Pentest Architecture</text>
7
+
8
+ <!-- User Interface Layer -->
9
+ <rect x="50" y="60" width="280" height="100" rx="10" fill="#e3f2fd" stroke="#1976d2" stroke-width="2"/>
10
+ <text x="190" y="85" text-anchor="middle" font-size="14" font-weight="bold" fill="#1565c0">User Interface Layer</text>
11
+ <rect x="70" y="100" width="70" height="40" rx="5" fill="#fff" stroke="#1976d2"/>
12
+ <text x="105" y="125" text-anchor="middle" font-size="11" fill="#1565c0">CLI</text>
13
+ <rect x="155" y="100" width="70" height="40" rx="5" fill="#fff" stroke="#1976d2"/>
14
+ <text x="190" y="125" text-anchor="middle" font-size="11" fill="#1565c0">REST API</text>
15
+ <rect x="240" y="100" width="70" height="40" rx="5" fill="#fff" stroke="#1976d2"/>
16
+ <text x="275" y="125" text-anchor="middle" font-size="11" fill="#1565c0">Web UI</text>
17
+
18
+ <!-- Core Engine -->
19
+ <rect x="350" y="60" width="300" height="120" rx="10" fill="#fff3e0" stroke="#f57c00" stroke-width="2"/>
20
+ <text x="500" y="85" text-anchor="middle" font-size="14" font-weight="bold" fill="#e65100">Core Engine</text>
21
+ <rect x="370" y="100" width="120" height="30" rx="5" fill="#fff" stroke="#f57c00"/>
22
+ <text x="430" y="120" text-anchor="middle" font-size="11" fill="#e65100">Agent Orchestrator</text>
23
+ <rect x="510" y="100" width="120" height="30" rx="5" fill="#fff" stroke="#f57c00"/>
24
+ <text x="570" y="120" text-anchor="middle" font-size="11" fill="#e65100">State Machine</text>
25
+ <rect x="370" y="140" width="120" height="30" rx="5" fill="#fff" stroke="#f57c00"/>
26
+ <text x="430" y="160" text-anchor="middle" font-size="11" fill="#e65100">Memory System</text>
27
+ <rect x="510" y="140" width="120" height="30" rx="5" fill="#fff" stroke="#f57c00"/>
28
+ <text x="570" y="160" text-anchor="middle" font-size="11" fill="#e65100">Risk Engine</text>
29
+
30
+ <!-- AI Agents -->
31
+ <rect x="50" y="200" width="280" height="140" rx="10" fill="#e8f5e9" stroke="#388e3c" stroke-width="2"/>
32
+ <text x="190" y="225" text-anchor="middle" font-size="14" font-weight="bold" fill="#2e7d32">AI Agents</text>
33
+ <rect x="70" y="245" width="110" height="35" rx="5" fill="#fff" stroke="#388e3c"/>
34
+ <text x="125" y="267" text-anchor="middle" font-size="10" fill="#2e7d32">Reconnaissance</text>
35
+ <rect x="200" y="245" width="110" height="35" rx="5" fill="#fff" stroke="#388e3c"/>
36
+ <text x="255" y="267" text-anchor="middle" font-size="10" fill="#2e7d32">Vulnerability</text>
37
+ <rect x="70" y="290" width="110" height="35" rx="5" fill="#fff" stroke="#388e3c"/>
38
+ <text x="125" y="312" text-anchor="middle" font-size="10" fill="#2e7d32">Exploit Agent</text>
39
+ <rect x="200" y="290" width="110" height="35" rx="5" fill="#fff" stroke="#388e3c"/>
40
+ <text x="255" y="312" text-anchor="middle" font-size="10" fill="#2e7d32">Report Agent</text>
41
+
42
+ <!-- Tool Integration -->
43
+ <rect x="50" y="360" width="280" height="100" rx="10" fill="#fce4ec" stroke="#c2185b" stroke-width="2"/>
44
+ <text x="190" y="385" text-anchor="middle" font-size="14" font-weight="bold" fill="#ad1457">Tool Integration</text>
45
+ <rect x="70" y="400" width="50" height="30" rx="5" fill="#fff" stroke="#c2185b"/>
46
+ <text x="95" y="420" text-anchor="middle" font-size="10" fill="#ad1457">Nmap</text>
47
+ <rect x="130" y="400" width="70" height="30" rx="5" fill="#fff" stroke="#c2185b"/>
48
+ <text x="165" y="420" text-anchor="middle" font-size="10" fill="#ad1457">Gobuster</text>
49
+ <rect x="210" y="400" width="50" height="30" rx="5" fill="#fff" stroke="#c2185b"/>
50
+ <text x="235" y="420" text-anchor="middle" font-size="10" fill="#ad1457">SQLMap</text>
51
+ <rect x="70" y="440" width="80" height="30" rx="5" fill="#fff" stroke="#c2185b"/>
52
+ <text x="110" y="458" text-anchor="middle" font-size="9" fill="#ad1457">Metasploit</text>
53
+ <rect x="160" y="440" width="100" height="30" rx="5" fill="#fff" stroke="#c2185b"/>
54
+ <text x="210" y="458" text-anchor="middle" font-size="9" fill="#ad1457">Custom Tools</text>
55
+
56
+ <!-- External APIs -->
57
+ <rect x="670" y="60" width="280" height="120" rx="10" fill="#f3e5f5" stroke="#7b1fa2" stroke-width="2"/>
58
+ <text x="810" y="85" text-anchor="middle" font-size="14" font-weight="bold" fill="#6a1b9a">External APIs</text>
59
+ <rect x="690" y="100" width="70" height="35" rx="5" fill="#fff" stroke="#7b1fa2"/>
60
+ <text x="725" y="122" text-anchor="middle" font-size="10" fill="#6a1b9a">OpenAI</text>
61
+ <rect x="775" y="100" width="80" height="35" rx="5" fill="#fff" stroke="#7b1fa2"/>
62
+ <text x="815" y="122" text-anchor="middle" font-size="10" fill="#6a1b9a">Anthropic</text>
63
+ <rect x="690" y="145" width="70" height="35" rx="5" fill="#fff" stroke="#7b1fa2"/>
64
+ <text x="725" y="165" text-anchor="middle" font-size="10" fill="#6a1b9a">Ollama</text>
65
+ <rect x="775" y="145" width="155" height="35" rx="5" fill="#fff" stroke="#7b1fa2"/>
66
+ <text x="852" y="165" text-anchor="middle" font-size="9" fill="#6a1b9a">Threat Intelligence</text>
67
+
68
+ <!-- Data Storage -->
69
+ <rect x="670" y="200" width="280" height="140" rx="10" fill="#e0f2f1" stroke="#00796b" stroke-width="2"/>
70
+ <text x="810" y="225" text-anchor="middle" font-size="14" font-weight="bold" fill="#00695c">Data Storage</text>
71
+ <rect x="690" y="245" width="110" height="35" rx="5" fill="#fff" stroke="#00796b"/>
72
+ <text x="745" y="267" text-anchor="middle" font-size="10" fill="#00695c">Evidence</text>
73
+ <rect x="820" y="245" width="110" height="35" rx="5" fill="#fff" stroke="#00796b"/>
74
+ <text x="875" y="267" text-anchor="middle" font-size="10" fill="#00695c">Audit Logs</text>
75
+ <rect x="690" y="290" width="110" height="35" rx="5" fill="#fff" stroke="#00796b"/>
76
+ <text x="745" y="312" text-anchor="middle" font-size="10" fill="#00695c">Reports</text>
77
+ <rect x="820" y="290" width="110" height="35" rx="5" fill="#fff" stroke="#00796b"/>
78
+ <text x="875" y="312" text-anchor="middle" font-size="10" fill="#00695c">CVE Database</text>
79
+
80
+ <!-- Arrows -->
81
+ <!-- UI to Core -->
82
+ <line x1="330" y1="110" x2="350" y2="110" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
83
+
84
+ <!-- Core to Agents -->
85
+ <line x1="350" y1="180" x2="330" y2="260" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
86
+
87
+ <!-- Agents to Tools -->
88
+ <line x1="125" y1="340" x2="125" y2="360" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
89
+
90
+ <!-- Core to External -->
91
+ <line x1="650" y1="120" x2="670" y2="120" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
92
+
93
+ <!-- Core to Storage -->
94
+ <line x1="650" y1="200" x2="670" y2="260" stroke="#333" stroke-width="2" marker-end="url(#arrowhead)"/>
95
+
96
+ <!-- Arrow marker -->
97
+ <defs>
98
+ <marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
99
+ <polygon points="0 0, 10 3.5, 0 7" fill="#333"/>
100
+ </marker>
101
+ </defs>
102
+
103
+ <!-- Legend -->
104
+ <rect x="50" y="480" width="900" height="200" rx="10" fill="#fff" stroke="#ddd" stroke-width="1"/>
105
+ <text x="500" y="510" text-anchor="middle" font-size="16" font-weight="bold" fill="#333">Data Flow</text>
106
+ <text x="70" y="540" font-size="12" fill="#555">1. User input → API → Orchestrator</text>
107
+ <text x="70" y="565" font-size="12" fill="#555">2. Orchestrator selects appropriate agent based on state</text>
108
+ <text x="70" y="590" font-size="12" fill="#555">3. Agent uses security tools and AI consensus</text>
109
+ <text x="70" y="615" font-size="12" fill="#555">4. Risk Engine validates findings with threat intelligence</text>
110
+ <text x="70" y="640" font-size="12" fill="#555">5. Evidence collected, reports generated, audit trail maintained</text>
111
+ <text x="70" y="665" font-size="12" fill="#555">6. Results presented via CLI, API, or Web UI</text>
112
+ </svg>
@@ -10,7 +10,7 @@ from .osint import (DomainInfo, EmailProfile, OSINTModule, OSINTResult,
10
10
  from .protonvpn import (ProtonVPNManager, VPNProtocol, VPNSecurityLevel,
11
11
  VPNServer, VPNStatus, quick_connect, secure_connect)
12
12
  from .recon import ReconModule
13
- from .report_gen import ReportGenerator
13
+ # from .report_gen import ReportGenerator # Module not available
14
14
  from .sql_injection_db import (DBType, SQLInjectionDatabase, SQLITechnique,
15
15
  SQLPayload)
16
16
  from .vuln_scanner import VulnScannerModule
@@ -19,7 +19,7 @@ __all__ = [
19
19
  "ReconModule",
20
20
  "VulnScannerModule",
21
21
  "ExploitAssistModule",
22
- "ReportGenerator",
22
+ # "ReportGenerator", # Module not available
23
23
  "NucleiIntegration",
24
24
  "NucleiTemplateManager",
25
25
  "SQLInjectionDatabase",