diff options
Diffstat (limited to 'pkgs/tools/security/john/default.nix')
-rw-r--r-- | pkgs/tools/security/john/default.nix | 101 |
1 files changed, 84 insertions, 17 deletions
diff --git a/pkgs/tools/security/john/default.nix b/pkgs/tools/security/john/default.nix index b06e0f3ec64ff..aeefcaa0bbefd 100644 --- a/pkgs/tools/security/john/default.nix +++ b/pkgs/tools/security/john/default.nix @@ -1,5 +1,25 @@ -{ lib, stdenv, fetchFromGitHub, openssl, nss, nspr, libkrb5, gmp, zlib, libpcap, re2 -, gcc, python3Packages, perl, perlPackages, makeWrapper, }: +{ + lib, + stdenv, + fetchFromGitHub, + openssl, + nss, + nspr, + libkrb5, + gmp, + zlib, + libpcap, + re2, + gcc, + python3Packages, + perl, + perlPackages, + withOpenCL ? true, + opencl-headers, + ocl-icd, + substituteAll, + makeWrapper, +}: stdenv.mkDerivation rec { pname = "john"; @@ -12,6 +32,13 @@ stdenv.mkDerivation rec { hash = "sha256-zvoN+8Sx6qpVg2JeRLOIH1ehfl3tFTv7r5wQZ44Qsbc="; }; + patches = lib.optionals withOpenCL [ + (substituteAll { + src = ./opencl.patch; + ocl_icd = ocl-icd; + }) + ]; + postPatch = '' sed -ri -e ' s!^(#define\s+CFG_[A-Z]+_NAME\s+).*/!\1"'"$out"'/etc/john/! @@ -23,25 +50,61 @@ stdenv.mkDerivation rec { }' run/*.conf ''; - preConfigure = '' - cd src - # Makefile.in depends on AS and LD being set to CC, which is set by default in configure.ac. - # This ensures we override the environment variables set in cc-wrapper/setup-hook.sh - export AS=$CC - export LD=$CC - ''; + preConfigure = + '' + cd src + # Makefile.in depends on AS and LD being set to CC, which is set by default in configure.ac. + # This ensures we override the environment variables set in cc-wrapper/setup-hook.sh + export AS=$CC + export LD=$CC + '' + + lib.optionalString withOpenCL '' + python ./opencl_generate_dynamic_loader.py # Update opencl_dynamic_loader.c + ''; configureFlags = [ "--disable-native-tests" "--with-systemwide" ]; - buildInputs = [ openssl nss nspr libkrb5 gmp zlib libpcap re2 ]; - nativeBuildInputs = [ gcc python3Packages.wrapPython perl makeWrapper ]; - propagatedBuildInputs = (with python3Packages; [ dpkt scapy lxml ]) ++ # For pcap2john.py - (with perlPackages; [ DigestMD4 DigestSHA1 GetoptLong # For pass_gen.pl - CompressRawLzma # For 7z2john.pl - perlldap ]); # For sha-dump.pl - # TODO: Get dependencies for radius2john.pl and lion2john-alt.pl + buildInputs = + [ + openssl + nss + nspr + libkrb5 + gmp + zlib + libpcap + re2 + ] + ++ lib.optionals withOpenCL [ + opencl-headers + ocl-icd + ]; + nativeBuildInputs = [ + gcc + python3Packages.wrapPython + perl + makeWrapper + ]; + propagatedBuildInputs = + # For pcap2john.py + (with python3Packages; [ + dpkt + scapy + lxml + ]) + ++ (with perlPackages; [ + # For pass_gen.pl + DigestMD4 + DigestSHA1 + GetoptLong + # For 7z2john.pl + CompressRawLzma + # For sha-dump.pl + perlldap + ]); + # TODO: Get dependencies for radius2john.pl and lion2john-alt.pl # gcc -DAC_BUILT -Wall vncpcap2john.o memdbg.o -g -lpcap -fopenmp -o ../run/vncpcap2john # gcc: error: memdbg.o: No such file or directory @@ -70,7 +133,11 @@ stdenv.mkDerivation rec { description = "John the Ripper password cracker"; license = licenses.gpl2Plus; homepage = "https://github.com/openwall/john/"; - maintainers = with maintainers; [ offline matthewbauer cherrykitten ]; + maintainers = with maintainers; [ + offline + matthewbauer + cherrykitten + ]; platforms = platforms.unix; }; } |