aiptx 2.0.2__py3-none-any.whl

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.

Potentially problematic release.


This version of aiptx might be problematic. Click here for more details.

Files changed (165) hide show
  1. aipt_v2/__init__.py +110 -0
  2. aipt_v2/__main__.py +24 -0
  3. aipt_v2/agents/AIPTxAgent/__init__.py +10 -0
  4. aipt_v2/agents/AIPTxAgent/aiptx_agent.py +211 -0
  5. aipt_v2/agents/__init__.py +24 -0
  6. aipt_v2/agents/base.py +520 -0
  7. aipt_v2/agents/ptt.py +406 -0
  8. aipt_v2/agents/state.py +168 -0
  9. aipt_v2/app.py +960 -0
  10. aipt_v2/browser/__init__.py +31 -0
  11. aipt_v2/browser/automation.py +458 -0
  12. aipt_v2/browser/crawler.py +453 -0
  13. aipt_v2/cli.py +321 -0
  14. aipt_v2/compliance/__init__.py +71 -0
  15. aipt_v2/compliance/compliance_report.py +449 -0
  16. aipt_v2/compliance/framework_mapper.py +424 -0
  17. aipt_v2/compliance/nist_mapping.py +345 -0
  18. aipt_v2/compliance/owasp_mapping.py +330 -0
  19. aipt_v2/compliance/pci_mapping.py +297 -0
  20. aipt_v2/config.py +288 -0
  21. aipt_v2/core/__init__.py +43 -0
  22. aipt_v2/core/agent.py +630 -0
  23. aipt_v2/core/llm.py +395 -0
  24. aipt_v2/core/memory.py +305 -0
  25. aipt_v2/core/ptt.py +329 -0
  26. aipt_v2/database/__init__.py +14 -0
  27. aipt_v2/database/models.py +232 -0
  28. aipt_v2/database/repository.py +384 -0
  29. aipt_v2/docker/__init__.py +23 -0
  30. aipt_v2/docker/builder.py +260 -0
  31. aipt_v2/docker/manager.py +222 -0
  32. aipt_v2/docker/sandbox.py +371 -0
  33. aipt_v2/evasion/__init__.py +58 -0
  34. aipt_v2/evasion/request_obfuscator.py +272 -0
  35. aipt_v2/evasion/tls_fingerprint.py +285 -0
  36. aipt_v2/evasion/ua_rotator.py +301 -0
  37. aipt_v2/evasion/waf_bypass.py +439 -0
  38. aipt_v2/execution/__init__.py +23 -0
  39. aipt_v2/execution/executor.py +302 -0
  40. aipt_v2/execution/parser.py +544 -0
  41. aipt_v2/execution/terminal.py +337 -0
  42. aipt_v2/health.py +437 -0
  43. aipt_v2/intelligence/__init__.py +85 -0
  44. aipt_v2/intelligence/auth.py +520 -0
  45. aipt_v2/intelligence/chaining.py +775 -0
  46. aipt_v2/intelligence/cve_aipt.py +334 -0
  47. aipt_v2/intelligence/cve_info.py +1111 -0
  48. aipt_v2/intelligence/rag.py +239 -0
  49. aipt_v2/intelligence/scope.py +442 -0
  50. aipt_v2/intelligence/searchers/__init__.py +5 -0
  51. aipt_v2/intelligence/searchers/exploitdb_searcher.py +523 -0
  52. aipt_v2/intelligence/searchers/github_searcher.py +467 -0
  53. aipt_v2/intelligence/searchers/google_searcher.py +281 -0
  54. aipt_v2/intelligence/tools.json +443 -0
  55. aipt_v2/intelligence/triage.py +670 -0
  56. aipt_v2/interface/__init__.py +5 -0
  57. aipt_v2/interface/cli.py +230 -0
  58. aipt_v2/interface/main.py +501 -0
  59. aipt_v2/interface/tui.py +1276 -0
  60. aipt_v2/interface/utils.py +583 -0
  61. aipt_v2/llm/__init__.py +39 -0
  62. aipt_v2/llm/config.py +26 -0
  63. aipt_v2/llm/llm.py +514 -0
  64. aipt_v2/llm/memory.py +214 -0
  65. aipt_v2/llm/request_queue.py +89 -0
  66. aipt_v2/llm/utils.py +89 -0
  67. aipt_v2/models/__init__.py +15 -0
  68. aipt_v2/models/findings.py +295 -0
  69. aipt_v2/models/phase_result.py +224 -0
  70. aipt_v2/models/scan_config.py +207 -0
  71. aipt_v2/monitoring/grafana/dashboards/aipt-dashboard.json +355 -0
  72. aipt_v2/monitoring/grafana/dashboards/default.yml +17 -0
  73. aipt_v2/monitoring/grafana/datasources/prometheus.yml +17 -0
  74. aipt_v2/monitoring/prometheus.yml +60 -0
  75. aipt_v2/orchestration/__init__.py +52 -0
  76. aipt_v2/orchestration/pipeline.py +398 -0
  77. aipt_v2/orchestration/progress.py +300 -0
  78. aipt_v2/orchestration/scheduler.py +296 -0
  79. aipt_v2/orchestrator.py +2284 -0
  80. aipt_v2/payloads/__init__.py +27 -0
  81. aipt_v2/payloads/cmdi.py +150 -0
  82. aipt_v2/payloads/sqli.py +263 -0
  83. aipt_v2/payloads/ssrf.py +204 -0
  84. aipt_v2/payloads/templates.py +222 -0
  85. aipt_v2/payloads/traversal.py +166 -0
  86. aipt_v2/payloads/xss.py +204 -0
  87. aipt_v2/prompts/__init__.py +60 -0
  88. aipt_v2/proxy/__init__.py +29 -0
  89. aipt_v2/proxy/history.py +352 -0
  90. aipt_v2/proxy/interceptor.py +452 -0
  91. aipt_v2/recon/__init__.py +44 -0
  92. aipt_v2/recon/dns.py +241 -0
  93. aipt_v2/recon/osint.py +367 -0
  94. aipt_v2/recon/subdomain.py +372 -0
  95. aipt_v2/recon/tech_detect.py +311 -0
  96. aipt_v2/reports/__init__.py +17 -0
  97. aipt_v2/reports/generator.py +313 -0
  98. aipt_v2/reports/html_report.py +378 -0
  99. aipt_v2/runtime/__init__.py +44 -0
  100. aipt_v2/runtime/base.py +30 -0
  101. aipt_v2/runtime/docker.py +401 -0
  102. aipt_v2/runtime/local.py +346 -0
  103. aipt_v2/runtime/tool_server.py +205 -0
  104. aipt_v2/scanners/__init__.py +28 -0
  105. aipt_v2/scanners/base.py +273 -0
  106. aipt_v2/scanners/nikto.py +244 -0
  107. aipt_v2/scanners/nmap.py +402 -0
  108. aipt_v2/scanners/nuclei.py +273 -0
  109. aipt_v2/scanners/web.py +454 -0
  110. aipt_v2/scripts/security_audit.py +366 -0
  111. aipt_v2/telemetry/__init__.py +7 -0
  112. aipt_v2/telemetry/tracer.py +347 -0
  113. aipt_v2/terminal/__init__.py +28 -0
  114. aipt_v2/terminal/executor.py +400 -0
  115. aipt_v2/terminal/sandbox.py +350 -0
  116. aipt_v2/tools/__init__.py +44 -0
  117. aipt_v2/tools/active_directory/__init__.py +78 -0
  118. aipt_v2/tools/active_directory/ad_config.py +238 -0
  119. aipt_v2/tools/active_directory/bloodhound_wrapper.py +447 -0
  120. aipt_v2/tools/active_directory/kerberos_attacks.py +430 -0
  121. aipt_v2/tools/active_directory/ldap_enum.py +533 -0
  122. aipt_v2/tools/active_directory/smb_attacks.py +505 -0
  123. aipt_v2/tools/agents_graph/__init__.py +19 -0
  124. aipt_v2/tools/agents_graph/agents_graph_actions.py +69 -0
  125. aipt_v2/tools/api_security/__init__.py +76 -0
  126. aipt_v2/tools/api_security/api_discovery.py +608 -0
  127. aipt_v2/tools/api_security/graphql_scanner.py +622 -0
  128. aipt_v2/tools/api_security/jwt_analyzer.py +577 -0
  129. aipt_v2/tools/api_security/openapi_fuzzer.py +761 -0
  130. aipt_v2/tools/browser/__init__.py +5 -0
  131. aipt_v2/tools/browser/browser_actions.py +238 -0
  132. aipt_v2/tools/browser/browser_instance.py +535 -0
  133. aipt_v2/tools/browser/tab_manager.py +344 -0
  134. aipt_v2/tools/cloud/__init__.py +70 -0
  135. aipt_v2/tools/cloud/cloud_config.py +273 -0
  136. aipt_v2/tools/cloud/cloud_scanner.py +639 -0
  137. aipt_v2/tools/cloud/prowler_tool.py +571 -0
  138. aipt_v2/tools/cloud/scoutsuite_tool.py +359 -0
  139. aipt_v2/tools/executor.py +307 -0
  140. aipt_v2/tools/parser.py +408 -0
  141. aipt_v2/tools/proxy/__init__.py +5 -0
  142. aipt_v2/tools/proxy/proxy_actions.py +103 -0
  143. aipt_v2/tools/proxy/proxy_manager.py +789 -0
  144. aipt_v2/tools/registry.py +196 -0
  145. aipt_v2/tools/scanners/__init__.py +343 -0
  146. aipt_v2/tools/scanners/acunetix_tool.py +712 -0
  147. aipt_v2/tools/scanners/burp_tool.py +631 -0
  148. aipt_v2/tools/scanners/config.py +156 -0
  149. aipt_v2/tools/scanners/nessus_tool.py +588 -0
  150. aipt_v2/tools/scanners/zap_tool.py +612 -0
  151. aipt_v2/tools/terminal/__init__.py +5 -0
  152. aipt_v2/tools/terminal/terminal_actions.py +37 -0
  153. aipt_v2/tools/terminal/terminal_manager.py +153 -0
  154. aipt_v2/tools/terminal/terminal_session.py +449 -0
  155. aipt_v2/tools/tool_processing.py +108 -0
  156. aipt_v2/utils/__init__.py +17 -0
  157. aipt_v2/utils/logging.py +201 -0
  158. aipt_v2/utils/model_manager.py +187 -0
  159. aipt_v2/utils/searchers/__init__.py +269 -0
  160. aiptx-2.0.2.dist-info/METADATA +324 -0
  161. aiptx-2.0.2.dist-info/RECORD +165 -0
  162. aiptx-2.0.2.dist-info/WHEEL +5 -0
  163. aiptx-2.0.2.dist-info/entry_points.txt +7 -0
  164. aiptx-2.0.2.dist-info/licenses/LICENSE +21 -0
  165. aiptx-2.0.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,269 @@
