Distributed password bruteforcer for BSD-Style MD5 hashes --------------------------------------------------------- Version 0.2.1 LICENSING --------- The files client.c, client.h, cs_all, cs_alpha, cs_alphanum, cs_lowercase, cs_numeric, cs_special, cs_uppercase, engine.c, engine.h, Makefile, networking.c, networking.h, server.c, server.h are copyright (c) 2005 David Gubler (david@kabelverhau.ch) The files common.c, common.h, MD5_std.c, MD5_std.h, x86.S and all files in the "archs" directory are copyright (c) Solar Designer (solar@false.com) --------------------------------------------------------------------------- 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --------------------------------------------------------------------------- Part of the code (namely the MD5 routine) is taken from John the Ripper 1.6 with permission from Solar Designer. PURPOSE & USAGE --------------- This is a simple Tool that lets you brute-force BSD-style MD5-hashes as used for instance on Linux systems in /etc/passwd or /etc/shadow. Run the server without any arguments to see a list of possible options and examples. The client takes one or two arguments: ./client serveraddress [serverport] where serveraddress is the IP-address or a domain name of the server serverport is the port number the server listens on INSTALLATION ------------ To compile this program you need gcc (most versions should do), the usual header files for all the common libraries, and the "make" tool. $ make gives you a list of possible architectures. Note: - This will NOT cross-compile this tool for other architectures; it just uses different parameters for the MD5 routine (and in case of x86 it will use assembly code). - Use "generic" if your architecure is not listed. - Architectures other than x86, SunOS 8/gcc and Linux/PPC are not tested yet. Please tell me if it works. There should be no byte-order issues, but I guess there will be problems if ints are not 4 Bytes wide. $ make yourarchitecture This will create two binaries, "server" and "client". If you wish, you may copy them to /usr/bin (for instance). You'll need to become root to do this. UGLY CODE WARNING ----------------- I am not an experienced C programmer, so don't expect any miracles, the code is probably not very clean. UGLY LANGUAGE WARNING --------------------- My native language is german. I do my best to write good english sentences, but I have no idea how good or bad they really are, so, uhm, sorry for that :) CHANGELOG --------- 0.2 -> 0.2.1 -"generic" target now also comes in little-endian flavour (thanks to Steve Benson for noticing). The bug only shows up in the client; the server should not be affected 0.1.1 -> 0.2 -Server now implements checkpointing -New command line arguments for the additional functionality -no changes in the client 0.1 -> 0.1.1 -No more unaligned memory (such that it works on SPARC) -Added makefile target for Solaris/SunOS with special compiler flags ("-lsocket -lnsl")