John the Ripper is a fast password cracker, currently available for many flavors of Unix, Windows, DOS, BeOS, and OpenVMS. Its primary purpose is to detect weak Unix passwords. Besides several crypt(3) password hash types most commonly found on various Unix systems, supported out of the box are Windows LM hashes, plus lots of other hashes and ciphers in the community-enhanced version.
Today we are going to show you how to compile John the Ripper to use all of your processors (we will talk about compiling for NVIDIA GPUs later).
First you should visit Openwall's site and
download the John the Ripper source code. I recommend getting the
community-enhanced version since it contains support for many other hashes and ciphers. As of this writing, the current version of the community edition is 1.7.9.
You also need to install a compiler and ssl. On Ubuntu systems, you can just install the build-essential package, and libssl-dev.
sudo apt-get install build-essential libssl-dev
Download and verify the version suitable for your platform. In this example I am compiling on Linux Mint 17 (Ubuntu Trusty).
Extract the tar:
tar -xvf john*.tar.gz
Enter the newly created directory into the “run” directory:
cd john*/src
Important: This step enables parallel-processing in John using OpenMP. nano Makefile
Remove the # before
OMPFLAGS = -fopenmp
and
OMPFLAGS = -fopenmp -msse2
Now save, and close.
Type “make | more
” and choose the type of system that you are using. I am running a 64bit version of Linux, so I will choose linux-x86-64-native. If you have a 32 bit system, make sure to choose x86. If you don't know what to choose then “generic” will probably work for you.
Once you have edited the Makefile, and picked the system to compile for, then build the program:
make clean linux-x86-64-native
On multi-processor systems you can also add -j5 where 5 is the number of processors on your system.
make clean linux-x86-64-native -j5
Once the process is done – if it had no errors – then the binaries will be in the 'run' directory.
cd ../run
You can test it by running ./john --test
Troubleshooting
If there was an error building, try building “generic”. If it works, then you probably chose the wrong build options.