rapids -- credential spraying engine

Rapids

Modular credential spraying tool
for authorized security testing

28
Protocols
37
Modules
0
External Deps

Point. Spray. Verify.

Give it targets and credentials. It scans ports, detects services, discovers domains, and tests authentication across everything it finds.

Native Libraries

Every protocol uses a native Python library — impacket, paramiko, pymysql, redis-py. No shelling out to CLI tools. Faster execution, richer errors.

Auto Discovery

Automatic nmap port and service scanning on all targets. Detected ports are mapped to the correct module. Domains discovered via SMB.

Adaptive Skipping

3 consecutive timeouts skip that endpoint. 5 total timeouts on a host skip the entire host. No wasted time on dead targets.

Pass-the-Hash

NT hash support across SMB, RDP, WinRM, MSSQL, LDAP, and Kerberos. Mix passwords and hashes freely in credential files.

Proof of Access

--verify runs post-auth commands — list SMB shares, whoami over WinRM, query database versions, fetch Redis info.

Smart Timeouts

Per-service timeout multipliers. RDP gets 3x, WinRM/Kerberos get 2x the base timeout. Slow protocols get enough time without penalizing fast ones.

Dual Module System

Native library modules plus optional NetExec wrappers. Use --nxc to swap. Both share the same interface.

Catppuccin Theme

Full Mocha palette — gradient ASCII banner, color-coded status, Rich tables with semantic styling. Your terminal never looked better.

28 protocols. One command.

Every module is a native Python implementation. No external tool dependencies for core functionality.

rapids --dry-run -- supported services
SMB 445
SSH 22
RDP 3389
WinRM 5985
Evil-WinRM 5985
WMI 135
Kerberos 88
LDAP 389
MSSQL 1433
MySQL 3306
PostgreSQL 5432
Oracle 1521
Redis 6379
MongoDB 27017
Cassandra 9042
CouchDB 5984
Elasticsearch 9200
Memcached 11211
HTTP Basic 80
FTP 21
Telnet 23
VNC 5900
SNMP 161
MQTT 1883
IPMI 623
SMTP 587
IMAP 993
POP3 995
Authentication Databases Network Services Mail

Modular by design.

Each protocol is an independent module with a two-method interface. The engine handles concurrency, adaptive skipping, and result collection.

system architecture
01

Auto-Registering Modules

ModuleRegistry discovers modules via pkgutil.iter_modules(). Drop a file in modules/ and it's available instantly. No wiring needed.

02

Concurrent Spray Engine

ThreadPoolExecutor with configurable concurrency. Per-service timeout multipliers, hard timeout safety nets, and adaptive endpoint skipping.

03

Two-Method Interface

Every module implements test_credential() for authentication and optionally verify_access() for proof-of-access. Clean separation of concerns.

04

Intelligent Parsing

Nmap XML import, CIDR expansion, port-to-service mapping, automatic domain discovery via SMB, and mixed password/hash credential files.


Python 3.10+ Click Rich Impacket Paramiko pywinrm ldap3 pymysql psycopg2 redis-py

Spray everything. See everything.

From single targets to entire subnets. Passwords, hashes, or mixed credential files. Rapids adapts to what you throw at it.

Basic Spray
$ rapids -t 192.168.1.0/24 -u admin -p 'Pass123'
Credential File + Verify
$ rapids -t 10.10.10.50 -C creds.txt --verify
Specific Services
$ rapids -t 10.0.0.5 -C creds.txt -s smb,ssh,rdp
Pass-the-Hash
$ rapids -t 10.10.10.50 -u admin -p ':aad3b435...'
NetExec Modules
$ rapids -t 10.0.0.5 -u admin -p pass --nxc
Dry Run Preview
$ rapids -t 192.168.1.0/24 -C creds.txt --dry-run

Running in 30 seconds

Clone, install, spray. No build step, no configuration files, no Docker.

bash
# Clone and install
$ git clone https://github.com/Real-Fruit-Snacks/Rapids.git
$ cd Rapids
$ pipx install -e .
# Start spraying
$ rapids -t 192.168.1.0/24 -u admin -p 'Password123'
# Or run directly without installing
$ pip install -e .
$ python rapids.py -t 10.10.10.5 -u admin -p pass

Rapids auto-scans targets with nmap to discover open ports and services, then maps each port to the correct protocol module. No manual service specification needed.

Domains are discovered automatically via SMB on hosts with port 445 open. Use -d to set a domain manually, or --no-auto-domain to disable discovery.

Use --verify to execute proof-of-access commands after each successful login — list shares, run whoami, query database versions.