mirror of
https://github.com/yann64/haikuports.git
synced 2026-03-19 01:46:00 +01:00
x86_64 is used as a baseline: the "x86_64" entry, whatever status it has, is transformed into "all", and then the other entries in ARCHITECTURES either dropped or rearranged appropriately.
183 lines
5.1 KiB
Bash
183 lines
5.1 KiB
Bash
SUMMARY="A fast password cracker"
|
|
DESCRIPTION="A fast password cracker, currently available for many flavors of \
|
|
Unix, Windows, DOS, 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."
|
|
HOMEPAGE="http://www.openwall.com/john"
|
|
COPYRIGHT="1996-2013 Solar Designer
|
|
2014 John the Ripper '-jumbo' authors"
|
|
LICENSE="GNU GPL v2
|
|
John the Ripper"
|
|
REVISION="1"
|
|
jumboVersion="1"
|
|
SOURCE_URI="http://www.openwall.com/john/k/john-$portVersion-jumbo-$jumboVersion.tar.xz"
|
|
CHECKSUM_SHA256="f5d123f82983c53d8cc598e174394b074be7a77756f5fb5ed8515918c81e7f3b"
|
|
SOURCE_DIR="john-$portVersion-jumbo-$jumboVersion"
|
|
PATCHES="johntheripper-$portVersion.patchset"
|
|
|
|
ARCHITECTURES="all !x86_gcc2"
|
|
SECONDARY_ARCHITECTURES="x86"
|
|
|
|
GLOBAL_WRITABLE_FILES="
|
|
settings/john/john.conf auto-merge
|
|
"
|
|
USER_SETTINGS_FILES="
|
|
settings/john directory
|
|
settings/john/john.local.conf template $docDir/john.local.conf.example
|
|
"
|
|
|
|
PROVIDES="
|
|
johntheripper$secondaryArchSuffix = $portVersion
|
|
cmd:john = $portVersion
|
|
"
|
|
bins=(calc_stat cprepair genmkvpwd mkvcalcproba raw2dyna
|
|
tgtsnarf uaf2john wpapcap2john)
|
|
syms=(base64conv dmg2john gpg2john hccap2john keepass2john keychain2john
|
|
keyring2john keystore2john kwallet2john pfx2john putty2john pwsafe2john
|
|
racf2john rar2john ssh2john truecrypt_volume2john unafs undrop unique
|
|
unshadow zip2john)
|
|
for b in ${bins[@]} ${syms[@]}
|
|
do
|
|
PROVIDES+="
|
|
cmd:$b = $portVersion
|
|
"
|
|
done
|
|
REQUIRES="
|
|
haiku$secondaryArchSuffix
|
|
lib:libcrypto$secondaryArchSuffix
|
|
lib:libgmp$secondaryArchSuffix
|
|
lib:libgomp$secondaryArchSuffix
|
|
lib:libz$secondaryArchSuffix
|
|
"
|
|
|
|
BUILD_REQUIRES="
|
|
haiku${secondaryArchSuffix}_devel
|
|
devel:libcrypto$secondaryArchSuffix
|
|
devel:libgmp$secondaryArchSuffix
|
|
devel:libz$secondaryArchSuffix
|
|
"
|
|
BUILD_PREREQUIRES="
|
|
cmd:awk
|
|
cmd:find
|
|
cmd:gcc$secondaryArchSuffix
|
|
cmd:grep
|
|
cmd:make
|
|
cmd:sed
|
|
"
|
|
|
|
# Instruction sets for fallback chain (AVX|XOP are not supported it seems)
|
|
instr=(ssse3 sse4.1)
|
|
# SSE2 is enabled by default for x86_64, but not for x86.
|
|
# To check for enabled instruction set, run:
|
|
# gcc -dM -E -x c /dev/null | grep -E "(MMX|SSE|AVX|XOP)"
|
|
if [ "$effectiveTargetArchitecture" != "x86_64" ]; then
|
|
instr=(sse2 ${instr[@]})
|
|
fi
|
|
|
|
BUILD()
|
|
{
|
|
local constantSettingsDir="$(finddir B_SYSTEM_SETTINGS_DIRECTORY)"
|
|
cat > haiku.config << EOF
|
|
#define CFG_FULL_NAME "$constantSettingsDir/john/john.conf"
|
|
#define CFG_ALT_NAME "$constantSettingsDir/john/john.ini"
|
|
#define CFG_PRIVATE_FULL_NAME "~config/john/john.conf"
|
|
#define CFG_PRIVATE_ALT_NAME "~config/john/john.ini"
|
|
#define CPU_FALLBACK 0
|
|
#define JOHN_SYSTEMWIDE 1
|
|
#define JOHN_SYSTEMWIDE_EXEC "$libExecDir/john"
|
|
#define JOHN_SYSTEMWIDE_HOME "$dataDir/john"
|
|
#define JOHN_PRIVATE_HOME "~data/john"
|
|
EOF
|
|
local cfgFlags="--disable-native-tests --enable-openmp"
|
|
|
|
# TODO: somehow quote PWD without autotools acting up
|
|
export CFLAGS="-O2 -pipe -iquote $PWD -include haiku.config"
|
|
export LIBS="-Wl,--as-needed -lnetwork" # Need libnetwork for tgtsnarf
|
|
|
|
cd src
|
|
runConfigure ./configure $cfgFlags
|
|
make clean
|
|
make $jobArgs
|
|
|
|
for i in ${instr[@]}
|
|
do
|
|
mv ../run/john{,-non-$i}
|
|
CFLAGS="$CFLAGS -m$i" \
|
|
runConfigure ./configure $cfgFlags
|
|
make clean
|
|
make $jobArgs
|
|
done
|
|
}
|
|
|
|
INSTALL()
|
|
{
|
|
install -d -m 755 "$dataDir/bash-completion/completions" \
|
|
"$dataDir/zsh/site-functions" \
|
|
"$dataDir/john" "$docDir/extras" "$libExecDir/john" "$settingsDir/john" \
|
|
"$prefix/bin"
|
|
|
|
# configs
|
|
local constantSettingsDir="$(finddir B_SYSTEM_SETTINGS_DIRECTORY)"
|
|
sed run/john.conf > "$settingsDir/john/john.conf" \
|
|
-e "s|\$JOHN/john.local.conf|$constantSettingsDir/john/john.local.conf|g"
|
|
|
|
install -m 644 run/john.conf "$docDir/john.local.conf.example"
|
|
install -t "$dataDir/john" -m 644 run/*.conf
|
|
#rm "$dataDir/john/"john{,.local}.conf
|
|
|
|
# remove stuff that only devs need
|
|
rm -rf doc/extras
|
|
# docs
|
|
install -t "$docDir" -m 644 doc/*
|
|
|
|
# licenses
|
|
rm "$docDir/COPYING" # no need for another GPL v2 copy
|
|
rm "$docDir/"LICENSE{,.mpi} # john's mpi is licensed under the same terms
|
|
rm "$docDir/SIPcrack-LICENSE" # we don't have this installed
|
|
|
|
# completions
|
|
install -m 644 run/john.bash_completion \
|
|
"$dataDir/bash-completion/completions/john"
|
|
install -m 644 run/john.zsh_completion "$dataDir/zsh/site-functions/_john"
|
|
|
|
# bins
|
|
install -t "$prefix/bin" -m 755 run/john
|
|
install -t "$libExecDir/john" -m 755 run/john-non-*
|
|
for b in ${bins[@]}
|
|
do
|
|
install -t "$prefix/bin" -m 755 run/$b
|
|
done
|
|
|
|
# scripts
|
|
install -t "$libExecDir/john" -m 755 run/*.{pl,py,rb} run/benchmark-unify \
|
|
run/mailer run/makechr run/relbench
|
|
|
|
# data
|
|
install -t "$dataDir/john" -m 644 run/*.chr run/*.lst run/dictionary* \
|
|
run/stats
|
|
|
|
for s in ${syms[@]}
|
|
do
|
|
ln -s john "$prefix/bin/$s"
|
|
done
|
|
}
|
|
|
|
TEST()
|
|
{
|
|
cd run
|
|
|
|
if ./john 2>&1 | grep -q execv; then
|
|
# Fallback chain
|
|
for (( i=${#instr[@]} - 1; i >= 0; i-- ))
|
|
do
|
|
if ! ./john-non-${instr[i]} 2>&1 | grep -q execv; then
|
|
./john-non-${instr[i]} --make_check
|
|
break
|
|
fi
|
|
done
|
|
else
|
|
./john --make_check
|
|
fi
|
|
}
|