Modular cybersecurity scanner with port scanning, subdomain enumeration, web recon, and vulnerability checks.
Project description
SentinelScan
Overview
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.
This project emphasizes:
- Modularity: Each feature is in its own module (
modules/). - Professional polish: Configurable via
config.yaml, with reporting in TXT, JSON, and HTML. - Test coverage: Full pytest suite in
tests/. - CI/CD readiness: Easily integrated with GitHub Actions.
Features
-
Port Scanner
- Multithreaded TCP scanning
- Banner grabbing
- Common ports scan
- Stealth mode (delayed scans)
- Basic UDP scanning
-
Subdomain Enumeration
- Wordlist-based (multithreaded)
- HTTP/HTTPS liveness checks
- Brute force mode
- Passive enumeration via
crt.sh - Hybrid scan combining all methods
-
Web Reconnaissance
- Header analysis (security headers)
- Technology detection (PHP, ASP.NET, etc.)
- SSL/TLS certificate analysis
- CORS misconfiguration checks
- Cookie security flag checks
-
Vulnerability Checks
- Admin panel detection
- Sensitive file checks (
robots.txt,.git/, backups) - Open port checks
- Security header checks
- Directory listing detection
- Default server page detection (Apache/IIS)
- Basic CVE pattern checks (WordPress/Joomla)
-
Engine Orchestration
- Unified runner (
core/engine.py) - Configurable modules
- Reporting in TXT, JSON, HTML
- Unified runner (
-
Testing Suite
- Pytest coverage for all modules
- CI/CD ready
Project Structure
๐ Project Structure
PythonProject/
โโโ core/
โ โโโ __init__.py
โ โโโ engine.py
โ
โโโ modules/
โ โโโ __init__.py
โ โโโ port_scanner.py
โ โโโ subdomain.py
โ โโโ web_recon.py
โ โโโ vuln_checks.py
โ
โโโ tests/
โ โโโ __init__.py
โ โโโ test_engine.py
โ โโโ test_port_scanner.py
โ โโโ test_subdomain.py
โ โโโ test_web_recon.py
โ โโโ test_vuln_checks.py
โ
โโโ scanner.py
โโโ config.yaml
โโโ requirements.txt
โโโ .gitignore
๐ Structure Explanation
- core/ โ Main engine logic and scanner orchestration
- modules/ โ Independent scanning modules (modular architecture)
- tests/ โ Unit tests for CI/CD automation
- scanner.py โ CLI entry point
- config.yaml โ Configuration settings
- requirements.txt โ Project dependencies
- .gitignore โ Files ignored by Git
โ๏ธ Installation
1๏ธโฃ Clone Repository
git clone https://github.com/yourusername/SentinelScan.git
cd SentinelScan
2๏ธโฃ Create Virtual Environment
python -m venv .venv
Activate:
Linux / Mac:
source .venv/bin/activate
Windows:
.venv\Scripts\activate
3๏ธโฃ Install Dependencies
pip install -r requirements.txt
โถ๏ธ Usage
CLI Entry Point
python scanner.py --target example.com --ports 1-100 --subdomains --web --vuln --output report.txt --format txt
Available Options
| Option | Description |
|---|---|
| --target | Target domain or IP |
| --ports | Port range (e.g., 1-1000) |
| --subdomains | Enable subdomain enumeration |
| --web | Enable web reconnaissance |
| --vuln | Enable vulnerability checks |
| --output | Save report to file |
| --format | Report format (txt, json, html) |
๐ Configuration
Edit config.yaml:
default_ports: "1-1000"
timeout: 0.5
wordlist: "wordlists/subdomains.txt"
output_format: "json"
modules:
port_scanner: true
subdomain: true
web_recon: true
vuln_checks: true
reporting:
save_logs: true
log_file: "reports/scan.log"
๐ Reporting
SentinelScan supports:
- โ TXT (Human-readable)
- โ JSON (Automation-friendly)
- โ HTML (Browser viewable)
Example TXT output:
=== Ports ===
[+] Port 80 OPEN | Banner: Apache/2.4.41
[+] Port 443 OPEN | Banner: nginx
=== Subdomains ===
[+] Found: www.example.com -> 93.184.216.34
[+] Alive: https://www.example.com (Status 200)
=== Web Recon ===
[+] Server: Apache
[!] Missing HSTS (SSL stripping risk)
=== Vulnerabilities ===
[+] Found admin panel: http://example.com/admin (Status 200)
๐งช Testing
Run all tests:
pytest tests/
Verbose:
pytest -v
Generate JUnit report:
pytest --junitxml=reports/test_results.xml
๐ CI/CD Integration
Create:
.github/workflows/ci.yml
name: SentinelScan CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: pip install -r requirements.txt
- run: pytest tests/ --maxfail=1 --disable-warnings -q
๐ง Development Philosophy
- Modular architecture
- Extensible plugin system
- Clean separation of core and modules
- Designed for learning secure development practices
โ๏ธ Ethical Disclaimer
SentinelScan is intended for educational and professional security research only.
Do NOT scan systems without explicit authorization.
Unauthorized scanning may violate laws.
๐บ Roadmap
- DNS Enumeration
- CVE checks via NVD API
- Web screenshot capture
- Docker support
- Risk scoring system
- AI-based anomaly scoring
๐ค Contributing
- Fork repository
- Create feature branch
- Commit with clear messages
- Submit pull request
๐ License
MIT License
๐จโ๐ป Author
Developed as part of an Information Security Systems academic project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sentinelscan-1.0.0.tar.gz.
File metadata
- Download URL: sentinelscan-1.0.0.tar.gz
- Upload date:
- Size: 32.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1011bd25405672ccba98518063db3b4491a445fdb8652ec13fcb31f2766d808d
|
|
| MD5 |
bb5a4e4818d27c6bedab1bdd0691ebce
|
|
| BLAKE2b-256 |
2a71ce29c4771b276c43b789ff34a64319e1df0ff5eb5b74695707882b45869d
|
File details
Details for the file sentinelscan-1.0.0-py3-none-any.whl.
File metadata
- Download URL: sentinelscan-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
644095461d7fdfec1379450cc80c7d032c12dba1ce7db91cbb3a57920554bd13
|
|
| MD5 |
46326a74909e2f5d0c4d53f7e4dc0745
|
|
| BLAKE2b-256 |
51c130fdc5fd8ece88425d3d6b7beab2441d7a60e84df5ac57294ea617bd1866
|