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/patator

Overview

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-limit for 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-limit pour 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