Usage
vulcn store [username] [password] [options]
Arguments
| Argument | Description | Required |
|---|
username | Username for form-based authentication | No* |
password | Password for form-based authentication | No* |
* Required for form-based auth. Omit both for header-based auth.
Options
| Option | Description | Default |
|---|
--header <header> | Header auth (e.g., "Authorization: Bearer x") | - |
--passphrase <passphrase> | Encryption passphrase (or set VULCN_KEY) | Interactive prompt |
--login-url <url> | Custom login URL (overrides .vulcn.yml) | from config |
--user-field <selector> | CSS selector for username field | Auto-detected |
--pass-field <selector> | CSS selector for password field | Auto-detected |
Description
The store command securely encrypts authentication credentials using AES-256-GCM with PBKDF2 key derivation (600,000 iterations). The encrypted file is saved to auth/state.enc next to .vulcn.yml, and is automatically discovered by vulcn crawl and vulcn run.
Encryption Details
- Algorithm: AES-256-GCM (authenticated encryption)
- Key Derivation: PBKDF2 with SHA-512, 600,000 iterations
- Salt: 32 bytes, randomly generated per encryption
- IV: 16 bytes, randomly generated per encryption
- Auth Tag: 16 bytes (GCM integrity verification)
The passphrase is resolved in this order:
--passphrase flag
- Interactive terminal prompt (hidden input)
VULCN_KEY environment variable
Examples
vulcn store admin password
When used with vulcn crawl or vulcn run, Vulcn will:
- Navigate to the login URL (from
.vulcn.yml auth.loginUrl or --login-url)
- Auto-detect username/password fields
- Fill the form and submit
- Capture browser cookies and storage state
vulcn store admin password --login-url https://app.example.com/login
vulcn store --header "Authorization: Bearer eyJhbG..."
vulcn store --header "X-API-Key: sk_live_abc123"
Using Environment Variable
export VULCN_KEY=my-secret-passphrase
vulcn store admin password
Set VULCN_KEY in your CI/CD environment to avoid interactive prompts during
automated scans.
Output
Auth type: form
Username: admin
Password: ********
✅ Credentials saved to auth/state.enc
⚠️ Add auth/ to .gitignore
Auth Configuration in .vulcn.yml
You can also configure authentication directly in .vulcn.yml:
# .vulcn.yml
auth:
strategy: form
loginUrl: https://app.example.com/login
userSelector: "#email"
passSelector: "#password"
When present, vulcn store will use these values as defaults (CLI flags still override).
Security Best Practices
Always add auth/ to your .gitignore file to prevent accidentally
committing encrypted credentials to version control.
echo "auth/" >> .gitignore
- Never commit encrypted credential files to version control
- Use environment variables (
VULCN_KEY) in CI/CD instead of --passphrase
- Rotate credentials regularly — re-run
vulcn store to update
- Use unique passphrases per project
Workflow
The typical authenticated scanning workflow:
# 1. Store credentials
vulcn store admin password
# 2. Crawl with authentication (auto-discovered from auth/state.enc)
vulcn crawl
# 3. Run scans with authentication (auto-discovered)
vulcn run -p xss sqli -r html
No --creds flag is needed. Auth is automatically discovered from
auth/state.enc next to .vulcn.yml.
See Also