Skip to content

Instantly share code, notes, and snippets.

@sprout42
Last active May 10, 2018 13:54
Show Gist options
  • Save sprout42/ba60ae479c82632a91e540273b0149b4 to your computer and use it in GitHub Desktop.
Save sprout42/ba60ae479c82632a91e540273b0149b4 to your computer and use it in GitHub Desktop.
#!/bin/bash -ex
# These instructions are mostly adapted from here:
# http://openwall.info/wiki/john/tutorials/Ubuntu-build-howto
#
# With some additional build steps from here:
# https://github.com/magnumripper/JohnTheRipper/wiki/Fallback-binary-chains
# Required stuff
sudo apt-get install build-essential libssl-dev
# Recommended (extra formats and performance)
sudo apt-get install yasm libgmp-dev libpcap-dev libnss3-dev libkrb5-dev pkg-config libbz2-dev zlib1g-dev
# If you have an NVIDIA GPU (CUDA and OpenCL support)
#sudo apt-get install nvidia-cuda-toolkit nvidia-opencl-dev
# If you have an AMD GPU (or want to use CPU as OpenCL device)
#sudo apt-get install fglrx-updates-dev
# Optional MPI support
sudo apt-get install libopenmpi-dev openmpi-bin
# Optional REXGEN support (additional cracking modes)
sudo apt-get install libopenmpi-dev openmpi-bin
sudo apt-get install subversion cmake bison flex
mkdir ~/src && cd ~/src
git clone https://github.com/teeshop/rexgen.git
cd rexgen/src/
mkdir build && cd build
cmake ..
make && sudo make install
cd ~/src
git clone https://github.com/magnumripper/JohnTheRipper -b bleeding-jumbo john
# This builds the various fallback chains and builds JTR to be installed into the /usr/local/bin directory.
# You may need to run the configure command manually at least once to confirm that it has found all necessary
# dependencies.
cd ~/src/john/src
./configure --disable-native-tests --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse2-non-omp
./configure --disable-native-tests CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-sse2-non-omp\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse2
./configure --enable-simd=sse3 --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse3-non-omp
./configure --enable-simd=sse3 CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-sse3-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-sse2\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse3
./configure --enable-simd=ssse3 --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-ssse3-non-omp
./configure --enable-simd=ssse3 CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-ssse3-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-sse3\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-ssse3
./configure --enable-simd=sse4.1 --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse4.1-non-omp
./configure --enable-simd=sse4.1 CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-sse4.1-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-ssse3\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse4.1
./configure --enable-simd=sse4.2 --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
./configure --enable-simd=sse4.2 CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-sse4.2-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-sse4.1\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-sse4.2
./configure --enable-simd=avx --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
./configure --enable-simd=avx CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-avx-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-sse4.2\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-avx
./configure --enable-simd=xop --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-xop-non-omp
./configure --enable-simd=xop CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-xop-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-avx\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-xop
./configure --enable-simd=avx2 --disable-openmp CFLAGS='-O2 -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8
mv ../run/john ../run/john-non-omp
./configure --enable-simd=avx2 CFLAGS='-O2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-xop\"" -DJOHN_SYSTEMWIDE=1 -DJOHN_SYSTEMWIDE_EXEC="\"/usr/local/bin\""'
make -s clean && make -sj8 && echo All Done
cd ..
# Executables & scrips
sudo find run/ -type f -perm 775 -exec cp {} /usr/local/bin/ \;
# Links
sudo find run/ -type l -exec cp {} /usr/local/bin/ \;
# Configuration files
sudo find run/ -type f -perm 664 -exec cp {} /usr/share/john/ \;
sudo cp -a run/lib /usr/share/john/
sudo cp -a run/kerberom /usr/share/john/
sudo cp -a run/ztex /usr/share/john/
sudo cp -a run/dns /usr/share/john/
sudo cp /usr/share/john/john.conf /etc/john.conf
john --test=0
echo "BUILD SUCCESS\nYou can now remove the ~/src directory containing the build artifacts"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment