stateDiagram-v2
state "<pre><code>
.-') .-') _
( OO ). ( OO ) )
(_)---\_) .-----. ,--./ ,--,'
/ _ | / ,-. \| \ | |\
\ :` `. '-' | || \| | )
'..`''.) .' / | . |/
.-._) \ .' /__ | |\ |
\ /| || | \ |
`-----' `-------'`--' `--'
</pre></code>" as logo
style logo color: #FFF, fill:#0022FF
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 ininterfaces.en.md.
s2n scan \
--url http://target.com \
--plugin sql --plugin xss \
--auth basic \
--username admin \
--password pass \
--output results.json \
--verbosefrom 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}")- Data type reference:
interfaces.en.md - Source:
interfaces.py
s2n.s2nscanner.interfaces.ScanConfigs2n.s2nscanner.interfaces.PluginConfigs2n.s2nscanner.interfaces.ScannerConfig
s2n.s2nscanner.interfaces.ScanReports2n.s2nscanner.interfaces.Finding
s2n.s2nscanner.interfaces.Severitys2n.s2nscanner.interfaces.PluginStatus
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.
Follow the project coding style and add tests for new features.
Update type docs in interfaces.en.md when interfaces change.