Metadata-Version: 2.4
Name: s2n
Version: 0.2.0
Summary: Plugin-based web vulnerabillity scanner library
Author-email: 503+1 <imapversion4@gmail.com>
Project-URL: Homepage, https://github.com/504s2n/s2n
Project-URL: Repository, https://github.com/504s2n/s2n
Project-URL: Issues, https://github.com/504s2n/s2n/issues
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0
Requires-Dist: beautifulsoup4>=4.12
Requires-Dist: selenium>=4.20
Requires-Dist: webdriver-manager
Requires-Dist: click>=8.0
Requires-Dist: rich>=13.0
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"

# S2N — Plugin-based Web Vulnerability Scanner

<pre>
 (`-').->        <-. (`-')_
 ( OO)_             \( OO) )
(_)--\_)  .----. ,--./ ,--/
/    _ / \_,-.  ||   \ |  |
\_..`--.    .' .'|  . '|  |)
.-._)   \ .'  /_ |  |\    |
\       /|      ||  | \   |
 `-----' `------'`--'  `--'
</pre>

> A lightweight, plugin-driven web vulnerability scanner library.
> Core data types and interfaces are defined in `s2n.s2nscanner.interfaces`.
> More detailed type Documentation is available in [`interfaces.en.md`](/docs/interfaces.en.md).

---

- [PyPi s2n](https://pypi.org/project/s2n/)
- [Korean Documentation](./README.ko.md)

---

## Quick install

### CLI usage

```bash
s2n scan \
  --url http://target.com \
  --plugin sql --plugin xss \
  --auth basic \
  --username admin \
  --password pass \
  --output results.json \
  --verbose
```

### Python usage

```python
from s2n import Scanner, ScanConfig, PluginConfig, AuthConfig
from s2n.interfaces import Severity, AuthType

# Create ScanConfig
config = ScanConfig(
    target_url="http://target.com",
    scanner_config=ScannerConfig(crawl_depth=3),
    plugin_configs={
        "sql": PluginConfig(
            enabled=True,
            max_payloads=50
        )
    },
    auth_config=AuthConfig(
        auth_type=AuthType.BASIC,
        username="admin",
        password="pass"
    )
)

# Execute Scan with ScanConfig parameter
scanner = Scanner(config)
report = scanner.scan()

# 결과 처리
print(f"[RESULT]: {report.summary.total_vulnerabilities}개")
for result in report.plugin_results:
    for finding in result.findings:
        if finding.severity in [Severity.CRITICAL, Severity.HIGH]:
            print(f"[{finding.severity}] {finding.title}")

```

---

## Key type references

### Documentation

- Data type reference: `interfaces.en.md`
- Source: `interfaces.py`

### Core types and data models:

- `s2n.s2nscanner.interfaces.ScanConfig`
- `s2n.s2nscanner.interfaces.PluginConfig`
- `s2n.s2nscanner.interfaces.ScannerConfig`

### Results & reporting:

- `s2n.s2nscanner.interfaces.ScanReport`
- `s2n.s2nscanner.interfaces.Finding`

### Enums:

- `s2n.s2nscanner.interfaces.Severity`
- `s2n.s2nscanner.interfaces.PluginStatus`

## Features

Plugin architecture for modular vulnerability checks Structured data models for requests,
results and outputs Multiple output formats (`JSON`, `HTML`, `console`)
Configurable scanner behavior and per-plugin settings.

---

## LICENSE

---

## Contributing

Follow the project coding style and add tests for new features.  
Update type docs in interfaces.en.md when interfaces change.

---
