patator
Brute-forceur modulaire multi-usage. Prend en charge SSH, FTP, HTTP, SMB, SMTP, LDAP, DNS, MySQL, Oracle et plus, avec un contrôle fin sur les requêtes et l'analyse des réponses. Modular multi-purpose brute-forcer. Supports SSH, FTP, HTTP, SMB, SMTP, LDAP, DNS, MySQL, Oracle, and more — with fine-grained control over requests and response analysis.
↗ https://github.com/lanjelot/patatorOverview
patator is a multi-threaded brute-forcing tool with modules for dozens of protocols. Unlike Hydra or Medusa, it offers very fine-grained control — you can specify exactly what constitutes a success, failure, or ignore condition based on response content, status codes, or timing. Good for unusual services and custom auth mechanisms.
Basic Usage
List all available modules
patator --help
SSH brute-force
patator ssh_login host=10.10.10.1 user=root password=FILE0 0=/usr/share/wordlists/rockyou.txt
FTP brute-force
patator ftp_login host=10.10.10.1 user=admin password=FILE0 0=passwords.txt
HTTP Basic Auth
patator http_fuzz url=http://10.10.10.1/admin user=admin password=FILE0 0=passwords.txt \
-x ignore:code=401
HTTP Brute-Force
HTTP form-based login
patator http_fuzz url=http://10.10.10.1/login \
method=POST \
body='username=admin&password=FILE0' \
0=passwords.txt \
-x ignore:fgrep='Invalid password'
HTTP GET parameter brute-force
patator http_fuzz url='http://10.10.10.1/page?id=FILE0' \
0=/usr/share/wordlists/numbers.txt \
-x ignore:code=404
With cookies (authenticated session)
patator http_fuzz url=http://10.10.10.1/api/admin \
header='Cookie: session=abc123' \
body='action=FILE0' \
0=actions.txt
Service-Specific Examples
SMB login
patator smb_login host=10.10.10.1 user=FILE0 password=P@ssw0rd \
0=/usr/share/wordlists/users.txt \
-x ignore:fgrep='STATUS_LOGON_FAILURE'
SMTP user enumeration
patator smtp_vrfy host=10.10.10.1 user=FILE0 0=users.txt \
-x ignore:fgrep='user unknown'
LDAP brute-force
patator ldap_login host=10.10.10.1 binddn='CN=FILE0,DC=domain,DC=local' \
bindpw=FILE1 0=users.txt 1=passwords.txt
MySQL login
patator mysql_login host=10.10.10.1 user=root password=FILE0 0=passwords.txt
DNS brute-force (subdomain)
patator dns_forward name=FILE0.example.com qtype=A 0=subdomains.txt \
-x ignore:code=NXDOMAIN
Ignore/Accept Conditions
Ignore responses containing a string
-x ignore:fgrep='Invalid'
# Ignore specific HTTP status codes
-x ignore:code=401
-x ignore:code=403
Ignore by response size
-x ignore:size=0-500
Accept only specific status codes
-x accept:code=200
Ignore by timing (slow = valid cred often)
-x ignore:time=0-5
Combine conditions
-x ignore:code=401,fgrep='Login failed'
Threading and Rate Control
Number of threads
patator ssh_login host=10.10.10.1 user=root password=FILE0 0=pass.txt -t 4
Rate limiting (requests per second)
patator http_fuzz url=http://target.com/ body='user=admin&pass=FILE0' \
0=passwords.txt --rate-limit=10
Delay between requests (ms)
patator http_fuzz url=http://target.com/ ... --delay=500
Tips
- Define ignore conditions precisely — otherwise you’ll miss valid creds or get false positives
- Test one request manually first, then identify the failure pattern for
-x ignore: - Use
--rate-limitfor services with lockout policies to avoid account lockouts - patator is verbose by default — pipe through
grep "FOUND"to see just successes
Available Modules
ssh_login SSH authentication
ftp_login FTP authentication
http_fuzz HTTP/HTTPS requests
smb_login SMB/Windows authentication
smtp_login SMTP login
smtp_vrfy SMTP user enumeration
ldap_login LDAP authentication
mysql_login MySQL authentication
mssql_login MS SQL Server authentication
oracle_login Oracle database authentication
pgsql_login PostgreSQL authentication
vnc_login VNC authentication
dns_forward DNS forward lookup
dns_reverse DNS reverse lookup
snmp_login SNMP community strings
imap_login IMAP authentication
pop_login POP3 authentication
rdp_gateway RDP Gateway authentication
Vue d’ensemble
patator est un outil de brute-force multi-thread avec des modules pour des dizaines de protocoles. Contrairement à Hydra ou Medusa, il offre un contrôle très fin : on peut spécifier exactement ce qui constitue un succès, un échec ou une condition à ignorer, selon le contenu de la réponse, les codes de statut ou le timing. Pratique pour les services inhabituels et les mécanismes d’authentification personnalisés.
Utilisation de base
# Lister tous les modules disponibles
patator --help
# Brute-force SSH
patator ssh_login host=10.10.10.1 user=root password=FILE0 0=/usr/share/wordlists/rockyou.txt
# Brute-force FTP
patator ftp_login host=10.10.10.1 user=admin password=FILE0 0=passwords.txt
# Authentification HTTP Basic
patator http_fuzz url=http://10.10.10.1/admin user=admin password=FILE0 0=passwords.txt \
-x ignore:code=401
Brute-Force HTTP
# Connexion via un formulaire HTTP
patator http_fuzz url=http://10.10.10.1/login \
method=POST \
body='username=admin&password=FILE0' \
0=passwords.txt \
-x ignore:fgrep='Invalid password'
# Brute-force d'un paramètre GET HTTP
patator http_fuzz url='http://10.10.10.1/page?id=FILE0' \
0=/usr/share/wordlists/numbers.txt \
-x ignore:code=404
# Avec cookies (session authentifiée)
patator http_fuzz url=http://10.10.10.1/api/admin \
header='Cookie: session=abc123' \
body='action=FILE0' \
0=actions.txt
Exemples par service
# Connexion SMB
patator smb_login host=10.10.10.1 user=FILE0 password=P@ssw0rd \
0=/usr/share/wordlists/users.txt \
-x ignore:fgrep='STATUS_LOGON_FAILURE'
# Énumération d'utilisateurs SMTP
patator smtp_vrfy host=10.10.10.1 user=FILE0 0=users.txt \
-x ignore:fgrep='user unknown'
# Brute-force LDAP
patator ldap_login host=10.10.10.1 binddn='CN=FILE0,DC=domain,DC=local' \
bindpw=FILE1 0=users.txt 1=passwords.txt
# Connexion MySQL
patator mysql_login host=10.10.10.1 user=root password=FILE0 0=passwords.txt
# Brute-force DNS (sous-domaine)
patator dns_forward name=FILE0.example.com qtype=A 0=subdomains.txt \
-x ignore:code=NXDOMAIN
Conditions Ignore/Accept
# Ignorer les réponses contenant une chaîne donnée
-x ignore:fgrep='Invalid'
# Ignorer des codes de statut HTTP spécifiques
-x ignore:code=401
-x ignore:code=403
# Ignorer par taille de réponse
-x ignore:size=0-500
# Accepter uniquement des codes de statut spécifiques
-x accept:code=200
# Ignorer par timing (une réponse lente indique souvent un identifiant valide)
-x ignore:time=0-5
# Combiner plusieurs conditions
-x ignore:code=401,fgrep='Login failed'
Threading et contrôle du débit
# Nombre de threads
patator ssh_login host=10.10.10.1 user=root password=FILE0 0=pass.txt -t 4
# Limitation de débit (requêtes par seconde)
patator http_fuzz url=http://target.com/ body='user=admin&pass=FILE0' \
0=passwords.txt --rate-limit=10
# Délai entre les requêtes (ms)
patator http_fuzz url=http://target.com/ ... --delay=500
Conseils
- Définir les conditions ignore précisément, sinon on rate des identifiants valides ou on obtient des faux positifs
- Tester une requête manuellement d’abord, puis identifier le motif d’échec pour
-x ignore: - Utiliser
--rate-limitpour les services avec des politiques de verrouillage, afin d’éviter les blocages de compte - patator est verbeux par défaut : le passer dans
grep "FOUND"pour ne voir que les succès
Modules disponibles
ssh_login SSH authentication
ftp_login FTP authentication
http_fuzz HTTP/HTTPS requests
smb_login SMB/Windows authentication
smtp_login SMTP login
smtp_vrfy SMTP user enumeration
ldap_login LDAP authentication
mysql_login MySQL authentication
mssql_login MS SQL Server authentication
oracle_login Oracle database authentication
pgsql_login PostgreSQL authentication
vnc_login VNC authentication
dns_forward DNS forward lookup
dns_reverse DNS reverse lookup
snmp_login SNMP community strings
imap_login IMAP authentication
pop_login POP3 authentication
rdp_gateway RDP Gateway authentication