offsec-ai 2.0.0__tar.gz → 2.0.1__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.
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/CHANGELOG.md +2 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/CONTRIBUTING.md +4 -4
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/LICENSE +1 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/PKG-INFO +2 -2
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/README.md +1 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/SECURITY.md +5 -5
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/DOCKER.md +1 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/assets/logo.svg +1 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/pyproject.toml +1 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/__init__.py +1 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/ai_owasp_scanner.py +1 -1
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/mcp_attacker.py +4 -4
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/mcp_scanner.py +2 -2
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/.gitignore +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/api.md +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/azure-ad-flow-explained.md +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/hybrid-identity.md +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/owasp-scanner.md +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/docs/quickstart.md +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/examples/comprehensive_examples.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/examples/mtls_examples.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/examples/owasp_scan_examples.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/examples/usage_examples.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/__main__.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/cli.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/__init__.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/cert_analyzer.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/hybrid_identity_checker.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/l7_detector.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/llm_judge.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/mtls_checker.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/owasp_scanner.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/port_scanner.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/core/security_headers.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/__init__.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/ai_owasp_result.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/l7_result.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/mcp_result.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/mtls_result.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/owasp_result.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/models/scan_result.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/py.typed +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/__init__.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/ai_owasp_payloads.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/ai_owasp_remediation.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/common_ports.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/exporters.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/l7_signatures.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/mcp_cve_db.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/mcp_payloads.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/src/offsec_ai/utils/owasp_remediation.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/conftest.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_ai_owasp.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_dns_trace.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_mcp_attacker.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_mcp_scanner.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_mtls.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_mtls_integration.py +0 -0
- {offsec_ai-2.0.0 → offsec_ai-2.0.1}/tests/test_port_scanner.py +0 -0
|
@@ -560,5 +560,6 @@ All existing functionality (port scanning, L7 detection, mTLS, certificate analy
|
|
|
560
560
|
- cryptography: For certificate handling
|
|
561
561
|
- certifi: For CA bundle management
|
|
562
562
|
|
|
563
|
-
[Unreleased]: https://github.com/
|
|
563
|
+
[Unreleased]: https://github.com/Htunn/offsec-ai/compare/v2.0.1...HEAD
|
|
564
|
+
[2.0.1]: https://github.com/Htunn/offsec-ai/compare/v2.0.0...v2.0.1
|
|
564
565
|
[2.0.0]: https://github.com/htunn/offsec-ai/releases/tag/v2.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Contributing to
|
|
1
|
+
# Contributing to offsec-ai
|
|
2
2
|
|
|
3
|
-
Thank you for your interest in contributing to
|
|
3
|
+
Thank you for your interest in contributing to offsec-ai! This guide will help you get started.
|
|
4
4
|
|
|
5
5
|
## Code of Conduct
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ This project adheres to a code of conduct. By participating, you are expected to
|
|
|
12
12
|
|
|
13
13
|
1. **Fork and clone the repository**
|
|
14
14
|
```bash
|
|
15
|
-
git clone https://github.com/
|
|
15
|
+
git clone https://github.com/Htunn/offsec-ai.git
|
|
16
16
|
cd offsec-ai
|
|
17
17
|
```
|
|
18
18
|
|
|
@@ -327,4 +327,4 @@ Contributors will be recognized in:
|
|
|
327
327
|
- **Release notes** for significant contributions
|
|
328
328
|
- **GitHub contributors** page
|
|
329
329
|
|
|
330
|
-
Thank you for contributing to
|
|
330
|
+
Thank you for contributing to offsec-ai! 🎉
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: offsec-ai
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Offensive-security toolkit: port scanning, L7/WAF detection, mTLS, certificate analysis, OWASP Top 10, AI/LLM OWASP Top 10 black-box probing, and MCP endpoint security scanning
|
|
5
5
|
Project-URL: Homepage, https://github.com/htunn/offsec-ai
|
|
6
6
|
Project-URL: Repository, https://github.com/htunn/offsec-ai
|
|
@@ -57,7 +57,7 @@ Requires-Dist: google-generativeai>=0.7.0; extra == 'gemini'
|
|
|
57
57
|
Description-Content-Type: text/markdown
|
|
58
58
|
|
|
59
59
|
<p align="center">
|
|
60
|
-
<img src="docs/assets/logo.svg" alt="offsec-ai" width="520"/>
|
|
60
|
+
<img src="https://raw.githubusercontent.com/Htunn/offsec-ai/main/docs/assets/logo.svg" alt="offsec-ai" width="520"/>
|
|
61
61
|
</p>
|
|
62
62
|
|
|
63
63
|
<p align="center">
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## Supported Versions
|
|
4
4
|
|
|
5
|
-
We provide security updates for the following versions of
|
|
5
|
+
We provide security updates for the following versions of offsec-ai:
|
|
6
6
|
|
|
7
7
|
| Version | Supported |
|
|
8
8
|
| ------- | ------------------ |
|
|
9
|
-
|
|
|
10
|
-
|
|
|
9
|
+
| 2.x | :white_check_mark: |
|
|
10
|
+
| 1.x | :x: |
|
|
11
11
|
|
|
12
12
|
## Reporting a Vulnerability
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ We take security vulnerabilities seriously. If you discover a security vulnerabi
|
|
|
15
15
|
|
|
16
16
|
### How to Report
|
|
17
17
|
|
|
18
|
-
1. **Email**: Send an email to `htunnthuthu.linux@gmail.com` with the subject line "Security Vulnerability in
|
|
18
|
+
1. **Email**: Send an email to `htunnthuthu.linux@gmail.com` with the subject line "Security Vulnerability in offsec-ai"
|
|
19
19
|
2. **Include**:
|
|
20
20
|
- A description of the vulnerability
|
|
21
21
|
- Steps to reproduce the issue
|
|
@@ -38,7 +38,7 @@ We practice responsible disclosure:
|
|
|
38
38
|
|
|
39
39
|
## Security Best Practices
|
|
40
40
|
|
|
41
|
-
When using
|
|
41
|
+
When using offsec-ai:
|
|
42
42
|
|
|
43
43
|
1. **Network Scanning**: Only scan networks you own or have explicit permission to test
|
|
44
44
|
2. **Rate Limiting**: Use appropriate timeout and concurrency settings to avoid overwhelming target systems
|
|
@@ -9,6 +9,7 @@ A comprehensive, lightweight Docker container for network secu## 🔒 Certificat
|
|
|
9
9
|
| Tag | Description | Size | Architectures |
|
|
10
10
|
|-----|-------------|------|---------------|
|
|
11
11
|
| `latest` | Latest stable release | ~60MB | `linux/amd64`, `linux/arm64` |
|
|
12
|
+
| `v2.0.1` | v2.0.1 — logo fix, docs cleanup | ~60MB | `linux/amd64`, `linux/arm64` |
|
|
12
13
|
| `v2.0.0` | v2.0.0 — AI/LLM scanner, MCP scanner, Gemini judge | ~60MB | `linux/amd64`, `linux/arm64` |
|
|
13
14
|
|
|
14
15
|
**Recommendation**: Use `latest` for the most recent features, or pin to specific version tags for production deployments.
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
<!-- Version badge -->
|
|
50
50
|
<rect x="62" y="94" width="52" height="16" rx="3" fill="#cc000033" stroke="#cc000066" stroke-width="0.8"/>
|
|
51
51
|
<text x="88" y="106" font-family="'Courier New', Courier, monospace" font-size="9"
|
|
52
|
-
fill="#ff6666" text-anchor="middle">v2.0.
|
|
52
|
+
fill="#ff6666" text-anchor="middle">v2.0.1</text>
|
|
53
53
|
|
|
54
54
|
<!-- Right decorative dots (terminal-like) -->
|
|
55
55
|
<circle cx="470" cy="26" r="5" fill="#ff4444" opacity="0.9"/>
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "offsec-ai"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.1"
|
|
8
8
|
description = "Offensive-security toolkit: port scanning, L7/WAF detection, mTLS, certificate analysis, OWASP Top 10, AI/LLM OWASP Top 10 black-box probing, and MCP endpoint security scanning"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -169,7 +169,7 @@ class MCPAttacker:
|
|
|
169
169
|
test_headers = {
|
|
170
170
|
"Content-Type": "application/json",
|
|
171
171
|
"Accept": "application/json, text/event-stream",
|
|
172
|
-
"User-Agent": "offsec-ai/2.0.
|
|
172
|
+
"User-Agent": "offsec-ai/2.0.1",
|
|
173
173
|
**probe.get("headers", {}),
|
|
174
174
|
}
|
|
175
175
|
triggered = False
|
|
@@ -233,7 +233,7 @@ class MCPAttacker:
|
|
|
233
233
|
async with httpx.AsyncClient(
|
|
234
234
|
headers={"Content-Type": "application/json",
|
|
235
235
|
"Accept": "application/json, text/event-stream",
|
|
236
|
-
"User-Agent": "offsec-ai/2.0.
|
|
236
|
+
"User-Agent": "offsec-ai/2.0.1", **headers},
|
|
237
237
|
timeout=timeout,
|
|
238
238
|
) as client:
|
|
239
239
|
resp = await client.post(target, json=payload)
|
|
@@ -295,7 +295,7 @@ class MCPAttacker:
|
|
|
295
295
|
async with httpx.AsyncClient(
|
|
296
296
|
headers={"Content-Type": "application/json",
|
|
297
297
|
"Accept": "application/json, text/event-stream",
|
|
298
|
-
"User-Agent": "offsec-ai/2.0.
|
|
298
|
+
"User-Agent": "offsec-ai/2.0.1", **headers},
|
|
299
299
|
timeout=timeout,
|
|
300
300
|
) as client:
|
|
301
301
|
resp = await client.post(target, json=payload)
|
|
@@ -356,7 +356,7 @@ class MCPAttacker:
|
|
|
356
356
|
async with httpx.AsyncClient(
|
|
357
357
|
headers={"Content-Type": "application/json",
|
|
358
358
|
"Accept": "application/json, text/event-stream",
|
|
359
|
-
"User-Agent": "offsec-ai/2.0.
|
|
359
|
+
"User-Agent": "offsec-ai/2.0.1", **headers},
|
|
360
360
|
timeout=timeout,
|
|
361
361
|
) as client:
|
|
362
362
|
resp = await client.post(target, json=payload)
|
|
@@ -97,7 +97,7 @@ class MCPScanner:
|
|
|
97
97
|
headers={
|
|
98
98
|
"Content-Type": "application/json",
|
|
99
99
|
"Accept": "application/json, text/event-stream",
|
|
100
|
-
"User-Agent": "offsec-ai/2.0.
|
|
100
|
+
"User-Agent": "offsec-ai/2.0.1",
|
|
101
101
|
**self.headers,
|
|
102
102
|
},
|
|
103
103
|
timeout=self.timeout,
|
|
@@ -189,7 +189,7 @@ class MCPScanner:
|
|
|
189
189
|
|
|
190
190
|
# Try without any auth header
|
|
191
191
|
no_auth_client = httpx.AsyncClient(
|
|
192
|
-
headers={"Content-Type": "application/json", "Accept": "application/json, text/event-stream", "User-Agent": "offsec-ai/2.0.
|
|
192
|
+
headers={"Content-Type": "application/json", "Accept": "application/json, text/event-stream", "User-Agent": "offsec-ai/2.0.1"},
|
|
193
193
|
timeout=self.timeout,
|
|
194
194
|
)
|
|
195
195
|
async with no_auth_client:
|
|
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
|