spray
Thespray command performs password spraying across multiple protocols. It takes a credential (username and password or hash) and tests it against a list of target servers, supporting lockout awareness and configurable threading.
Usage
Persistent Flags
These flags apply to allspray subcommands:
| Flag | Short | Description |
|---|---|---|
--db-users | — | Spray using users without credentials from the database |
--dcs | — | Load domain controllers from the database as targets |
--stop-on-success | -S | Stop when a successful authentication is found |
--stop-on-lockout | -L | Stop when an account lockout is detected |
--user-as-pass | -U | Use the username as the password for each account |
--threads | -T | Number of concurrent spray threads (default: 10) |
Subcommands
spray kerberos
Spray credentials via the Kerberos protocol (AS-REQ). This is the most evasion-friendly method as it does not touch LDAP or SMB directly.
spray kerberos pwd
Kerberos password spraying — sends AS-REQs and checks for valid authentication responses.
| Flag | Description |
|---|---|
--safe | Safe mode — abort spray if any user lockout is detected |
--downgrade | Force downgraded encryption (arcfour-hmac-md5 / RC4) |
spray kerberos enum
Kerberos user enumeration — determines whether usernames exist by analyzing AS-REQ error responses without attempting to authenticate. This does not cause lockouts.
| Flag | Description |
|---|---|
--safe | Safe mode |
--downgrade | Force RC4 encryption |
spray smb
Password spraying via SMB authentication (port 445).
| Flag | Description |
|---|---|
--local | Use local authentication — do not append domain prefix |
spray ldap
Password spraying via LDAP bind.
spray ssh
Password spraying via SSH.
spray ftp (planned)
FTP password spraying. Not yet implemented.
spray mssql (planned)
MSSQL password spraying. Not yet implemented.
spray winrm (planned)
WinRM password spraying. Not yet implemented.
spray tftp (planned)
TFTP spraying. Not yet implemented.
Target Specification
Targets can be specified in multiple ways:Spray Results Storage
All spray operations are recorded in thesprays table in SQLite:
| Column | Description |
|---|---|
| Target | Server that was sprayed |
| Protocol | Protocol used |
| Username | Account sprayed |
| Status | Success / Failure / Locked |
| Timestamp | When the attempt was made |
credentials table.
Lockout Safety
R4t provides multiple layers of lockout protection:| Feature | Flag | Behavior |
|---|---|---|
| Stop on lockout | --stop-on-lockout / -L | Halt all spraying when any lockout is detected |
| Safe mode (Kerberos) | --safe | Abort Kerberos spray if lockout detected |
| Stop on success | --stop-on-success / -S | Stop after first valid authentication |
| Jitter | --jitter (global) | Add random delay between attempts |
--stop-on-lockout and check the domain password policy via r4t ldap get users before spraying.

