Compare commits

...

170 Commits
0.5 ... master

Author SHA1 Message Date
lanjelot 20e800adb4
Fix #205: pin FreeRDP version 2.9.0 5 months ago
lanjelot 204a12a789
Release v1.0 8 months ago
lanjelot f5d660f614
Fix #198 8 months ago
lanjelot 85fc30104e
Fix #192 #196 8 months ago
lanjelot 97a694f17d
Merge pull request #186 from gblomqvist/master
Write XML ending to correct file when using --xml
8 months ago
lanjelot 3190a428a0
Merge pull request #199 from laxa/add_ed25519_support
Add ed25519 ssh support
8 months ago
laxa c783c8b63f Add ed25519 ssh support 9 months ago
Gustaf Blomqvist 5adfad0eb9
Write XML ending to correct file when using --xml
Previously when using --xml=FILE the beginning of the XML file would be
written to FILE, while its ending would either (1) not be written at all
(no -l/-L option), or (2) be written to RESULTS.xml in the directory
specified using -l/-L. This patch ensures that the ending of the XML
file is always written to the correct file.
2 years ago
lanjelot 46908228cc
Fix #183 2 years ago
lanjelot b97f8b2d63
Merge pull request #176 from caribpa/http-fuzz-resolve-fix
Only set pycurl RESOLVE opt if resolve flag is set and not empty
2 years ago
Carlos Ibáñez 5072a565f0 Only set pycurl RESOLVE opt if resolve flag is set and not empty 2 years ago
Christian Clauss b5ed210b21
Fix typos discovered by codespell 2 years ago
lanjelot 8d00e46a20
Merge pull request #165 from cclauss/patch-1
raw_input() was removed from Python on 1/1/2020
2 years ago
lanjelot a93ae7a252
Fix #172 2 years ago
lanjelot c112a2aa1d
Fix #156 2 years ago
Christian Clauss 72efc0b101
raw_input() was removed from Python on 1/1/2020 3 years ago
lanjelot e48316728f
Fix #162 3 years ago
lanjelot 29511c911a
Fix tabs in README 3 years ago
lanjelot b8c028757f
Merge pull request #157 from Zamanry/master
Fix IKEv1 transforms to meet vendor definitions
3 years ago
lanjelot 23d0cfe7d2
Fix #158 3 years ago
lanjelot 487109a4ce
Fix Dockerfile 3 years ago
Lucas Hennessy 54e09bc5bb
Fixed comma/bracket in IKE encryption 3 years ago
Lucas Hennessy 59eb8fa6ff
Fixed IKEv1 port variable and enabled enc. ciphers 3 years ago
zamanry c4c8a065d6 Corrected & added IKEv1 transforms 3 years ago
lanjelot 5947f5f391
Merge pull request #154 from fvcr/master
Switched from pycrypto to pycryptodomex
3 years ago
lanjelot 642a6f4c7c Add script to build and push docker image to dockerhub 3 years ago
Francisco Vilmar Cardoso Ruviaro f3983f33ab
Switched from pycrypto to pycryptodomex 3 years ago
lanjelot 452819f807 Update documentation 3 years ago
lanjelot d96663bc3d New skip action 3 years ago
lanjelot 2692d6a5c9 Add docker usage to README 4 years ago
lanjelot 4b5d958184 Merge branch 'fix-urlencode' 4 years ago
lanjelot fed68fd393 Fix http_fuzz auto_urlencode 4 years ago
lanjelot 6cdc51d73f Fix #149 4 years ago
lanjelot 0d7661bbb5 Release v0.9 4 years ago
lanjelot 288dac8bf1 Add SNMP tests 4 years ago
lanjelot eb7ac4b4ba Fix #138 to add dcom_login module 4 years ago
lanjelot da3d9751d7 Add docker-compose and fix bugs 4 years ago
lanjelot 902c650e04 Fixes #105 4 years ago
lanjelot 25fecf113e Fixes #106 4 years ago
lanjelot 6d29448c89 Merge branch 'haxxinen-patch-2' 4 years ago
lanjelot 74545283a1 Fixes #140 and #141 4 years ago
haxxinen 2a6744a551
Python3 support for pysqlcipher. 4 years ago
lanjelot 2a23299f0b Fixes #134 4 years ago
lanjelot b6316de22a Fixes #132 4 years ago
lanjelot 13d7bf7981 Fixes #74 typo 4 years ago
lanjelot fd84a310f1 Fixes #74 4 years ago
lanjelot b25e85d0be Fix file line count function 4 years ago
lanjelot 2b78b342fc Fixes #53 somewhat 4 years ago
lanjelot 1303350893 New --groups option (fixes #124) 4 years ago
lanjelot 426c2574e5 Fixes #128 4 years ago
lanjelot 704dab811f Release v0.8 4 years ago
lanjelot 30abee9a36 Update versions 4 years ago
lanjelot 98bd95bd5e Switch to bionic64 4 years ago
lanjelot f5b161a389 Fix Python3 compat 5 years ago
lanjelot e975529cea Fixes #107 5 years ago
lanjelot a92c06f0d0 Fixes #89 5 years ago
lanjelot 94cdfb19bb Fixes #27 5 years ago
lanjelot 22ba733795 Fixes #103 and more 5 years ago
lanjelot 1732fbbae7 Fixes #118 5 years ago
lanjelot 7751130338 Merge branch 'option_save_output_only' 5 years ago
lanjelot 3135ea1666 Fixes #120 5 years ago
lanjelot e539ab5271 Fixes #120 5 years ago
lanjelot 95ffe4300b Merge commit '03fdb3c' 5 years ago
lanjelot 03fdb3cce0 Add ssl option to tcp_fuzz 5 years ago
lanjelot a1db6bf842 Add pathasis option to http_fuzz 5 years ago
MrTchuss 748bb90eaf [HTTP_FUZZ] cURL path-as-is support in command-line 5 years ago
ines 988d211014 adding port in example command 5 years ago
ines 3c72f68554 add ssl support for TCP_fuzz 5 years ago
lanjelot 22e84d9c07 Fixes #117 5 years ago
lanjelot 53ace4f7e7 Fixes #116 5 years ago
lanjelot 13eadce953 Merge branch 'rdp_gateway' 6 years ago
lanjelot 1ca6a41f77 Fixes #67 6 years ago
lanjelot 49b541d203 Work in progress for #67 6 years ago
lanjelot 7fd56f0fa2 Merge branch 'donate' 6 years ago
lanjelot 28be940aa2 Add donate link and fix email typo 6 years ago
lanjelot 4d7ebf4334 Release v0.7 7 years ago
lanjelot 6227e28f28 Add pypi and vagrant files 7 years ago
lanjelot 32c6963575 Moar python3 compat 7 years ago
lanjelot 9f377357e4 Fixes #34 #36 #66 #71 7 years ago
lanjelot f82ccd307b Fixes #80 7 years ago
lanjelot a903eeb191
Add LICENSE 7 years ago
lanjelot ec605efaef Merge pull request #70 from cbastienbaron/patch-1
Update README.md
7 years ago
bastien b2384baaa0 Update README.md
missing dep
7 years ago
lanjelot b4fb10ae6b New sqlcipher_pass module 7 years ago
lanjelot 5c224380c5 Add more Windows info 7 years ago
lanjelot 02783fb3d0 Add raw_request option to http_fuzz #61 7 years ago
lanjelot f7a8977493 Merge pull request #64 from rdubourguais/master
Add SOCKS support and resolve option to http_fuzz
7 years ago
lanjelot 5af1f397c2 Polishing #64 7 years ago
user aa232dd7e6 SOCKS support and "resolve" option in http_fuzz
This commit brings the SOCKS support to the http_fuzz module and the
"resolve" parameter that prevent many dns resolution if you already
know it (more stylish than overriding the "Host" header :])
7 years ago
lanjelot cbf7be1d12 Fix xml output 7 years ago
lanjelot c9656b5ea6 Merge pull request #59 from g0tmi1k/README
Cleaned up the README
7 years ago
g0tmi1k 7dee459c8b Cleaned up the README 7 years ago
lanjelot 025dc572b0 Fixes #36 7 years ago
lanjelot 8fdf6ac3ca Fixes #18 (hopefully :) 7 years ago
lanjelot 116040eb8b Fixes #39 7 years ago
lanjelot 70335cafe2 Fixes #23 7 years ago
lanjelot 7004b26c98 fixed ajp_fuzz response 8 years ago
lanjelot c8d9d62ccf fixed module order 8 years ago
lanjelot 2877fb31cf fixed ajp_fuzz module 8 years ago
lanjelot 72939bd61b Merge pull request #51 from hypn0s/master
Added AJP fuzzing support
8 years ago
Julien Legras bc7940179d Added AJP fuzzing support 8 years ago
lanjelot 96eb9f9604 added checks on FILE and RANGE keywords 8 years ago
lanjelot 3b069a347b Merge pull request #44 from ShiftCore/master
fix quit action
8 years ago
Julien e1edfcbfe2 fix quit action
the 'quit' action was not considered if the 'retry' one was set. This could lead to infinite loops if you define --max-retries=-1.
8 years ago
lanjelot 142d48c099 added maxsizes on queues and escaping non printable chars 8 years ago
lanjelot f544d1b66b updated youtube link 8 years ago
lanjelot 1a9f65e379 Merge pull request #29 from g0tmi1k/before_header
Add before_header feature (able to set custom header in before_url request)
9 years ago
g0tmi1k 5885879bb8 Add before_header feature
This allows to set a custom header in the before_urls request
9 years ago
g0tmi1k 0a0bf32e1f Remove trailing spaces 9 years ago
lanjelot d1dd6c49b0 Merge branch 'nico' adding more info to XML output 9 years ago
lanjelot a7f4a4fb55 added rdp_login module (calls xfreerdp) 9 years ago
lanjelot ca6ab7b5fa Merge pull request #22 from ValdikSS/master
Always use Python2
9 years ago
ValdikSS 983cb55515 Always use Python2 9 years ago
lanjelot e918293ca3 Merge pull request #21 from ShiftCore/master
Update for recent vnc (tested on ultraVNC P4_6_3)
9 years ago
Julien a6eefaaa44 Update for recent vnc (tested on ultraVNC P4_6_3) 9 years ago
lanjelot 0d239d36d0 fixed 2 minor bugs in smtp_login and ftp_login w/tls (thanks Julien) 9 years ago
lanjelot 0b2ad0dc5e match more than one code in -x with a regex 9 years ago
lanjelot f6de99e33e added option --allow-ignore-failures 9 years ago
lanjelot ec04f6327e add even more info to xml 9 years ago
lanjelot 9494723c3d adding more info to xml output 9 years ago
lanjelot 16b7ad71e7 fixed usage bugs 9 years ago
lanjelot 37684ffa13 fixed line breaks in README 9 years ago
lanjelot d830355821 added support for PyInstaller on Windows 9 years ago
lanjelot 6020420592 fixed bug in smb_login 9 years ago
lanjelot 3e79373741 updated dependencies versions 9 years ago
lanjelot 308c7f70f3 added option to ike_enum to send vendor IDs 9 years ago
lanjelot e78a0cccd2 updated impacket version required for smb_* modules 9 years ago
lanjelot 63c4e6deab merged awesome contribs from @asolino thanks mate! 9 years ago
asolino fccc584098 Support DCERPC.V5 library and SMB2 for smb_login and smb_lookupsid modules 9 years ago
asolino e6b7be52f7 Fixes on_windows() method when running under OSX
on_windows() checks platform.system().lower() == 'win'
However, under OSX the returned string is 'Darwin', matching 'win' ;)
According to https://docs.python.org/2/library/platform.html,
for Windows systems it should return 'Windows'.

I just changed the comparison against 'Win' w/o calling lower().
Hopefully it works well on all Windows.
It does work well on OSX :P
9 years ago
lanjelot b08d5357dc support for Windows 9 years ago
lanjelot 3dff78d88c fixed bug where producer would exit prematurely 9 years ago
lanjelot 641ea8f563 Merge pull request #11 from DanMcInerney/master
snmp typo
9 years ago
Dan McInerney 3e38a21dda snmp typo 9 years ago
lanjelot 378d036c0a fixed typo 9 years ago
lanjelot 3824936059 updated module list 9 years ago
lanjelot f0a03d7113 new ike_enum module 9 years ago
lanjelot 5c3cb0ac3f updated examples 9 years ago
lanjelot 2b0d81f35d forgot to comment out debug line 9 years ago
lanjelot ad3871eae7 switched to multiprocesses (instead of threads) to have the new --timeout option work with signals 9 years ago
lanjelot 32f7feebac defined a NullHandler for python 2.6 9 years ago
lanjelot c37ff75fa7 added keyfile option to ssh_login 10 years ago
lanjelot 576be76d99 added service_name option to oracle_login module 10 years ago
lanjelot 5a140c1501 fixed bug with RANGE and PROG keywords where the generators were not restartable 10 years ago
lanjelot e155a2d0f5 updated phpmyadmin example in README 10 years ago
lanjelot 7ccbc20371 updated doc 10 years ago
lanjelot d09d1176aa added option to ssh_login to automatically fallback to keyboard-interactive auth 10 years ago
lanjelot b4692e0805 added README.md 10 years ago
lanjelot baa9b42f17 released v0.6 10 years ago
lanjelot fd0346bfe8 pad hex range 10 years ago
lanjelot ece1343ccd added auto_urlencode option to http_fuzz 10 years ago
lanjelot 2f53ccfa81 switched to using default_timer 10 years ago
lanjelot 23cc78ba1f added doc for rlogin_login 10 years ago
lanjelot 766d92735e improved smb_login error codes 10 years ago
lanjelot effdbbd291 added more tlds to dns_forward 10 years ago
lanjelot 4a4b6497ad minor fixes 10 years ago
lanjelot 18a63647d7 new rlogin_login module 10 years ago
lanjelot ac0525c228 wrong timing in http_fuzz 10 years ago
lanjelot d39b11c60d fixed bugs in http_fuzz 11 years ago
lanjelot 3076b2e216 support resuming 11 years ago
lanjelot bc432a96c8 only one logger to have the same asctime across all handlers 11 years ago
lanjelot d9dd72d35f fixed bugs 11 years ago
lanjelot b65d37cf76 added CSV and XML output formats 11 years ago
lanjelot afdb3c5e8f added real execution time 11 years ago
lanjelot af7016b7a6 fixed bug in http_fuzz 11 years ago
lanjelot e40fdebe4a improved RANGE keyword 11 years ago
lanjelot ec7d302c55 new umbraco_crack module 11 years ago
lanjelot edf08799ee fixed logformat bug 11 years ago
lanjelot 6a700d7cbd added time column 11 years ago
lanjelot 9abd1e874a released v0.5 11 years ago

@ -0,0 +1,69 @@
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
# dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential python3-setuptools \
libcurl4-openssl-dev python3-dev libssl-dev \
ldap-utils \
libmysqlclient-dev \
libpq-dev \
ike-scan unzip default-jdk \
libsqlite3-dev \
libsqlcipher-dev \
python3-pip \
&& rm -rf /var/lib/apt/lists/*
## cx_oracle
RUN apt-get update \
&& apt-get install -y --no-install-recommends libaio1 wget unzip git \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/oracle
RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip \
&& wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-sdk-linuxx64.zip \
&& unzip instantclient-basiclite-linuxx64.zip \
&& rm -f instantclient-basiclite-linuxx64.zip \
&& unzip instantclient-sdk-linuxx64.zip \
&& rm -f instantclient-sdk-linuxx64.zip \
&& cd /opt/oracle/instantclient_* \
&& rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci \
&& echo /opt/oracle/instantclient_* > /etc/ld.so.conf.d/oracle-instantclient.conf \
&& ldconfig
## xfreerdp (see https://github.com/FreeRDP/FreeRDP/wiki/Compilation)
WORKDIR /opt/FreeRDP
RUN apt-get update \
&& apt-get install -y --no-install-recommends ninja-build build-essential git-core debhelper cdbs dpkg-dev autotools-dev cmake pkg-config xmlto libssl-dev docbook-xsl xsltproc libxkbfile-dev libx11-dev libwayland-dev libxrandr-dev libxi-dev libxrender-dev libxext-dev libxinerama-dev libxfixes-dev libxcursor-dev libxv-dev libxdamage-dev libxtst-dev libcups2-dev libpcsclite-dev libasound2-dev libpulse-dev libjpeg-dev libgsm1-dev libusb-1.0-0-dev libudev-dev libdbus-glib-1-dev uuid-dev libxml2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libfaad-dev libfaac-dev libsdl2-dev libcjson-dev libpkcs11-helper1-dev \
&& apt-get install -y --no-install-recommends libavutil-dev libavcodec-dev libswresample-dev \
&& rm -rf /var/lib/apt/lists/* \
&& git clone --depth 1 --branch 2.9.0 https://github.com/freerdp/freerdp.git \
&& cmake -B freerdp-build -S freerdp -DCMAKE_BUILD_TYPE=Debug -DWITH_CLIENT_SDL=OFF -DWITH_KRB5=OFF -DWITH_SWSCALE=OFF -DWITTH_SSE2=ON -DWITH_FUSE=OFF \
&& cmake --build freerdp-build \
&& cmake --install freerdp-build \
&& rm -rf /opt/FreeRDP
# patator
WORKDIR /opt/patator
COPY ./requirements.txt ./
RUN python3 -m pip install --upgrade pip \
&& python3 -m pip install -r requirements.txt
# uncomment for python2
# RUN apt-get update \
# && apt-get install -y --no-install-recommends python-pip ipython \
# && rm -rf /var/lib/apt/lists/* \
# && sed -e '/cx_Oracle/d' -e 's,pysqlcipher3,pysqlcipher,' requirements.txt | python2 -m pip install -r /dev/stdin \
# && git clone --branch 5.3 https://github.com/oracle/python-cx_Oracle \
# && cd python-cx_Oracle && export ORACLE_HOME=$(echo /opt/oracle/instantclient_*) && python2 setup.py build && python2 setup.py install
# utils
RUN apt-get update \
&& apt-get install -y --no-install-recommends ipython3 iputils-ping iproute2 netcat curl rsh-client telnet vim mlocate nmap \
&& rm -rf /var/lib/apt/lists/* \
&& echo 'set bg=dark' > /root/.vimrc
COPY ./patator.py ./
ENTRYPOINT ["python3", "./patator.py"]

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

@ -0,0 +1,3 @@
include README.md
include LICENSE
include requirements.txt

@ -0,0 +1,328 @@
# 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.

65
Vagrantfile vendored

@ -0,0 +1,65 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
$apt = <<SCRIPT
export DEBIAN_FRONTEND=noninteractive
# refresh
apt-get update -y
# essentials
apt-get install -y tmux git wget build-essential vim
# requirements.txt deps
apt-get install -y libcurl4-openssl-dev python3-dev libssl-dev # pycurl
apt-get install -y ldap-utils # ldapsearch
apt-get install -y libmariadbclient-dev # mysqlclient-python
apt-get install -y libpq-dev # psycopg2
apt-get install -y ike-scan unzip default-jdk
apt-get install -y libsqlite3-dev libsqlcipher-dev # pysqlcipher
# cx_oracle
apt-get install -y libaio1 wget unzip
rm -fr /opt/oracle
mkdir /opt/oracle && cd /opt/oracle
wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip
unzip instantclient-basiclite-linuxx64.zip
rm -f instantclient-basiclite-linuxx64.zip
cd /opt/oracle/instantclient*
rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci
echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf
ldconfig
# xfreerdp (see https://github.com/FreeRDP/FreeRDP/wiki/Compilation)
apt-get install -y ninja-build build-essential git-core debhelper cdbs dpkg-dev autotools-dev cmake pkg-config xmlto libssl-dev docbook-xsl xsltproc libxkbfile-dev libx11-dev libwayland-dev libxrandr-dev libxi-dev libxrender-dev libxext-dev libxinerama-dev libxfixes-dev libxcursor-dev libxv-dev libxdamage-dev libxtst-dev libcups2-dev libpcsclite-dev libasound2-dev libpulse-dev libjpeg-dev libgsm1-dev libusb-1.0-0-dev libudev-dev libdbus-glib-1-dev uuid-dev libxml2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libfaad-dev libfaac-dev
apt-get install -y libavutil-dev libavcodec-dev libavresample-dev
rm -fr /tmp/FreeRDP
git clone https://github.com/FreeRDP/FreeRDP/ /tmp/FreeRDP && (cd /tmp/FreeRDP && cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON . && cmake --build . && sudo cmake --build . --target install)
SCRIPT
$patator = <<SCRIPT
python3 -m venv patatorenv --without-pip
source patatorenv/bin/activate
wget --quiet -O - https://bootstrap.pypa.io/get-pip.py | python3
python3 -m pip install patator
SCRIPT
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.box_check_update = false
# prevent TTY error messages
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"
config.vm.provision "shell",
inline: $apt,
preserve_order: true,
privileged: true
config.vm.provision "shell",
inline: $patator,
preserve_order: true,
privileged: false
end

@ -0,0 +1,59 @@
version: "3"
services:
unix:
build: testing/unix
image: patator-unix-testing
# ports:
# - "21:21"
# - "22:22"
# - "23:23"
# - "25:25"
# - "79:79"
# - "80:80"
# - "106:106"
# - "110:110"
# - "139:139"
# - "143:143"
# - "389:389"
# - "445:445"
# - "513:513"
# - "636:636"
# - "993:993"
# - "995:995"
# - "3306:3306"
# - "4444:4444"
# - "5432:5432"
# - "5900:5900"
# - "8009:8009"
# - "8080:8080"
# - "161:161/udp"
volumes:
- .:/opt/patator
oracle:
image: oracleinanutshell/oracle-xe-11g
environment:
- ORACLE_ENABLE_XDB=true
ports:
- "1521:1521"
mssql:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=Password1
ports:
- "1433:1433"
patator:
build: .
image: patator
depends_on:
- unix
- oracle
- mssql
environment:
- DISPLAY
volumes:
- .:/opt/patator
- /tmp/.X11-unix:/tmp/.X11-unix

File diff suppressed because it is too large Load Diff

@ -0,0 +1,16 @@
#!/bin/bash
set -ex
DOCKER_IMAGE='lanjelot/patator'
GIT_REPO='https://github.com/lanjelot/patator'
TMP_COPY=$(mktemp -d)
git clone -b master $GIT_REPO $TMP_COPY
cd $TMP_COPY
VERSION=$(echo `git tag|sort -V|tail -1`-`git rev-parse --verify HEAD|cut -b -7`)
sed -i -e "s,^__version__.*$,__version__ = '$VERSION'," patator.py
docker build . -t $DOCKER_IMAGE:$VERSION -t $DOCKER_IMAGE:latest
docker login
docker push $DOCKER_IMAGE

@ -0,0 +1,14 @@
paramiko
pycurl
ajpy
impacket
pyopenssl
cx_Oracle
mysqlclient
psycopg2-binary
pycryptodomex
dnspython
IPy
pysnmp==4.4.12
pyasn1==0.4.8
pysqlcipher3

@ -0,0 +1,131 @@
#!/bin/bash
if ! docker compose version &>/dev/null; then
echo 'docker compose is required'
exit 1
fi
docker compose up -d --build
case "$1" in
python2|python3)
PYTHON=$1
;;
*)
PYTHON='python3'
;;
esac
UNIX='unix'
ORACLE='oracle'
MSSQL='mssql'
WIN10='' # 192.168.1.5 # vagrant add senglin/win-7-enterprise
VPN='' #
LOGS='-l ./asdf -y --hits ./hits.txt'
run()
{
echo
echo "$ $@"
docker compose run --no-deps --rm --entrypoint "$PYTHON patator.py" patator "$@"
}
echo
echo ">>> $PYTHON"
run ftp_login host=$UNIX
run ftp_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
run ssh_login host=$UNIX
run ssh_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
run telnet_login host=$UNIX
run telnet_login host=$UNIX inputs='userRANGE0\nPasswordRANGE0' 0=int:0-9 prompt_re='login:|Password:' timeout=5
run smtp_vrfy host=$UNIX
run smtp_vrfy host=$UNIX user=userRANGE0 0=int:1-500 -x ignore:fgrep='User unknown' -x ignore,reset,retry:code=421 --auto-progress 10
run smtp_rcpt host=$UNIX
run smtp_rcpt host=$UNIX mail_from=root@localhost user=userRANGE0@localhost 0=int:1-200 -x ignore:fgrep='User unknown'
run smtp_login host=$UNIX
run smtp_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-30 starttls=1 #-x ignore,reset,retry:code=421
run finger_lookup host=$UNIX
run finger_lookup host=$UNIX user=userRANGE0 0=int:0-20 -x ignore:fgrep='no such user'
run ldap_login host=$UNIX
run ldap_login host=$UNIX binddn='cn=admin,dc=example,dc=com' bindpw=PasswordRANGE0 0=int:0-9 basedn='dc=example,dc=com'
run smb_login host=$UNIX
run smb_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
if [[ ! -z $WIN10 ]]; then
run smb_login host=$WIN10 user=vagranRANGE0 password=vagranRANGE0 0=lower:r-v
run smb_lookupsid host=$WIN10 user=vagrant password=vagrant rid=RANGE0 0=int:500-2000 -x ignore:code=1
run dcom_login host=$WIN10 user=vagranRANGE0 password=vagranRANGE0 0=lower:r-v
xhost +si:localuser:root
run rdp_login host=$WIN10 user=vagranRANGE0 password=vagranRANGE0 0=lower:r-v
xhost -si:localuser:root
fi
run pop_login host=$UNIX
run pop_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
run pop_passd host=$UNIX
run pop_passd host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
run imap_login host=$UNIX
run imap_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
run rlogin_login host=$UNIX user=userRANGE0 password=PasswordRANGE0 0=int:0-9
run mysql_login host=$UNIX
run mysql_login host=$UNIX user=root password=PasswordRANGE0 0=int:0-9
run mysql_query host=$UNIX user=root password=Password1 query='select host, user from mysql.user'
run mysql_query host=$UNIX user=root password=Password1 query='select load_file("/etc/hosts")'
run mssql_login host=$MSSQL user=sa password=PasswordRANGE0 0=int:0-9
run oracle_login host=$ORACLE sid=xRANGE0 0=lower:a-f -t 1
run oracle_login host=$ORACLE sid=xe user=sys password=oraclRANGE0 0=lower:a-f
run pgsql_login host=$UNIX
run pgsql_login host=$UNIX user=postgres password=PasswordRANGE0 0=int:0-9
run http_fuzz url="http://$UNIX/RANGE0" 0=lower:a-zzz -x ignore:code=404
run http_fuzz url=http://$UNIX:8080/manager/html user_pass=tomcat:PasswordRANGE0 0=int:0-9
run ajp_fuzz url=ajp://$UNIX/manager/html user_pass=tomcat:PasswordRANGE0 0=int:0-9
run vnc_login host=$UNIX port=5900 password=PassworRANGE0 0=lower:a-f
run dns_reverse host=NET0 0=216.239.32.0-216.239.32.255,8.8.8.0/24 -x ignore:code=3 -x ignore:fgrep!=google.com -x ignore:fgrep=216-239-
run dns_forward name=MOD0.microsoft.com 0=SRV qtype=SRV -x ignore:code=3 --auto-progress 15
run snmp_login host=$UNIX community=publiRANGE0 0=lower:a-f
run snmp_login host=$UNIX community=public version=3 user=userRANGE0 0=int:0-5 auth_key=whatever
run snmp_login host=$UNIX community=public version=3 user=user3 auth_proto=sha auth_key=authPasRANGE0 0=lower:q-v
run snmp_login host=$UNIX community=public version=3 user=user3 auth_proto=sha auth_key=authPass priv_proto=aes priv_key=privPasRANGE0 0=lower:q-v
if [[ ! -z $VPN ]]; then
run ike_enum host=$VPN transform=MOD0 0=TRANS aggressive=RANGE1 1=int:0-1 -x ignore:fgrep=NO-PROPOSAL
fi
run unzip_pass zipfile=enc.zip password=PasswordRANGE0 0=int:0-9
run keystore_pass keystore=keystore.jks password=PasswordRANGE0 0=int:0-9
run sqlcipher_pass database=enc.db password=PasswordRANGE0 0=int:0-9
run umbraco_crack hashlist=@umbraco_users.pw password=PasswordRANGE0 0=int:0-9
run tcp_fuzz host=$UNIX port=4444 data=RANGE0 0=hex:0xf0-0xf9 # $LOGS
echo -e '\xde\xad\xbe\xef\nprintable ascii' > dummy.txt
run dummy_test delay=0 data=FILE0 0=dummy.txt data2=RANGE1 1=lower:a-b
echo -e 'wrong pass\np\x1fssw\x09rd' > user9.pass
run ssh_login host=unix user=user9 password=FILE0 0=user9.pass
rm -f dummy.txt user9.pass

@ -0,0 +1,45 @@
from setuptools import setup, find_packages
def parse_requirements(file):
required = []
with open(file) as f:
for req in f.read().splitlines():
if not req.strip().startswith('#'):
required.append(req)
return required
requirements = parse_requirements('requirements.txt')
long_description = "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."
setup(
name="patator",
version="1.0",
description="multi-purpose brute-forcer",
long_description=long_description,
url="https://github.com/lanjelot/patator",
author="Sebastien Macke",
author_email="patator@hsc.fr",
license="GPLv2",
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'Intended Audience :: Information Technology',
'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',
'Programming Language :: Python :: 3',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: Linux',
'Topic :: Utilities',
'Topic :: Security',
],
keywords="pentest brute force password attack",
packages=find_packages(),
install_requires=requirements,
python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, <4',
scripts=['patator.py'],
)

@ -0,0 +1,149 @@
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN { for i in {3..5}; do useradd -m -s /bin/bash user$i; echo -e "Password$i\nPassword$i" | passwd user$i; done; } \
&& useradd -m user9 && echo -e 'p\x1fssw\x09rd\np\x1fssw\x09rd' | passwd user9
# utils
RUN sed -i 's:^path-exclude=/usr/share/man:#path-exclude=/usr/share/man:' /etc/dpkg/dpkg.cfg.d/excludes \
&& apt-get update \
&& apt-get install -y --no-install-recommends man manpages-posix iproute2 mlocate lsof sudo vim less telnet finger rsh-client smbclient \
&& rm -rf /var/lib/apt/lists/* \
&& echo 'set bg=dark' > /root/.vimrc \
&& usermod -aG sudo user3
# services
RUN apt-get update \
&& apt-get install -y --no-install-recommends vsftpd openssh-server telnetd rsh-redone-server fingerd apache2 socat \
&& rm -rf /var/lib/apt/lists/* \
&& echo 'background=YES' >> /etc/vsftpd.conf \
&& sed -i -e 's,start-stop-daemon --start --background,start-stop-daemon --start,' /etc/init.d/vsftpd
RUN { echo "postfix postfix/mailname string ubuntu-blah"; \
echo "postfix postfix/main_mailer_type string 'Internet Site'"; \
} | debconf-set-selections \
&& apt-get update && apt-get install -y --no-install-recommends postfix dovecot-pop3d dovecot-imapd \
&& rm -rf /var/lib/apt/lists/* \
&& postconf 'smtpd_sasl_exceptions_networks=' 'smtpd_sasl_auth_enable=yes' 'smtpd_sasl_type=dovecot' 'smtpd_sasl_path=private/dovecot-auth' \
&& echo -e 'auth_mechanisms = plain login\n\
service auth {\n\
unix_listener /var/spool/postfix/private/dovecot-auth {\n\
mode = 0660\n\
user = postfix\n\
group = postfix\n\
}\n\
}\n' > /etc/dovecot/conf.d/99-blah.conf
RUN echo 'ServerName localhost' >> /etc/apache2/apache2.conf \
&& mkdir /var/www/html/{wp,pma,bak} && echo secret > /var/www/html/key
RUN LDAPPW=Password1; \
{ \
echo slapd slapd/internal/generated_adminpw password $LDAPPW; \
echo slapd slapd/password2 password $LDAPPW; \
echo slapd slapd/internal/adminpw password $LDAPPW; \
echo slapd slapd/password1 password $LDAPPW; \
echo slapd slapd/domain string example.com; \
echo slapd shared/organization string example.com; \
} | debconf-set-selections \
&& apt-get update && apt-get install -y --no-install-recommends slapd ldap-utils \
&& rm -rf /var/lib/apt/lists/*
RUN MYSRP=Password1; \
{ echo "mysql-server mysql-server/root_password password $MYSRP"; \
echo "mysql-server mysql-server/root_password_again password $MYSRP"; \
} | debconf-set-selections \
&& apt-get update && apt-get install -y --no-install-recommends mysql-server \
&& rm -rf /var/lib/apt/lists/* \
&& sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/mysql.conf.d/mysqld.cnf \
&& echo secure_file_priv= >> /etc/mysql/mysql.conf.d/mysqld.cnf \
&& rm -f /etc/apparmor.d/usr.sbin.mysqld \
&& service mysql start \
&& Q1="CREATE USER 'root'@'%' identified by 'Password1';" \
&& Q2="GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';" \
&& Q3="FLUSH PRIVILEGES;" \
&& SQL="${Q1}${Q2}${Q3}" \
&& mysql -uroot -p"$MYSRP" -e "$SQL"
RUN PGPW=Password1 \
&& apt-get update && apt-get install -y --no-install-recommends postgresql \
&& rm -rf /var/lib/apt/lists/* \
&& sed -ie 's,127.0.0.1/32,0.0.0.0/0,' /etc/postgresql/14/main/pg_hba.conf \
&& sed -ie "s,^#listen_addresses = 'localhost',listen_addresses = '*'," /etc/postgresql/14/main/postgresql.conf \
&& service postgresql start \
&& su - postgres -c "psql -c \"ALTER USER postgres WITH PASSWORD '$PGPW';\" -c '\\q'" \
&& su - postgres -c "PGPASSWORD='$PGPW' psql -d postgres -w --no-password -h localhost -p 5432 -t -c 'SELECT version()'"
RUN apt-get update && apt-get install -y --no-install-recommends tomcat9 tomcat9-admin \
&& rm -rf /var/lib/apt/lists/* \
&& echo '<?xml version="1.0" encoding="UTF-8"?><tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"><user username="tomcat" password="Password1" roles="manager-gui"/></tomcat-users>' > /etc/tomcat9/tomcat-users.xml \
&& sed -ie 's,^.*Define an AJP .* Connector on port.*$,<Connector protocol="AJP/1.3" address="0.0.0.0" port="8009" redirectPort="8443" secretRequired="false"/>,' /etc/tomcat9/server.xml \
&& sed -ie 's,catalina.realm.LockOutRealm",catalina.realm.LockOutRealm" lockOutTime="0",' /etc/tomcat9/server.xml \
&& echo -e "#!/bin/sh\n\
export CATALINA_HOME=/usr/share/tomcat9\n\
export CATALINA_BASE=/var/lib/tomcat9\n\
export CATALINA_TMPDIR=/tmp\n\
export SECURITY_MANAGER=true\n\
export JAVA_OPTS=-Djava.awt.headless=true\n\
/usr/libexec/tomcat9/tomcat-update-policy.sh\n\
/usr/libexec/tomcat9/tomcat-start.sh &\n" > /usr/local/sbin/start-tomcat.sh
RUN apt-get update && apt-get install -y --no-install-recommends dovecot-imapd dovecot-pop3d poppassd \
&& rm -rf /var/lib/apt/lists/* \
&& sed -ie 's,^#login_trusted_networks = *$,login_trusted_networks = 0.0.0.0/0,' /etc/dovecot/dovecot.conf
RUN apt-get update && apt-get install -y --no-install-recommends p7zip-full \
&& rm -rf /var/lib/apt/lists/* \
&& 7za a -pPassword1 /root/enc.zip /etc/passwd
RUN apt-get update && apt-get install -y --no-install-recommends openjdk-18-jre-headless \
&& rm -rf /var/lib/apt/lists/* \
&& keytool -genkey -alias test -storepass Password1 -keypass Password1 -keystore /root/keystore.jks -dname "CN=a,OU=b,O=c,L=d,ST=e,C=f" -keyalg RSA
RUN apt-get update && apt-get install -y --no-install-recommends sqlcipher \
&& rm -rf /var/lib/apt/lists/* \
&& sqlcipher /root/enc.db "PRAGMA key = 'Password1';create table a(id int);"
RUN echo -e 'user1:kW+7AlKMnSZQIRluNxwJOMiohAw=\nuser2:oBk37hmkFgZdZ247+g6c0Ay6Vw8=\nuser3:kW+7AlKMnSZQIRluNxwJOMiohAw=' > /root/umbraco_users.pw
RUN apt-get update && apt-get install -y --no-install-recommends tightvncserver xfonts-base \
&& rm -rf /var/lib/apt/lists/* \
&& useradd -m vncuser && mkdir ~vncuser/.vnc && echo Password | vncpasswd -f > ~vncuser/.vnc/passwd \
&& chmod 400 ~vncuser/.vnc/passwd && chown -R vncuser:vncuser ~vncuser/.vnc
RUN apt-get update \
&& apt-get install -y --no-install-recommends samba \
&& rm -rf /var/lib/apt/lists/* \
&& { for i in {3..5}; do echo -e "Password$i\nPassword$i" | smbpasswd -a "user$i"; done; } \
&& sed -ie 's,map to guest =,#map to guest =,' /etc/samba/smb.conf
RUN apt-get update \
&& apt-get install -y --no-install-recommends snmpd snmp \
&& rm -rf /var/lib/apt/lists/* \
&& sed -ie 's,^agentaddress .*$,agentaddress udp:161,' /etc/snmp/snmpd.conf \
&& echo 'createUser user3 SHA authPass AES privPass' >> /var/lib/snmp/snmpd.conf \
&& echo 'rouser user3 priv .1' >> /etc/snmp/snmpd.conf
RUN echo -e "echo Starting services\n\
service vsftpd start\n\
service ssh start\n\
/usr/sbin/inetd\n\
service postfix start\n\
service dovecot start\n\
service apache2 start\n\
ulimit -n 1024; service slapd start\n\
service mysql start\n\
service postgresql start\n\
sh /usr/local/sbin/start-tomcat.sh\n\
socat tcp-l:106,fork,reuseaddr exec:/usr/sbin/poppassd &\n\
socat tcp-l:4444,fork,reuseaddr exec:\"echo -e 'W\xe1\xc0me'\" &\n\
cp -v /root/enc.zip /root/keystore.jks /root/enc.db /root/umbraco_users.pw /opt/patator/\n\
su - vncuser -c 'vncserver -rfbport 5900'\n\
service smbd start\n\
service snmpd start\n\
tail -f /dev/null\n" > /usr/local/sbin/start-all-services.sh
CMD ["sh", "/usr/local/sbin/start-all-services.sh"]
Loading…
Cancel
Save