sentinelscan 1.0.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.
- sentinelscan-1.0.0/LICENSE +0 -0
- sentinelscan-1.0.0/MANIFEST.in +4 -0
- sentinelscan-1.0.0/PKG-INFO +341 -0
- sentinelscan-1.0.0/README.md +311 -0
- sentinelscan-1.0.0/pyproject.toml +3 -0
- sentinelscan-1.0.0/reports/__init__.py +0 -0
- sentinelscan-1.0.0/requirements.txt +7 -0
- sentinelscan-1.0.0/screenshots/__init__.py +0 -0
- sentinelscan-1.0.0/sentinelscan/__init__.py +0 -0
- sentinelscan-1.0.0/sentinelscan/__pycache__/__init__.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/core/__init__.py +0 -0
- sentinelscan-1.0.0/sentinelscan/core/__pycache__/__init__.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/core/__pycache__/engine.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/core/engine.py +172 -0
- sentinelscan-1.0.0/sentinelscan/modules/__init__.py +0 -0
- sentinelscan-1.0.0/sentinelscan/modules/__pycache__/__init__.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/modules/__pycache__/port_scanner.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/modules/__pycache__/subdomain.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/modules/__pycache__/vuln_checks.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/modules/__pycache__/web_recon.cpython-313.pyc +0 -0
- sentinelscan-1.0.0/sentinelscan/modules/port_scanner.py +203 -0
- sentinelscan-1.0.0/sentinelscan/modules/subdomain.py +191 -0
- sentinelscan-1.0.0/sentinelscan/modules/vuln_checks.py +189 -0
- sentinelscan-1.0.0/sentinelscan/modules/web_recon.py +183 -0
- sentinelscan-1.0.0/sentinelscan/scanner.py +227 -0
- sentinelscan-1.0.0/sentinelscan.egg-info/PKG-INFO +341 -0
- sentinelscan-1.0.0/sentinelscan.egg-info/SOURCES.txt +37 -0
- sentinelscan-1.0.0/sentinelscan.egg-info/dependency_links.txt +1 -0
- sentinelscan-1.0.0/sentinelscan.egg-info/entry_points.txt +2 -0
- sentinelscan-1.0.0/sentinelscan.egg-info/requires.txt +4 -0
- sentinelscan-1.0.0/sentinelscan.egg-info/top_level.txt +4 -0
- sentinelscan-1.0.0/setup.cfg +4 -0
- sentinelscan-1.0.0/setup.py +33 -0
- sentinelscan-1.0.0/tests/__init__.py +0 -0
- sentinelscan-1.0.0/tests/test_engine.py +27 -0
- sentinelscan-1.0.0/tests/test_port_scanner.py +17 -0
- sentinelscan-1.0.0/tests/test_subdomain.py +22 -0
- sentinelscan-1.0.0/tests/test_vuln_checks.py +34 -0
- sentinelscan-1.0.0/tests/test_web_recon.py +22 -0
|
File without changes
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sentinelscan
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Modular cybersecurity scanner with port scanning, subdomain enumeration, web recon, and vulnerability checks.
|
|
5
|
+
Home-page: https://github.com/aljabid/SentinelScan
|
|
6
|
+
Author: Al Jabid
|
|
7
|
+
License: MIT
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Topic :: Security
|
|
12
|
+
Classifier: Topic :: Utilities
|
|
13
|
+
Requires-Python: >=3.8
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: requests>=2.31.0
|
|
17
|
+
Requires-Dist: PyYAML>=6.0.1
|
|
18
|
+
Requires-Dist: pytest>=8.0.0
|
|
19
|
+
Requires-Dist: colorama>=0.4.6
|
|
20
|
+
Dynamic: author
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
30
|
+
|
|
31
|
+
# SentinelScan
|
|
32
|
+
|
|
33
|
+
## Overview
|
|
34
|
+
SentinelScan is a **modular cybersecurity reconnaissance and vulnerability scanning framework** built in Python. It is designed for educational and professional use, providing a structured way to perform port scanning, subdomain enumeration, web reconnaissance, and vulnerability checks.
|
|
35
|
+
|
|
36
|
+
This project emphasizes:
|
|
37
|
+
- **Modularity**: Each feature is in its own module (`modules/`).
|
|
38
|
+
- **Professional polish**: Configurable via `config.yaml`, with reporting in TXT, JSON, and HTML.
|
|
39
|
+
- **Test coverage**: Full pytest suite in `tests/`.
|
|
40
|
+
- **CI/CD readiness**: Easily integrated with GitHub Actions.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Features
|
|
45
|
+
- **Port Scanner**
|
|
46
|
+
- Multithreaded TCP scanning
|
|
47
|
+
- Banner grabbing
|
|
48
|
+
- Common ports scan
|
|
49
|
+
- Stealth mode (delayed scans)
|
|
50
|
+
- Basic UDP scanning
|
|
51
|
+
|
|
52
|
+
- **Subdomain Enumeration**
|
|
53
|
+
- Wordlist-based (multithreaded)
|
|
54
|
+
- HTTP/HTTPS liveness checks
|
|
55
|
+
- Brute force mode
|
|
56
|
+
- Passive enumeration via `crt.sh`
|
|
57
|
+
- Hybrid scan combining all methods
|
|
58
|
+
|
|
59
|
+
- **Web Reconnaissance**
|
|
60
|
+
- Header analysis (security headers)
|
|
61
|
+
- Technology detection (PHP, ASP.NET, etc.)
|
|
62
|
+
- SSL/TLS certificate analysis
|
|
63
|
+
- CORS misconfiguration checks
|
|
64
|
+
- Cookie security flag checks
|
|
65
|
+
|
|
66
|
+
- **Vulnerability Checks**
|
|
67
|
+
- Admin panel detection
|
|
68
|
+
- Sensitive file checks (`robots.txt`, `.git/`, backups)
|
|
69
|
+
- Open port checks
|
|
70
|
+
- Security header checks
|
|
71
|
+
- Directory listing detection
|
|
72
|
+
- Default server page detection (Apache/IIS)
|
|
73
|
+
- Basic CVE pattern checks (WordPress/Joomla)
|
|
74
|
+
|
|
75
|
+
- **Engine Orchestration**
|
|
76
|
+
- Unified runner (`core/engine.py`)
|
|
77
|
+
- Configurable modules
|
|
78
|
+
- Reporting in TXT, JSON, HTML
|
|
79
|
+
|
|
80
|
+
- **Testing Suite**
|
|
81
|
+
- Pytest coverage for all modules
|
|
82
|
+
- CI/CD ready
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Project Structure
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## ๐ Project Structure
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
PythonProject/
|
|
93
|
+
โโโ core/
|
|
94
|
+
โ โโโ __init__.py
|
|
95
|
+
โ โโโ engine.py
|
|
96
|
+
โ
|
|
97
|
+
โโโ modules/
|
|
98
|
+
โ โโโ __init__.py
|
|
99
|
+
โ โโโ port_scanner.py
|
|
100
|
+
โ โโโ subdomain.py
|
|
101
|
+
โ โโโ web_recon.py
|
|
102
|
+
โ โโโ vuln_checks.py
|
|
103
|
+
โ
|
|
104
|
+
โโโ tests/
|
|
105
|
+
โ โโโ __init__.py
|
|
106
|
+
โ โโโ test_engine.py
|
|
107
|
+
โ โโโ test_port_scanner.py
|
|
108
|
+
โ โโโ test_subdomain.py
|
|
109
|
+
โ โโโ test_web_recon.py
|
|
110
|
+
โ โโโ test_vuln_checks.py
|
|
111
|
+
โ
|
|
112
|
+
โโโ scanner.py
|
|
113
|
+
โโโ config.yaml
|
|
114
|
+
โโโ requirements.txt
|
|
115
|
+
โโโ .gitignore
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
### ๐ Structure Explanation
|
|
121
|
+
|
|
122
|
+
- **core/** โ Main engine logic and scanner orchestration
|
|
123
|
+
- **modules/** โ Independent scanning modules (modular architecture)
|
|
124
|
+
- **tests/** โ Unit tests for CI/CD automation
|
|
125
|
+
- **scanner.py** โ CLI entry point
|
|
126
|
+
- **config.yaml** โ Configuration settings
|
|
127
|
+
- **requirements.txt** โ Project dependencies
|
|
128
|
+
- **.gitignore** โ Files ignored by Git
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
# โ๏ธ Installation
|
|
133
|
+
|
|
134
|
+
## 1๏ธโฃ Clone Repository
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
git clone https://github.com/yourusername/SentinelScan.git
|
|
138
|
+
cd SentinelScan
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 2๏ธโฃ Create Virtual Environment
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
python -m venv .venv
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Activate:
|
|
148
|
+
|
|
149
|
+
Linux / Mac:
|
|
150
|
+
```bash
|
|
151
|
+
source .venv/bin/activate
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Windows:
|
|
155
|
+
```bash
|
|
156
|
+
.venv\Scripts\activate
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## 3๏ธโฃ Install Dependencies
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
pip install -r requirements.txt
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
# โถ๏ธ Usage
|
|
168
|
+
|
|
169
|
+
## CLI Entry Point
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
python scanner.py --target example.com --ports 1-100 --subdomains --web --vuln --output report.txt --format txt
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Available Options
|
|
178
|
+
|
|
179
|
+
| Option | Description |
|
|
180
|
+
|--------|-------------|
|
|
181
|
+
| --target | Target domain or IP |
|
|
182
|
+
| --ports | Port range (e.g., 1-1000) |
|
|
183
|
+
| --subdomains | Enable subdomain enumeration |
|
|
184
|
+
| --web | Enable web reconnaissance |
|
|
185
|
+
| --vuln | Enable vulnerability checks |
|
|
186
|
+
| --output | Save report to file |
|
|
187
|
+
| --format | Report format (txt, json, html) |
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
# ๐ Configuration
|
|
192
|
+
|
|
193
|
+
Edit `config.yaml`:
|
|
194
|
+
|
|
195
|
+
```yaml
|
|
196
|
+
default_ports: "1-1000"
|
|
197
|
+
timeout: 0.5
|
|
198
|
+
wordlist: "wordlists/subdomains.txt"
|
|
199
|
+
output_format: "json"
|
|
200
|
+
|
|
201
|
+
modules:
|
|
202
|
+
port_scanner: true
|
|
203
|
+
subdomain: true
|
|
204
|
+
web_recon: true
|
|
205
|
+
vuln_checks: true
|
|
206
|
+
|
|
207
|
+
reporting:
|
|
208
|
+
save_logs: true
|
|
209
|
+
log_file: "reports/scan.log"
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
# ๐ Reporting
|
|
215
|
+
|
|
216
|
+
SentinelScan supports:
|
|
217
|
+
|
|
218
|
+
- โ
TXT (Human-readable)
|
|
219
|
+
- โ
JSON (Automation-friendly)
|
|
220
|
+
- โ
HTML (Browser viewable)
|
|
221
|
+
|
|
222
|
+
Example TXT output:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
=== Ports ===
|
|
226
|
+
[+] Port 80 OPEN | Banner: Apache/2.4.41
|
|
227
|
+
[+] Port 443 OPEN | Banner: nginx
|
|
228
|
+
|
|
229
|
+
=== Subdomains ===
|
|
230
|
+
[+] Found: www.example.com -> 93.184.216.34
|
|
231
|
+
[+] Alive: https://www.example.com (Status 200)
|
|
232
|
+
|
|
233
|
+
=== Web Recon ===
|
|
234
|
+
[+] Server: Apache
|
|
235
|
+
[!] Missing HSTS (SSL stripping risk)
|
|
236
|
+
|
|
237
|
+
=== Vulnerabilities ===
|
|
238
|
+
[+] Found admin panel: http://example.com/admin (Status 200)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
# ๐งช Testing
|
|
244
|
+
|
|
245
|
+
Run all tests:
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
pytest tests/
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Verbose:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
pytest -v
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Generate JUnit report:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
pytest --junitxml=reports/test_results.xml
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
# ๐ CI/CD Integration
|
|
266
|
+
|
|
267
|
+
Create:
|
|
268
|
+
|
|
269
|
+
`.github/workflows/ci.yml`
|
|
270
|
+
|
|
271
|
+
```yaml
|
|
272
|
+
name: SentinelScan CI
|
|
273
|
+
|
|
274
|
+
on:
|
|
275
|
+
push:
|
|
276
|
+
branches: [ main ]
|
|
277
|
+
pull_request:
|
|
278
|
+
branches: [ main ]
|
|
279
|
+
|
|
280
|
+
jobs:
|
|
281
|
+
test:
|
|
282
|
+
runs-on: ubuntu-latest
|
|
283
|
+
steps:
|
|
284
|
+
- uses: actions/checkout@v4
|
|
285
|
+
- uses: actions/setup-python@v5
|
|
286
|
+
with:
|
|
287
|
+
python-version: "3.13"
|
|
288
|
+
- run: pip install -r requirements.txt
|
|
289
|
+
- run: pytest tests/ --maxfail=1 --disable-warnings -q
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
# ๐ง Development Philosophy
|
|
295
|
+
|
|
296
|
+
- Modular architecture
|
|
297
|
+
- Extensible plugin system
|
|
298
|
+
- Clean separation of core and modules
|
|
299
|
+
- Designed for learning secure development practices
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
# โ๏ธ Ethical Disclaimer
|
|
304
|
+
|
|
305
|
+
SentinelScan is intended for educational and professional security research only.
|
|
306
|
+
|
|
307
|
+
Do NOT scan systems without explicit authorization.
|
|
308
|
+
|
|
309
|
+
Unauthorized scanning may violate laws.
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
# ๐บ Roadmap
|
|
314
|
+
|
|
315
|
+
- [ ] DNS Enumeration
|
|
316
|
+
- [ ] CVE checks via NVD API
|
|
317
|
+
- [ ] Web screenshot capture
|
|
318
|
+
- [ ] Docker support
|
|
319
|
+
- [ ] Risk scoring system
|
|
320
|
+
- [ ] AI-based anomaly scoring
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
# ๐ค Contributing
|
|
325
|
+
|
|
326
|
+
1. Fork repository
|
|
327
|
+
2. Create feature branch
|
|
328
|
+
3. Commit with clear messages
|
|
329
|
+
4. Submit pull request
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
# ๐ License
|
|
334
|
+
|
|
335
|
+
MIT License
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
# ๐จโ๐ป Author
|
|
340
|
+
|
|
341
|
+
Developed as part of an Information Security Systems academic project.
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# SentinelScan
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
SentinelScan is a **modular cybersecurity reconnaissance and vulnerability scanning framework** built in Python. It is designed for educational and professional use, providing a structured way to perform port scanning, subdomain enumeration, web reconnaissance, and vulnerability checks.
|
|
5
|
+
|
|
6
|
+
This project emphasizes:
|
|
7
|
+
- **Modularity**: Each feature is in its own module (`modules/`).
|
|
8
|
+
- **Professional polish**: Configurable via `config.yaml`, with reporting in TXT, JSON, and HTML.
|
|
9
|
+
- **Test coverage**: Full pytest suite in `tests/`.
|
|
10
|
+
- **CI/CD readiness**: Easily integrated with GitHub Actions.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
- **Port Scanner**
|
|
16
|
+
- Multithreaded TCP scanning
|
|
17
|
+
- Banner grabbing
|
|
18
|
+
- Common ports scan
|
|
19
|
+
- Stealth mode (delayed scans)
|
|
20
|
+
- Basic UDP scanning
|
|
21
|
+
|
|
22
|
+
- **Subdomain Enumeration**
|
|
23
|
+
- Wordlist-based (multithreaded)
|
|
24
|
+
- HTTP/HTTPS liveness checks
|
|
25
|
+
- Brute force mode
|
|
26
|
+
- Passive enumeration via `crt.sh`
|
|
27
|
+
- Hybrid scan combining all methods
|
|
28
|
+
|
|
29
|
+
- **Web Reconnaissance**
|
|
30
|
+
- Header analysis (security headers)
|
|
31
|
+
- Technology detection (PHP, ASP.NET, etc.)
|
|
32
|
+
- SSL/TLS certificate analysis
|
|
33
|
+
- CORS misconfiguration checks
|
|
34
|
+
- Cookie security flag checks
|
|
35
|
+
|
|
36
|
+
- **Vulnerability Checks**
|
|
37
|
+
- Admin panel detection
|
|
38
|
+
- Sensitive file checks (`robots.txt`, `.git/`, backups)
|
|
39
|
+
- Open port checks
|
|
40
|
+
- Security header checks
|
|
41
|
+
- Directory listing detection
|
|
42
|
+
- Default server page detection (Apache/IIS)
|
|
43
|
+
- Basic CVE pattern checks (WordPress/Joomla)
|
|
44
|
+
|
|
45
|
+
- **Engine Orchestration**
|
|
46
|
+
- Unified runner (`core/engine.py`)
|
|
47
|
+
- Configurable modules
|
|
48
|
+
- Reporting in TXT, JSON, HTML
|
|
49
|
+
|
|
50
|
+
- **Testing Suite**
|
|
51
|
+
- Pytest coverage for all modules
|
|
52
|
+
- CI/CD ready
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Project Structure
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## ๐ Project Structure
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
PythonProject/
|
|
63
|
+
โโโ core/
|
|
64
|
+
โ โโโ __init__.py
|
|
65
|
+
โ โโโ engine.py
|
|
66
|
+
โ
|
|
67
|
+
โโโ modules/
|
|
68
|
+
โ โโโ __init__.py
|
|
69
|
+
โ โโโ port_scanner.py
|
|
70
|
+
โ โโโ subdomain.py
|
|
71
|
+
โ โโโ web_recon.py
|
|
72
|
+
โ โโโ vuln_checks.py
|
|
73
|
+
โ
|
|
74
|
+
โโโ tests/
|
|
75
|
+
โ โโโ __init__.py
|
|
76
|
+
โ โโโ test_engine.py
|
|
77
|
+
โ โโโ test_port_scanner.py
|
|
78
|
+
โ โโโ test_subdomain.py
|
|
79
|
+
โ โโโ test_web_recon.py
|
|
80
|
+
โ โโโ test_vuln_checks.py
|
|
81
|
+
โ
|
|
82
|
+
โโโ scanner.py
|
|
83
|
+
โโโ config.yaml
|
|
84
|
+
โโโ requirements.txt
|
|
85
|
+
โโโ .gitignore
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### ๐ Structure Explanation
|
|
91
|
+
|
|
92
|
+
- **core/** โ Main engine logic and scanner orchestration
|
|
93
|
+
- **modules/** โ Independent scanning modules (modular architecture)
|
|
94
|
+
- **tests/** โ Unit tests for CI/CD automation
|
|
95
|
+
- **scanner.py** โ CLI entry point
|
|
96
|
+
- **config.yaml** โ Configuration settings
|
|
97
|
+
- **requirements.txt** โ Project dependencies
|
|
98
|
+
- **.gitignore** โ Files ignored by Git
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# โ๏ธ Installation
|
|
103
|
+
|
|
104
|
+
## 1๏ธโฃ Clone Repository
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
git clone https://github.com/yourusername/SentinelScan.git
|
|
108
|
+
cd SentinelScan
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 2๏ธโฃ Create Virtual Environment
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
python -m venv .venv
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Activate:
|
|
118
|
+
|
|
119
|
+
Linux / Mac:
|
|
120
|
+
```bash
|
|
121
|
+
source .venv/bin/activate
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Windows:
|
|
125
|
+
```bash
|
|
126
|
+
.venv\Scripts\activate
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 3๏ธโฃ Install Dependencies
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
pip install -r requirements.txt
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
# โถ๏ธ Usage
|
|
138
|
+
|
|
139
|
+
## CLI Entry Point
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
python scanner.py --target example.com --ports 1-100 --subdomains --web --vuln --output report.txt --format txt
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Available Options
|
|
148
|
+
|
|
149
|
+
| Option | Description |
|
|
150
|
+
|--------|-------------|
|
|
151
|
+
| --target | Target domain or IP |
|
|
152
|
+
| --ports | Port range (e.g., 1-1000) |
|
|
153
|
+
| --subdomains | Enable subdomain enumeration |
|
|
154
|
+
| --web | Enable web reconnaissance |
|
|
155
|
+
| --vuln | Enable vulnerability checks |
|
|
156
|
+
| --output | Save report to file |
|
|
157
|
+
| --format | Report format (txt, json, html) |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
# ๐ Configuration
|
|
162
|
+
|
|
163
|
+
Edit `config.yaml`:
|
|
164
|
+
|
|
165
|
+
```yaml
|
|
166
|
+
default_ports: "1-1000"
|
|
167
|
+
timeout: 0.5
|
|
168
|
+
wordlist: "wordlists/subdomains.txt"
|
|
169
|
+
output_format: "json"
|
|
170
|
+
|
|
171
|
+
modules:
|
|
172
|
+
port_scanner: true
|
|
173
|
+
subdomain: true
|
|
174
|
+
web_recon: true
|
|
175
|
+
vuln_checks: true
|
|
176
|
+
|
|
177
|
+
reporting:
|
|
178
|
+
save_logs: true
|
|
179
|
+
log_file: "reports/scan.log"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
# ๐ Reporting
|
|
185
|
+
|
|
186
|
+
SentinelScan supports:
|
|
187
|
+
|
|
188
|
+
- โ
TXT (Human-readable)
|
|
189
|
+
- โ
JSON (Automation-friendly)
|
|
190
|
+
- โ
HTML (Browser viewable)
|
|
191
|
+
|
|
192
|
+
Example TXT output:
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
=== Ports ===
|
|
196
|
+
[+] Port 80 OPEN | Banner: Apache/2.4.41
|
|
197
|
+
[+] Port 443 OPEN | Banner: nginx
|
|
198
|
+
|
|
199
|
+
=== Subdomains ===
|
|
200
|
+
[+] Found: www.example.com -> 93.184.216.34
|
|
201
|
+
[+] Alive: https://www.example.com (Status 200)
|
|
202
|
+
|
|
203
|
+
=== Web Recon ===
|
|
204
|
+
[+] Server: Apache
|
|
205
|
+
[!] Missing HSTS (SSL stripping risk)
|
|
206
|
+
|
|
207
|
+
=== Vulnerabilities ===
|
|
208
|
+
[+] Found admin panel: http://example.com/admin (Status 200)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
# ๐งช Testing
|
|
214
|
+
|
|
215
|
+
Run all tests:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
pytest tests/
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Verbose:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
pytest -v
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Generate JUnit report:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
pytest --junitxml=reports/test_results.xml
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
# ๐ CI/CD Integration
|
|
236
|
+
|
|
237
|
+
Create:
|
|
238
|
+
|
|
239
|
+
`.github/workflows/ci.yml`
|
|
240
|
+
|
|
241
|
+
```yaml
|
|
242
|
+
name: SentinelScan CI
|
|
243
|
+
|
|
244
|
+
on:
|
|
245
|
+
push:
|
|
246
|
+
branches: [ main ]
|
|
247
|
+
pull_request:
|
|
248
|
+
branches: [ main ]
|
|
249
|
+
|
|
250
|
+
jobs:
|
|
251
|
+
test:
|
|
252
|
+
runs-on: ubuntu-latest
|
|
253
|
+
steps:
|
|
254
|
+
- uses: actions/checkout@v4
|
|
255
|
+
- uses: actions/setup-python@v5
|
|
256
|
+
with:
|
|
257
|
+
python-version: "3.13"
|
|
258
|
+
- run: pip install -r requirements.txt
|
|
259
|
+
- run: pytest tests/ --maxfail=1 --disable-warnings -q
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
# ๐ง Development Philosophy
|
|
265
|
+
|
|
266
|
+
- Modular architecture
|
|
267
|
+
- Extensible plugin system
|
|
268
|
+
- Clean separation of core and modules
|
|
269
|
+
- Designed for learning secure development practices
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
# โ๏ธ Ethical Disclaimer
|
|
274
|
+
|
|
275
|
+
SentinelScan is intended for educational and professional security research only.
|
|
276
|
+
|
|
277
|
+
Do NOT scan systems without explicit authorization.
|
|
278
|
+
|
|
279
|
+
Unauthorized scanning may violate laws.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
# ๐บ Roadmap
|
|
284
|
+
|
|
285
|
+
- [ ] DNS Enumeration
|
|
286
|
+
- [ ] CVE checks via NVD API
|
|
287
|
+
- [ ] Web screenshot capture
|
|
288
|
+
- [ ] Docker support
|
|
289
|
+
- [ ] Risk scoring system
|
|
290
|
+
- [ ] AI-based anomaly scoring
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
# ๐ค Contributing
|
|
295
|
+
|
|
296
|
+
1. Fork repository
|
|
297
|
+
2. Create feature branch
|
|
298
|
+
3. Commit with clear messages
|
|
299
|
+
4. Submit pull request
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
# ๐ License
|
|
304
|
+
|
|
305
|
+
MIT License
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
# ๐จโ๐ป Author
|
|
310
|
+
|
|
311
|
+
Developed as part of an Information Security Systems academic project.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
Binary file
|
|
File without changes
|
|
Binary file
|