Skip to main content

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
  • 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

  1. Fork repository
  2. Create feature branch
  3. Commit with clear messages
  4. Submit pull request

๐Ÿ“œ License

MIT License


๐Ÿ‘จโ€๐Ÿ’ป Author

Developed as part of an Information Security Systems academic project.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentinelscan-1.0.0.tar.gz (32.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sentinelscan-1.0.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

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

Hashes for sentinelscan-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1011bd25405672ccba98518063db3b4491a445fdb8652ec13fcb31f2766d808d
MD5 bb5a4e4818d27c6bedab1bdd0691ebce
BLAKE2b-256 2a71ce29c4771b276c43b789ff34a64319e1df0ff5eb5b74695707882b45869d

See more details on using hashes here.

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

Hashes for sentinelscan-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 644095461d7fdfec1379450cc80c7d032c12dba1ce7db91cbb3a57920554bd13
MD5 46326a74909e2f5d0c4d53f7e4dc0745
BLAKE2b-256 51c130fdc5fd8ece88425d3d6b7beab2441d7a60e84df5ac57294ea617bd1866

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page