shieldscan


Nameshieldscan JSON
Version 1.0.0 PyPI version JSON
download
home_pagehttps://github.com/yourusername/shieldscan
SummaryProfessional Web Security Assessment Tool
upload_time2025-10-29 14:54:31
maintainerNone
docs_urlNone
authorYour Name
requires_python>=3.9
licenseMIT
keywords security pentesting web-security owasp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # πŸ›‘οΈ ShieldScan - Professional Web Security Assessment Tool

[![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

**ShieldScan** is a professional, ethical web security assessment tool designed for authorized penetration testing. It provides comprehensive OWASP Top 10 vulnerability detection with a focus on safety, legal compliance, and responsible disclosure.

## ⚠️ Legal Notice

**USE THIS TOOL RESPONSIBLY AND LEGALLY**

- βœ… Only use on systems you **own** or have **explicit written authorization** to test
- βœ… Obtain proper consent before running in **active mode**
- βœ… Respect rate limits and avoid causing service disruption
- ❌ Unauthorized access to computer systems is **illegal** under applicable laws
- ❌ The authors assume **no liability** for misuse of this tool

## πŸš€ Features

### Safe-by-Default Design
- **Passive Mode (Default)**: Non-intrusive reconnaissance and header analysis
- **Active Mode**: Requires explicit consent file for intrusive testing
- **Rate Limiting**: Configurable request throttling (default: 1 req/sec)
- **Dry Run**: Preview checks without sending requests

### Comprehensive Security Checks
βœ… **HTTP Security Headers**: CSP, HSTS, X-Frame-Options, etc.  
βœ… **Cookie Security**: Secure, HttpOnly, SameSite attributes  
βœ… **XSS Detection**: Reflected XSS using benign markers  
βœ… **SQL Injection**: Error-based detection (non-destructive)  
βœ… **CORS Misconfiguration**: Wildcard and origin reflection  
βœ… **Directory Listing**: Common directory exposure  
βœ… **Open Redirect**: Parameter-based redirect testing  
βœ… **Clickjacking**: Frame protection analysis  

### Professional Reporting
- **JSON**: Structured data for automation
- **Markdown**: Stakeholder-friendly reports
- **HTML**: Styled web reports with severity visualization
- **Console**: Real-time terminal output

### Reconnaissance
- πŸ” robots.txt and sitemap.xml parsing
- πŸ”— Intelligent link discovery and crawling
- πŸ“ Form and input parameter extraction
- πŸ”§ Technology fingerprinting

## πŸ“¦ Installation

### From Source

```bash
# Clone the repository
git clone https://github.com/yourusername/shieldscan.git
cd shieldscan

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install in development mode
pip install -e .
```

### Using pip (once published)

```bash
pip install shieldscan
```

## 🎯 Quick Start

### 1. Basic Passive Scan (Safe)

```bash
shieldscan scan --target https://example.com --output report.json
```

This performs non-intrusive checks:
- Security header analysis
- Cookie configuration
- CORS policy review
- Basic reconnaissance

### 2. Active Scan with Consent

First, create a consent file (see `examples/consent_template.txt`):

```bash
# Edit consent file with authorization details
cp examples/consent_template.txt my_consent.txt
nano my_consent.txt
```

Then run active scan:

```bash
shieldscan scan \
  --target https://authorized-site.com \
  --mode active \
  --consent-file my_consent.txt \
  --output report.md \
  --format markdown
```

### 3. Scan Multiple Targets

```bash
# Create file with URLs (one per line)
cat > targets.txt << EOF
https://example.com
https://test.example.com
EOF

shieldscan scan --target-file targets.txt --format all --output results
```

### 4. Dry Run (Preview)

```bash
shieldscan scan --target https://example.com --dry-run
```

## πŸ”§ Usage

### Command-Line Options

```
shieldscan scan [OPTIONS]

Target Options:
  --target URL              Single target URL
  --target-file FILE        File with URLs (one per line)

Scan Options:
  --mode MODE               Scanning mode: passive (default) or active
  --consent-file FILE       Consent file (required for active mode)
  --throttle FLOAT          Requests per second (default: 1.0)
  --max-depth INT           Maximum crawl depth (default: 2)

Output Options:
  --output FILE             Output file path
  --format FORMAT           Output format: json, markdown, html, all

Other Options:
  --dry-run                 Show planned checks without executing
  --no-logo                 Suppress logo display
  -v, --verbosity LEVEL     Logging verbosity: 0 (warn), 1 (info), 2 (debug)
```

### Examples

**Comprehensive scan with all report formats:**
```bash
shieldscan scan \
  --target https://example.com \
  --format all \
  --output comprehensive_report \
  --throttle 2.0 \
  --max-depth 3
```

**Quiet passive scan:**
```bash
shieldscan scan --target https://example.com --verbosity 0 --no-logo
```

**Active scan with custom rate limit:**
```bash
shieldscan scan \
  --target https://authorized.com \
  --mode active \
  --consent-file consent.txt \
  --throttle 0.5 \
  --output detailed_scan.html \
  --format html
```

## πŸ“‹ Consent File Format

Active mode requires a consent file with the following information:

```
TARGET: https://example.com
SIGNATURE: John Doe
DATE: 2025-10-29
```

See `examples/consent_template.txt` for a complete template.

## πŸ—οΈ Architecture

ShieldScan follows a modular design:

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   CLI       β”‚  ← Entry point, argument parsing
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚
β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
β”‚  Scanner    β”‚  ← Orchestrates scan workflow
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚
       β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚              β”‚             β”‚              β”‚
β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
β”‚ HTTP Client β”‚ β”‚ Gatherer β”‚ β”‚ VulnCheckβ”‚  β”‚  Reporter  β”‚
β”‚ (Rate Ltd.) β”‚ β”‚ (Recon)  β”‚ β”‚ (Detect) β”‚  β”‚ (Output)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### Modules

- **cli.py**: Command-line interface with argparse
- **scanner.py**: Core orchestration engine
- **http_client.py**: HTTP wrapper with rate limiting and retries
- **gather.py**: Reconnaissance (robots.txt, sitemap, crawling)
- **vuln_checks.py**: Vulnerability detection checks
- **reporter.py**: Multi-format report generation
- **utils.py**: Common utilities and helpers
- **logo.py**: ASCII branding

## πŸ§ͺ Testing

Run the test suite:

```bash
# Run all tests
pytest

# With coverage
pytest --cov=web_pentest_cli --cov-report=html

# Run specific test file
pytest tests/test_utils.py -v
```

## πŸ”Œ Adding Custom Checks

ShieldScan supports plugin-style vulnerability checks:

```python
from web_pentest_cli.vuln_checks import VulnerabilityCheck, VulnerabilityResult

class CustomCheck(VulnerabilityCheck):
    @property
    def check_id(self) -> str:
        return "CUSTOM-001"

    @property
    def check_name(self) -> str:
        return "My Custom Check"

    def check(self, target_url: str, context: dict) -> List[VulnerabilityResult]:
        # Implement your check logic
        results = []
        response = self.client.get(target_url)

        if response and "vulnerable_pattern" in response.text:
            results.append(VulnerabilityResult(
                vuln_id=self.check_id,
                name="Custom Vulnerability",
                severity="medium",
                confidence="high",
                description="Description of the issue",
                evidence="Evidence from response",
                remediation="How to fix it"
            ))

        return results
```

## πŸ“Š Sample Output

### Console Summary
```
================================================================================
  SCAN SUMMARY
================================================================================
Target:     https://example.com
Scan ID:    scan_1730193600
Duration:   12.45 seconds
Requests:   23

Total Vulnerabilities: 5

Severity Breakdown:
  HIGH: 2
  MEDIUM: 2
  LOW: 1
================================================================================
```

### JSON Report Structure
```json
{
  "scan_id": "scan_1730193600",
  "target_url": "https://example.com",
  "mode": "passive",
  "vulnerabilities": [
    {
      "vuln_id": "SEC-HEADERS-001-csp",
      "name": "Missing Content-Security-Policy Header",
      "severity": "medium",
      "confidence": "high",
      "description": "CSP header is missing",
      "evidence": "Header 'content-security-policy' not found",
      "remediation": "Implement CSP to prevent XSS",
      "references": ["https://owasp.org/..."]
    }
  ],
  "statistics": {
    "total_vulnerabilities": 5,
    "severity_breakdown": {"high": 2, "medium": 2, "low": 1}
  }
}
```

## πŸ› οΈ Development

### Setup Development Environment

```bash
# Install with dev dependencies
pip install -e ".[dev]"

# Format code
black web_pentest_cli/

# Lint
flake8 web_pentest_cli/

# Type checking
mypy web_pentest_cli/
```

### Project Structure

```
shieldscan/
β”œβ”€β”€ web_pentest_cli/
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ cli.py
β”‚   β”œβ”€β”€ scanner.py
β”‚   β”œβ”€β”€ http_client.py
β”‚   β”œβ”€β”€ gather.py
β”‚   β”œβ”€β”€ vuln_checks.py
β”‚   β”œβ”€β”€ reporter.py
β”‚   β”œβ”€β”€ utils.py
β”‚   └── logo.py
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ test_utils.py
β”‚   β”œβ”€β”€ test_http_client.py
β”‚   └── test_vuln_checks.py
β”œβ”€β”€ examples/
β”‚   β”œβ”€β”€ consent_template.txt
β”‚   └── example_urls.txt
β”œβ”€β”€ README.md
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ setup.py
└── pyproject.toml
```

## πŸ“š References

- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [OWASP Testing Guide](https://owasp.org/www-project-web-security-testing-guide/)
- [OWASP Secure Headers Project](https://owasp.org/www-project-secure-headers/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)

## πŸ“ License

MIT License - see LICENSE file for details.

## πŸ‘¨β€πŸ’» Author

**Dr. [Your Name]**  
πŸ“§ Email: your.email@university.edu  
πŸ›οΈ Institution: University of Sousse  
πŸ”¬ Research: Internet of Vehicles, Security Testing, Traffic Optimization

## 🀝 Contributing

Contributions are welcome! Please:

1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request

## πŸ“ž Support

For issues, questions, or contributions:
- πŸ› Report bugs: [GitHub Issues](https://github.com/yourusername/shieldscan/issues)
- πŸ’¬ Discussions: [GitHub Discussions](https://github.com/yourusername/shieldscan/discussions)
- πŸ“§ Email: your.email@university.edu

## ⚑ Disclaimer

This tool is provided for educational and authorized testing purposes only. The authors and contributors:

- Are not responsible for any misuse or damage caused by this tool
- Do not endorse illegal activities
- Recommend obtaining proper authorization before testing
- Advise consulting legal counsel regarding testing activities

**Always test responsibly and ethically.**

---

Made with ❀️ for the security community


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/yourusername/shieldscan",
    "name": "shieldscan",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "security, pentesting, web-security, owasp",
    "author": "Your Name",
    "author_email": "Your Name <your.email@university.edu>",
    "download_url": "https://files.pythonhosted.org/packages/16/61/e26f744f0537fc3c4c12da7de76965623710140195911d9fed52293128cc/shieldscan-1.0.0.tar.gz",
    "platform": null,
    "description": "# \ud83d\udee1\ufe0f ShieldScan - Professional Web Security Assessment Tool\r\n\r\n[![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)\r\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\r\n[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\r\n\r\n**ShieldScan** is a professional, ethical web security assessment tool designed for authorized penetration testing. It provides comprehensive OWASP Top 10 vulnerability detection with a focus on safety, legal compliance, and responsible disclosure.\r\n\r\n## \u26a0\ufe0f Legal Notice\r\n\r\n**USE THIS TOOL RESPONSIBLY AND LEGALLY**\r\n\r\n- \u2705 Only use on systems you **own** or have **explicit written authorization** to test\r\n- \u2705 Obtain proper consent before running in **active mode**\r\n- \u2705 Respect rate limits and avoid causing service disruption\r\n- \u274c Unauthorized access to computer systems is **illegal** under applicable laws\r\n- \u274c The authors assume **no liability** for misuse of this tool\r\n\r\n## \ud83d\ude80 Features\r\n\r\n### Safe-by-Default Design\r\n- **Passive Mode (Default)**: Non-intrusive reconnaissance and header analysis\r\n- **Active Mode**: Requires explicit consent file for intrusive testing\r\n- **Rate Limiting**: Configurable request throttling (default: 1 req/sec)\r\n- **Dry Run**: Preview checks without sending requests\r\n\r\n### Comprehensive Security Checks\r\n\u2705 **HTTP Security Headers**: CSP, HSTS, X-Frame-Options, etc.  \r\n\u2705 **Cookie Security**: Secure, HttpOnly, SameSite attributes  \r\n\u2705 **XSS Detection**: Reflected XSS using benign markers  \r\n\u2705 **SQL Injection**: Error-based detection (non-destructive)  \r\n\u2705 **CORS Misconfiguration**: Wildcard and origin reflection  \r\n\u2705 **Directory Listing**: Common directory exposure  \r\n\u2705 **Open Redirect**: Parameter-based redirect testing  \r\n\u2705 **Clickjacking**: Frame protection analysis  \r\n\r\n### Professional Reporting\r\n- **JSON**: Structured data for automation\r\n- **Markdown**: Stakeholder-friendly reports\r\n- **HTML**: Styled web reports with severity visualization\r\n- **Console**: Real-time terminal output\r\n\r\n### Reconnaissance\r\n- \ud83d\udd0d robots.txt and sitemap.xml parsing\r\n- \ud83d\udd17 Intelligent link discovery and crawling\r\n- \ud83d\udcdd Form and input parameter extraction\r\n- \ud83d\udd27 Technology fingerprinting\r\n\r\n## \ud83d\udce6 Installation\r\n\r\n### From Source\r\n\r\n```bash\r\n# Clone the repository\r\ngit clone https://github.com/yourusername/shieldscan.git\r\ncd shieldscan\r\n\r\n# Create virtual environment\r\npython -m venv venv\r\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\r\n\r\n# Install dependencies\r\npip install -r requirements.txt\r\n\r\n# Install in development mode\r\npip install -e .\r\n```\r\n\r\n### Using pip (once published)\r\n\r\n```bash\r\npip install shieldscan\r\n```\r\n\r\n## \ud83c\udfaf Quick Start\r\n\r\n### 1. Basic Passive Scan (Safe)\r\n\r\n```bash\r\nshieldscan scan --target https://example.com --output report.json\r\n```\r\n\r\nThis performs non-intrusive checks:\r\n- Security header analysis\r\n- Cookie configuration\r\n- CORS policy review\r\n- Basic reconnaissance\r\n\r\n### 2. Active Scan with Consent\r\n\r\nFirst, create a consent file (see `examples/consent_template.txt`):\r\n\r\n```bash\r\n# Edit consent file with authorization details\r\ncp examples/consent_template.txt my_consent.txt\r\nnano my_consent.txt\r\n```\r\n\r\nThen run active scan:\r\n\r\n```bash\r\nshieldscan scan \\\r\n  --target https://authorized-site.com \\\r\n  --mode active \\\r\n  --consent-file my_consent.txt \\\r\n  --output report.md \\\r\n  --format markdown\r\n```\r\n\r\n### 3. Scan Multiple Targets\r\n\r\n```bash\r\n# Create file with URLs (one per line)\r\ncat > targets.txt << EOF\r\nhttps://example.com\r\nhttps://test.example.com\r\nEOF\r\n\r\nshieldscan scan --target-file targets.txt --format all --output results\r\n```\r\n\r\n### 4. Dry Run (Preview)\r\n\r\n```bash\r\nshieldscan scan --target https://example.com --dry-run\r\n```\r\n\r\n## \ud83d\udd27 Usage\r\n\r\n### Command-Line Options\r\n\r\n```\r\nshieldscan scan [OPTIONS]\r\n\r\nTarget Options:\r\n  --target URL              Single target URL\r\n  --target-file FILE        File with URLs (one per line)\r\n\r\nScan Options:\r\n  --mode MODE               Scanning mode: passive (default) or active\r\n  --consent-file FILE       Consent file (required for active mode)\r\n  --throttle FLOAT          Requests per second (default: 1.0)\r\n  --max-depth INT           Maximum crawl depth (default: 2)\r\n\r\nOutput Options:\r\n  --output FILE             Output file path\r\n  --format FORMAT           Output format: json, markdown, html, all\r\n\r\nOther Options:\r\n  --dry-run                 Show planned checks without executing\r\n  --no-logo                 Suppress logo display\r\n  -v, --verbosity LEVEL     Logging verbosity: 0 (warn), 1 (info), 2 (debug)\r\n```\r\n\r\n### Examples\r\n\r\n**Comprehensive scan with all report formats:**\r\n```bash\r\nshieldscan scan \\\r\n  --target https://example.com \\\r\n  --format all \\\r\n  --output comprehensive_report \\\r\n  --throttle 2.0 \\\r\n  --max-depth 3\r\n```\r\n\r\n**Quiet passive scan:**\r\n```bash\r\nshieldscan scan --target https://example.com --verbosity 0 --no-logo\r\n```\r\n\r\n**Active scan with custom rate limit:**\r\n```bash\r\nshieldscan scan \\\r\n  --target https://authorized.com \\\r\n  --mode active \\\r\n  --consent-file consent.txt \\\r\n  --throttle 0.5 \\\r\n  --output detailed_scan.html \\\r\n  --format html\r\n```\r\n\r\n## \ud83d\udccb Consent File Format\r\n\r\nActive mode requires a consent file with the following information:\r\n\r\n```\r\nTARGET: https://example.com\r\nSIGNATURE: John Doe\r\nDATE: 2025-10-29\r\n```\r\n\r\nSee `examples/consent_template.txt` for a complete template.\r\n\r\n## \ud83c\udfd7\ufe0f Architecture\r\n\r\nShieldScan follows a modular design:\r\n\r\n```\r\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502   CLI       \u2502  \u2190 Entry point, argument parsing\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n       \u2502\r\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502  Scanner    \u2502  \u2190 Orchestrates scan workflow\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n       \u2502\r\n       \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n       \u2502              \u2502             \u2502              \u2502\r\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2510\r\n\u2502 HTTP Client \u2502 \u2502 Gatherer \u2502 \u2502 VulnCheck\u2502  \u2502  Reporter  \u2502\r\n\u2502 (Rate Ltd.) \u2502 \u2502 (Recon)  \u2502 \u2502 (Detect) \u2502  \u2502 (Output)   \u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n```\r\n\r\n### Modules\r\n\r\n- **cli.py**: Command-line interface with argparse\r\n- **scanner.py**: Core orchestration engine\r\n- **http_client.py**: HTTP wrapper with rate limiting and retries\r\n- **gather.py**: Reconnaissance (robots.txt, sitemap, crawling)\r\n- **vuln_checks.py**: Vulnerability detection checks\r\n- **reporter.py**: Multi-format report generation\r\n- **utils.py**: Common utilities and helpers\r\n- **logo.py**: ASCII branding\r\n\r\n## \ud83e\uddea Testing\r\n\r\nRun the test suite:\r\n\r\n```bash\r\n# Run all tests\r\npytest\r\n\r\n# With coverage\r\npytest --cov=web_pentest_cli --cov-report=html\r\n\r\n# Run specific test file\r\npytest tests/test_utils.py -v\r\n```\r\n\r\n## \ud83d\udd0c Adding Custom Checks\r\n\r\nShieldScan supports plugin-style vulnerability checks:\r\n\r\n```python\r\nfrom web_pentest_cli.vuln_checks import VulnerabilityCheck, VulnerabilityResult\r\n\r\nclass CustomCheck(VulnerabilityCheck):\r\n    @property\r\n    def check_id(self) -> str:\r\n        return \"CUSTOM-001\"\r\n\r\n    @property\r\n    def check_name(self) -> str:\r\n        return \"My Custom Check\"\r\n\r\n    def check(self, target_url: str, context: dict) -> List[VulnerabilityResult]:\r\n        # Implement your check logic\r\n        results = []\r\n        response = self.client.get(target_url)\r\n\r\n        if response and \"vulnerable_pattern\" in response.text:\r\n            results.append(VulnerabilityResult(\r\n                vuln_id=self.check_id,\r\n                name=\"Custom Vulnerability\",\r\n                severity=\"medium\",\r\n                confidence=\"high\",\r\n                description=\"Description of the issue\",\r\n                evidence=\"Evidence from response\",\r\n                remediation=\"How to fix it\"\r\n            ))\r\n\r\n        return results\r\n```\r\n\r\n## \ud83d\udcca Sample Output\r\n\r\n### Console Summary\r\n```\r\n================================================================================\r\n  SCAN SUMMARY\r\n================================================================================\r\nTarget:     https://example.com\r\nScan ID:    scan_1730193600\r\nDuration:   12.45 seconds\r\nRequests:   23\r\n\r\nTotal Vulnerabilities: 5\r\n\r\nSeverity Breakdown:\r\n  HIGH: 2\r\n  MEDIUM: 2\r\n  LOW: 1\r\n================================================================================\r\n```\r\n\r\n### JSON Report Structure\r\n```json\r\n{\r\n  \"scan_id\": \"scan_1730193600\",\r\n  \"target_url\": \"https://example.com\",\r\n  \"mode\": \"passive\",\r\n  \"vulnerabilities\": [\r\n    {\r\n      \"vuln_id\": \"SEC-HEADERS-001-csp\",\r\n      \"name\": \"Missing Content-Security-Policy Header\",\r\n      \"severity\": \"medium\",\r\n      \"confidence\": \"high\",\r\n      \"description\": \"CSP header is missing\",\r\n      \"evidence\": \"Header 'content-security-policy' not found\",\r\n      \"remediation\": \"Implement CSP to prevent XSS\",\r\n      \"references\": [\"https://owasp.org/...\"]\r\n    }\r\n  ],\r\n  \"statistics\": {\r\n    \"total_vulnerabilities\": 5,\r\n    \"severity_breakdown\": {\"high\": 2, \"medium\": 2, \"low\": 1}\r\n  }\r\n}\r\n```\r\n\r\n## \ud83d\udee0\ufe0f Development\r\n\r\n### Setup Development Environment\r\n\r\n```bash\r\n# Install with dev dependencies\r\npip install -e \".[dev]\"\r\n\r\n# Format code\r\nblack web_pentest_cli/\r\n\r\n# Lint\r\nflake8 web_pentest_cli/\r\n\r\n# Type checking\r\nmypy web_pentest_cli/\r\n```\r\n\r\n### Project Structure\r\n\r\n```\r\nshieldscan/\r\n\u251c\u2500\u2500 web_pentest_cli/\r\n\u2502   \u251c\u2500\u2500 __init__.py\r\n\u2502   \u251c\u2500\u2500 cli.py\r\n\u2502   \u251c\u2500\u2500 scanner.py\r\n\u2502   \u251c\u2500\u2500 http_client.py\r\n\u2502   \u251c\u2500\u2500 gather.py\r\n\u2502   \u251c\u2500\u2500 vuln_checks.py\r\n\u2502   \u251c\u2500\u2500 reporter.py\r\n\u2502   \u251c\u2500\u2500 utils.py\r\n\u2502   \u2514\u2500\u2500 logo.py\r\n\u251c\u2500\u2500 tests/\r\n\u2502   \u251c\u2500\u2500 test_utils.py\r\n\u2502   \u251c\u2500\u2500 test_http_client.py\r\n\u2502   \u2514\u2500\u2500 test_vuln_checks.py\r\n\u251c\u2500\u2500 examples/\r\n\u2502   \u251c\u2500\u2500 consent_template.txt\r\n\u2502   \u2514\u2500\u2500 example_urls.txt\r\n\u251c\u2500\u2500 README.md\r\n\u251c\u2500\u2500 requirements.txt\r\n\u251c\u2500\u2500 setup.py\r\n\u2514\u2500\u2500 pyproject.toml\r\n```\r\n\r\n## \ud83d\udcda References\r\n\r\n- [OWASP Top 10](https://owasp.org/www-project-top-ten/)\r\n- [OWASP Testing Guide](https://owasp.org/www-project-web-security-testing-guide/)\r\n- [OWASP Secure Headers Project](https://owasp.org/www-project-secure-headers/)\r\n- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)\r\n\r\n## \ud83d\udcdd License\r\n\r\nMIT License - see LICENSE file for details.\r\n\r\n## \ud83d\udc68\u200d\ud83d\udcbb Author\r\n\r\n**Dr. [Your Name]**  \r\n\ud83d\udce7 Email: your.email@university.edu  \r\n\ud83c\udfdb\ufe0f Institution: University of Sousse  \r\n\ud83d\udd2c Research: Internet of Vehicles, Security Testing, Traffic Optimization\r\n\r\n## \ud83e\udd1d Contributing\r\n\r\nContributions are welcome! Please:\r\n\r\n1. Fork the repository\r\n2. Create a feature branch\r\n3. Add tests for new functionality\r\n4. Ensure all tests pass\r\n5. Submit a pull request\r\n\r\n## \ud83d\udcde Support\r\n\r\nFor issues, questions, or contributions:\r\n- \ud83d\udc1b Report bugs: [GitHub Issues](https://github.com/yourusername/shieldscan/issues)\r\n- \ud83d\udcac Discussions: [GitHub Discussions](https://github.com/yourusername/shieldscan/discussions)\r\n- \ud83d\udce7 Email: your.email@university.edu\r\n\r\n## \u26a1 Disclaimer\r\n\r\nThis tool is provided for educational and authorized testing purposes only. The authors and contributors:\r\n\r\n- Are not responsible for any misuse or damage caused by this tool\r\n- Do not endorse illegal activities\r\n- Recommend obtaining proper authorization before testing\r\n- Advise consulting legal counsel regarding testing activities\r\n\r\n**Always test responsibly and ethically.**\r\n\r\n---\r\n\r\nMade with \u2764\ufe0f for the security community\r\n\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Professional Web Security Assessment Tool",
    "version": "1.0.0",
    "project_urls": {
        "Homepage": "https://github.com/yourusername/shieldscan"
    },
    "split_keywords": [
        "security",
        " pentesting",
        " web-security",
        " owasp"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7bf16f73992fc48979b918dd81122204999185c845d7b485283810064a4dc899",
                "md5": "46ae0f72b4e7a2d4e9f642633a90ec5e",
                "sha256": "2316dfe6334d48a1b5084b98ced52e0acc4124f7e144d75969af3e2f5ad7d142"
            },
            "downloads": -1,
            "filename": "shieldscan-1.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "46ae0f72b4e7a2d4e9f642633a90ec5e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 33632,
            "upload_time": "2025-10-29T14:54:29",
            "upload_time_iso_8601": "2025-10-29T14:54:29.347966Z",
            "url": "https://files.pythonhosted.org/packages/7b/f1/6f73992fc48979b918dd81122204999185c845d7b485283810064a4dc899/shieldscan-1.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1661e26f744f0537fc3c4c12da7de76965623710140195911d9fed52293128cc",
                "md5": "c0629e0c8170c68f709bb5135fe89d73",
                "sha256": "f5a10d6665b4f3944c1c41aa66de1b654bff8328eb679a6aa0f88629a7b1cfc1"
            },
            "downloads": -1,
            "filename": "shieldscan-1.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "c0629e0c8170c68f709bb5135fe89d73",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 30074,
            "upload_time": "2025-10-29T14:54:31",
            "upload_time_iso_8601": "2025-10-29T14:54:31.386847Z",
            "url": "https://files.pythonhosted.org/packages/16/61/e26f744f0537fc3c4c12da7de76965623710140195911d9fed52293128cc/shieldscan-1.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-29 14:54:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yourusername",
    "github_project": "shieldscan",
    "github_not_found": true,
    "lcname": "shieldscan"
}
        
Elapsed time: 2.84047s