1
+ """
2
+ Searcher Utilities for AIPT v2
3
+ ==============================
4
+
5
+ Provides utility functions for intelligence searchers:
6
+ - Domain filtering
7
+ - File extension filtering
8
+ - Repository filtering
9
+ - Directory cleanup
10
+
11
+ These are stub implementations for compatibility with
12
+ intelligence/searchers modules.
13
+ """
14
+
15
+ import os
16
+ import re
17
+ from typing import List, Set
18
+ from pathlib import Path
19
+
20
+ from aipt_v2.utils.logging import logger
21
+
22
+
23
+ # Blocked domains for security/ethical reasons
24
+ BLOCKED_DOMAINS: Set[str] = {
25
+ ".gov",
26
+ ".mil",
27
+ ".edu",
28
+ ".bank",
29
+ ".police",
30
+ }
31
+
32
+ # Allowed web page extensions
33
+ WEB_EXTENSIONS: Set[str] = {
34
+ ".html",
35
+ ".htm",
36
+ ".php",
37
+ ".asp",
38
+ ".aspx",
39
+ ".jsp",
40
+ ".do",
41
+ "", # No extension
42
+ }
43
+
44
+ # Blocked file patterns for GitHub
45
+ BLOCKED_GITHUB_PATTERNS: Set[str] = {
46
+ "README",
47
+ "LICENSE",
48
+ "CHANGELOG",
49
+ "CONTRIBUTING",
50
+ ".md",
51
+ ".txt",
52
+ ".rst",
53
+ ".lock",
54
+ }
55
+
56
+
57
+ class DomainFilter:
58
+ """Filter domains based on security/ethical rules."""
59
+
60
+ def __init__(self, blocked: Set[str] = None, allowed: Set[str] = None):
61
+ self.blocked = blocked or BLOCKED_DOMAINS
62
+ self.allowed = allowed or set()
63
+
64
+ def __call__(self, domain: str) -> bool:
65
+ return self.is_allowed(domain)
66
+
67
+ def is_allowed(self, domain: str) -> bool:
68
+ """
69
+ Check if domain is allowed for scanning.
70
+
71
+ Args:
72
+ domain: Domain to check
73
+
74
+ Returns:
75
+ True if domain is allowed
76
+ """
77
+ domain_lower = domain.lower()
78
+
79
+ # Check blocked list
80
+ for blocked in self.blocked:
81
+ if domain_lower.endswith(blocked):
82
+ logger.debug("Domain blocked", domain=domain, reason=f"ends with {blocked}")
83
+ return False
84
+
85
+ # If allowed list exists, check it
86
+ if self.allowed:
87
+ for allowed in self.allowed:
88
+ if domain_lower.endswith(allowed):
89
+ return True
90
+ return False
91
+
92
+ return True
93
+
94
+
95
+ class ExtensionFilter:
96
+ """Filter files/URLs by extension."""
97
+
98
+ def __init__(self, allowed: Set[str] = None, blocked: Set[str] = None):
99
+ self.allowed = allowed or set()
100
+ self.blocked = blocked or set()
101
+
102
+ def __call__(self, filename: str) -> bool:
103
+ return self.is_allowed(filename)
104
+
105
+ def is_allowed(self, filename: str) -> bool:
106
+ """Check if file extension is allowed."""
107
+ ext = Path(filename).suffix.lower()
108
+
109
+ if self.blocked and ext in self.blocked:
110
+ return False
111
+
112
+ if self.allowed:
113
+ return ext in self.allowed
114
+
115
+ return True
116
+
117
+
118
+ class RepositoryFilter:
119
+ """Filter GitHub repositories."""
120
+
121
+ def __init__(self, blocked_patterns: Set[str] = None):
122
+ self.blocked = blocked_patterns or set()
123
+
124
+ def __call__(self, repo: str) -> bool:
125
+ return self.is_allowed(repo)
126
+
127
+ def is_allowed(self, repo: str) -> bool:
128
+ """Check if repository name is allowed."""
129
+ repo_lower = repo.lower()
130
+
131
+ for pattern in self.blocked:
132
+ if pattern.lower() in repo_lower:
133
+ return False
134
+
135
+ return True
136
+
137
+
138
+ # Pre-configured filter instances
139
+ domain_filter = DomainFilter()
140
+ repository_filter = RepositoryFilter()
141
+
142
+
143
+ def for_google_webpage(extension: str) -> bool:
144
+ """
145
+ Check if extension is valid for web pages.
146
+
147
+ Args:
148
+ extension: File extension (with or without dot)
149
+
150
+ Returns:
151
+ True if valid web page extension
152
+ """
153
+ ext = extension.lower()
154
+ if not ext.startswith("."):
155
+ ext = f".{ext}" if ext else ""
156
+
157
+ return ext in WEB_EXTENSIONS
158
+
159
+
160
+ def for_github_repo_file(filename: str) -> bool:
161
+ """
162
+ Check if file should be included from GitHub repo.
163
+
164
+ Args:
165
+ filename: File name to check
166
+
167
+ Returns:
168
+ True if file should be included
169
+ """
170
+ filename_upper = filename.upper()
171
+
172
+ for pattern in BLOCKED_GITHUB_PATTERNS:
173
+ if pattern.upper() in filename_upper or filename.endswith(pattern):
174
+ return False
175
+
176
+ return True
177
+
178
+
179
+ def remove_empty_directories(path: str) -> int:
180
+ """
181
+ Remove empty directories recursively.
182
+
183
+ Args:
184
+ path: Root path to clean
185
+
186
+ Returns:
187
+ Number of directories removed
188
+ """
189
+ removed = 0
190
+ path_obj = Path(path)
191
+
192
+ if not path_obj.exists():
193
+ return 0
194
+
195
+ for dirpath in sorted(path_obj.rglob("*"), reverse=True):
196
+ if dirpath.is_dir():
197
+ try:
198
+ # Check if directory is empty
199
+ if not any(dirpath.iterdir()):
200
+ dirpath.rmdir()
201
+ removed += 1
202
+ logger.debug("Removed empty directory", path=str(dirpath))
203
+ except OSError as e:
204
+ logger.warning("Failed to remove directory", path=str(dirpath), error=str(e))
205
+
206
+ return removed
207
+
208
+
209
+ def sanitize_filename(filename: str) -> str:
210
+ """
211
+ Sanitize filename for safe filesystem use.
212
+
213
+ Args:
214
+ filename: Original filename
215
+
216
+ Returns:
217
+ Sanitized filename
218
+ """
219
+ # Remove or replace dangerous characters
220
+ sanitized = re.sub(r'[<>:"/\\|?*]', '_', filename)
221
+ sanitized = re.sub(r'\s+', '_', sanitized)
222
+ sanitized = sanitized.strip('._')
223
+
224
+ # Limit length
225
+ if len(sanitized) > 200:
226
+ sanitized = sanitized[:200]
227
+
228
+ return sanitized or "unnamed"
229
+
230
+
231
+ def validate_cve_id(cve_id: str) -> bool:
232
+ """
233
+ Validate CVE ID format.
234
+
235
+ Args:
236
+ cve_id: CVE identifier to validate
237
+
238
+ Returns:
239
+ True if valid CVE format
240
+ """
241
+ pattern = r'^CVE-\d{4}-\d{4,}$'
242
+ return bool(re.match(pattern, cve_id.upper()))
243
+
244
+
245
+ def extract_cve_ids(text: str) -> List[str]:
246
+ """
247
+ Extract CVE IDs from text.
248
+
249
+ Args:
250
+ text: Text to search
251
+
252
+ Returns:
253
+ List of CVE IDs found
254
+ """
255
+ pattern = r'CVE-\d{4}-\d{4,}'
256
+ matches = re.findall(pattern, text.upper())
257
+ return list(set(matches))
258
+
259
+
260
+ # GitHub configuration compatibility
261
+ class GitHubConfig:
262
+ """GitHub API configuration."""
263
+ API_URL = "https://api.github.com"
264
+ SEARCH_URL = f"{API_URL}/search"
265
+ RATE_LIMIT = 30 # requests per minute for unauthenticated
266
+
267
+
268
+ # Alias for backwards compatibility
269
+ c = GitHubConfig
@@ -0,0 +1,324 @@
1
+ Metadata-Version: 2.4
2
+ Name: aiptx
3
+ Version: 2.0.2
4
+ Summary: AI-Powered Penetration Testing Framework - Autonomous security assessment with LLM intelligence
5
+ Author-email: Satyam Rastogi <satyam@aiptx.io>
6
+ Maintainer-email: Satyam Rastogi <satyam@aiptx.io>
7
+ License: MIT License
8
+
9
+ Copyright (c) 2025 Satyam Rastogi
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ Project-URL: Homepage, https://github.com/satyamrastogi/aiptx
30
+ Project-URL: Documentation, https://aiptx.io/docs
31
+ Project-URL: Repository, https://github.com/satyamrastogi/aiptx
32
+ Project-URL: Issues, https://github.com/satyamrastogi/aiptx/issues
33
+ Project-URL: Changelog, https://github.com/satyamrastogi/aiptx/blob/main/CHANGELOG.md
34
+ Keywords: security,penetration-testing,pentest,vulnerability-scanner,vulnerability-assessment,security-scanner,security-tools,security-automation,ai,llm,artificial-intelligence,machine-learning,gpt,claude,cybersecurity,infosec,appsec,devsecops,vapt,dast,sast,bug-bounty,ethical-hacking,red-team,offensive-security,web-security,owasp,cve,exploit,nmap,nuclei,sqlmap,burp-suite,acunetix,nessus,zap,reconnaissance,recon,scanning,exploitation,automation,cli,api
35
+ Classifier: Development Status :: 4 - Beta
36
+ Classifier: Environment :: Console
37
+ Classifier: Environment :: Web Environment
38
+ Classifier: Intended Audience :: Developers
39
+ Classifier: Intended Audience :: Information Technology
40
+ Classifier: Intended Audience :: System Administrators
41
+ Classifier: Intended Audience :: Science/Research
42
+ Classifier: Topic :: Security
43
+ Classifier: Topic :: Security :: Cryptography
44
+ Classifier: Topic :: Software Development :: Testing
45
+ Classifier: Topic :: Software Development :: Testing :: Acceptance
46
+ Classifier: Topic :: Software Development :: Quality Assurance
47
+ Classifier: Topic :: Internet :: WWW/HTTP
48
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
49
+ Classifier: Topic :: System :: Networking
50
+ Classifier: Topic :: System :: Systems Administration
51
+ Classifier: Topic :: System :: Monitoring
52
+ Classifier: Topic :: Utilities
53
+ Classifier: License :: OSI Approved :: MIT License
54
+ Classifier: Operating System :: OS Independent
55
+ Classifier: Operating System :: POSIX :: Linux
56
+ Classifier: Operating System :: MacOS
57
+ Classifier: Operating System :: Microsoft :: Windows
58
+ Classifier: Programming Language :: Python :: 3
59
+ Classifier: Programming Language :: Python :: 3.10
60
+ Classifier: Programming Language :: Python :: 3.11
61
+ Classifier: Programming Language :: Python :: 3.12
62
+ Classifier: Programming Language :: Python :: 3.13
63
+ Classifier: Programming Language :: Python :: Implementation :: CPython
64
+ Classifier: Typing :: Typed
65
+ Classifier: Framework :: FastAPI
66
+ Classifier: Natural Language :: English
67
+ Requires-Python: >=3.9
68
+ Description-Content-Type: text/markdown
69
+ License-File: LICENSE
70
+ Requires-Dist: litellm>=1.50.0
71
+ Requires-Dist: jinja2>=3.1.0
72
+ Requires-Dist: tiktoken>=0.5.0
73
+ Requires-Dist: requests>=2.31.0
74
+ Requires-Dist: httpx>=0.25.0
75
+ Requires-Dist: aiohttp>=3.9.0
76
+ Requires-Dist: fastapi>=0.104.0
77
+ Requires-Dist: uvicorn[standard]>=0.24.0
78
+ Requires-Dist: pydantic>=2.5.0
79
+ Requires-Dist: pydantic-settings>=2.0.0
80
+ Requires-Dist: slowapi>=0.1.9
81
+ Requires-Dist: sqlalchemy>=2.0.0
82
+ Requires-Dist: alembic>=1.13.0
83
+ Requires-Dist: textual>=0.44.0
84
+ Requires-Dist: rich>=13.7.0
85
+ Requires-Dist: click>=8.1.0
86
+ Requires-Dist: typer>=0.9.0
87
+ Requires-Dist: pyyaml>=6.0
88
+ Requires-Dist: python-dotenv>=1.0.0
89
+ Requires-Dist: aiofiles>=23.0.0
90
+ Requires-Dist: structlog>=23.0.0
91
+ Requires-Dist: psutil>=5.9.0
92
+ Provides-Extra: full
93
+ Requires-Dist: sentence-transformers>=2.2.0; extra == "full"
94
+ Requires-Dist: numpy>=1.24.0; extra == "full"
95
+ Requires-Dist: torch>=2.0.0; extra == "full"
96
+ Requires-Dist: playwright>=1.40.0; extra == "full"
97
+ Requires-Dist: mitmproxy>=10.0.0; extra == "full"
98
+ Requires-Dist: docker>=7.0.0; extra == "full"
99
+ Requires-Dist: pexpect>=4.8.0; extra == "full"
100
+ Requires-Dist: paramiko>=3.4.0; extra == "full"
101
+ Requires-Dist: langchain-core>=0.1.0; extra == "full"
102
+ Requires-Dist: scikit-learn>=1.3.0; extra == "full"
103
+ Requires-Dist: scipy>=1.11.0; extra == "full"
104
+ Requires-Dist: pandas>=2.0.0; extra == "full"
105
+ Provides-Extra: dev
106
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
107
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
108
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
109
+ Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
110
+ Requires-Dist: black>=23.0.0; extra == "dev"
111
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
112
+ Requires-Dist: mypy>=1.7.0; extra == "dev"
113
+ Requires-Dist: bandit>=1.7.0; extra == "dev"
114
+ Requires-Dist: pre-commit>=3.5.0; extra == "dev"
115
+ Requires-Dist: safety>=2.3.0; extra == "dev"
116
+ Dynamic: license-file
117
+
118
+ # AIPTX - AI-Powered Penetration Testing Framework
119
+
120
+ [![PyPI version](https://badge.fury.io/py/aiptx.svg)](https://badge.fury.io/py/aiptx)
121
+ [![Downloads](https://static.pepy.tech/badge/aiptx)](https://pepy.tech/project/aiptx)
122
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
123
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
124
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
125
+
126
+ > **AI-Powered Security Assessment & Vulnerability Discovery Platform**
127
+
128
+ **AIPTX** is an intelligent penetration testing framework that leverages Large Language Models (LLMs) to autonomously conduct security assessments. It orchestrates comprehensive vulnerability discovery through AI-guided decision making, smart prioritization, and automated reporting.
129
+
130
+ ---
131
+
132
+ ## Key Features
133
+
134
+ ### AI Intelligence Layer
135
+ - **LLM-Guided Scanning** — AI decides which techniques to apply based on discovered information
136
+ - **Smart Vulnerability Triage** — Prioritizes findings by real-world exploitability, not just severity scores
137
+ - **Attack Chain Detection** — Identifies how multiple findings combine into critical attack paths
138
+ - **Semantic Tool Selection** — RAG-based matching of objectives to optimal assessment techniques
139
+
140
+ ### Comprehensive Assessment Capabilities
141
+ - **Reconnaissance** — Subdomain discovery, DNS enumeration, technology fingerprinting, historical data analysis
142
+ - **Vulnerability Scanning** — Web application testing, configuration analysis, secret detection, container security
143
+ - **Exploitation Testing** — SQL injection, XSS, command injection, credential testing (opt-in)
144
+ - **Post-Exploitation** — Privilege escalation detection, credential extraction, process monitoring
145
+
146
+ ### Enterprise Integration
147
+ - Native API support for leading commercial security platforms
148
+ - Unified interface for both open-source and enterprise scanning solutions
149
+ - Seamless integration into existing security workflows
150
+
151
+ ### Professional Output
152
+ - **HTML Reports** — Executive-ready vulnerability documentation
153
+ - **JSON Export** — CI/CD pipeline integration
154
+ - **REST API** — Programmatic access for automation
155
+ - **Terminal UI** — Real-time progress monitoring
156
+
157
+ ---
158
+
159
+ ## Installation
160
+
161
+ ```bash
162
+ # Recommended: Install with pipx
163
+ pipx install aiptx
164
+
165
+ # Or with pip
166
+ pip install aiptx
167
+
168
+ # Full installation (ML features, browser automation, proxy)
169
+ pip install aiptx[full]
170
+ ```
171
+
172
+ **Requirements:** Python 3.9+
173
+
174
+ ---
175
+
176
+ ## Quick Start
177
+
178
+ ```bash
179
+ # Basic security scan
180
+ aiptx scan example.com
181
+
182
+ # AI-guided intelligent scanning
183
+ aiptx scan example.com --ai
184
+
185
+ # Comprehensive assessment (all capabilities)
186
+ aiptx scan example.com --full
187
+
188
+ # Container security assessment
189
+ aiptx scan example.com --container
190
+
191
+ # Secret and credential detection
192
+ aiptx scan example.com --secrets
193
+
194
+ # Check configuration
195
+ aiptx status
196
+
197
+ # Start REST API server
198
+ aiptx api
199
+ ```
200
+
201
+ ---
202
+
203
+ ## How It Works
204
+
205
+ AIPTX operates on a **Think → Select → Execute → Learn** loop:
206
+
207
+ ```
208
+ ┌─────────────────────────────────────────────────────────────────┐
209
+ │ AIPTX Framework │
210
+ ├─────────────────────────────────────────────────────────────────┤
211
+ │ AI INTELLIGENCE LAYER │
212
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
213
+ │ │ LLM Engine │ │ Scoring │ │Attack Chain │ │
214
+ │ │ (100+ LLMs) │ │ Engine │ │ Detection │ │
215
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
216
+ ├─────────────────────────────────────────────────────────────────┤
217
+ │ ASSESSMENT PIPELINE │
218
+ │ RECON ──────► SCAN ──────► EXPLOIT ──────► POST-EXPLOIT │
219
+ ├─────────────────────────────────────────────────────────────────┤
220
+ │ OUTPUT │
221
+ │ HTML Reports │ JSON Export │ REST API │ TUI │
222
+ └─────────────────────────────────────────────────────────────────┘
223
+ ```
224
+
225
+ 1. **Think** — AI analyzes target and current findings
226
+ 2. **Select** — Chooses appropriate assessment techniques via semantic search
227
+ 3. **Execute** — Runs assessments in isolated environments
228
+ 4. **Learn** — Extracts findings and determines next steps
229
+
230
+ ---
231
+
232
+ ## LLM Configuration
233
+
234
+ AIPTX supports **100+ LLM providers** for AI-guided scanning:
235
+
236
+ ```bash
237
+ # Anthropic Claude
238
+ export ANTHROPIC_API_KEY="your-key"
239
+
240
+ # OpenAI
241
+ export OPENAI_API_KEY="your-key"
242
+
243
+ # Azure OpenAI
244
+ export AZURE_API_KEY="your-key"
245
+ export AZURE_API_BASE="your-endpoint"
246
+
247
+ # Local models (for offline/private use)
248
+ export OLLAMA_API_BASE="http://localhost:11434"
249
+ ```
250
+
251
+ ---
252
+
253
+ ## Use Cases
254
+
255
+ | Scenario | Command |
256
+ |----------|---------|
257
+ | **Bug Bounty** | `aiptx scan target.com --ai --full` |
258
+ | **Penetration Testing** | `aiptx scan client.com --full` |
259
+ | **DevSecOps Pipeline** | `aiptx scan app.com --container --secrets --json` |
260
+ | **Red Team Operations** | `aiptx scan target.corp --ai --exploit --full` |
261
+
262
+ ---
263
+
264
+ ## Command Reference
265
+
266
+ | Command | Description |
267
+ |---------|-------------|
268
+ | `aiptx scan <target>` | Run security assessment |
269
+ | `aiptx scan <target> --ai` | Enable AI-guided scanning |
270
+ | `aiptx scan <target> --full` | Comprehensive assessment |
271
+ | `aiptx scan <target> --quick` | Fast essential checks only |
272
+ | `aiptx scan <target> --exploit` | Enable exploitation testing |
273
+ | `aiptx scan <target> --container` | Container security scanning |
274
+ | `aiptx scan <target> --secrets` | Credential/secret detection |
275
+ | `aiptx status` | Check configuration |
276
+ | `aiptx version` | Show version |
277
+ | `aiptx api` | Start REST API server |
278
+
279
+ ---
280
+
281
+ ## Why AIPTX?
282
+
283
+ | Capability | AIPTX | Traditional Approach |
284
+ |------------|-------|---------------------|
285
+ | AI-Guided Decisions | ✅ | ❌ Manual |
286
+ | Unified Interface | ✅ | ❌ Multiple tools |
287
+ | Attack Chain Analysis | ✅ | ❌ Manual correlation |
288
+ | Smart Prioritization | ✅ | ❌ CVSS only |
289
+ | Professional Reports | ✅ | ❌ Manual documentation |
290
+ | Single Command | ✅ | ❌ Complex scripts |
291
+
292
+ ---
293
+
294
+ ## Requirements
295
+
296
+ - **Python**: 3.9 or higher
297
+ - **OS**: Linux, macOS, Windows (WSL recommended)
298
+ - **Optional**: Docker for isolated execution
299
+
300
+ ---
301
+
302
+ ## License
303
+
304
+ MIT License — Free for commercial and personal use.
305
+
306
+ ---
307
+
308
+ ## Author
309
+
310
+ **Satyam Rastogi** — Security Researcher & Developer
311
+
312
+ ---
313
+
314
+ ## Links
315
+
316
+ - [PyPI Package](https://pypi.org/project/aiptx/)
317
+ - [GitHub Repository](https://github.com/satyamrastogi/aiptx)
318
+ - [Changelog](https://github.com/satyamrastogi/aiptx/blob/main/CHANGELOG.md)
319
+
320
+ ---
321
+
322
+ <p align="center">
323
+ <b>Intelligent Security Assessment, Simplified.</b>
324
+ </p>