blob: b45527e33d5a83491b698870c6306120f98088aa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
inherit eutils pax-utils
DESCRIPTION="An opencl multihash cracker"
HOMEPAGE="http://hashcat.net/oclhashcat-plus/"
MY_P="oclHashcat-plus-${PV}"
SRC_URI="http://hashcat.net/files/${MY_P}.7z"
LICENSE="hashcat"
SLOT="0"
KEYWORDS="-* ~amd64 ~x86"
IUSE_VIDEO_CARDS="video_cards_fglrx
video_cards_nvidia"
IUSE="virtualcl ${IUSE_VIDEO_CARDS}"
RDEPEND="sys-libs/zlib
video_cards_nvidia? ( >=x11-drivers/nvidia-drivers-319.37 )
video_cards_fglrx? ( >=x11-drivers/ati-drivers-13.4 )"
DEPEND="${RDEPEND}
app-arch/p7zip"
S="${WORKDIR}/${MY_P}"
RESTRICT="strip"
QA_PREBUILT="*Hashcat-plus*.bin
opt/${PN}/kernels/4098/*.llvmir"
src_prepare() {
use x86 && rm *Hashcat-plus64*
use amd64 && rm *Hashcat-plus32*
use virtualcl || rm vclHashcat-plus*
if ! use video_cards_fglrx; then
rm -r kernels/4098 || die
rm oclHashcat-plus*.bin || die
fi
if ! use video_cards_nvidia; then
rm -r kernels/4318 || die
rm cudaHashcat-plus*.bin || die
fi
#paxmark goes here so test and install works
pax-mark r *Hashcat-plus*.bin
}
src_test() {
printf "%02x" ${PV#0.} > "${S}"/eula.accepted
if use video_cards_nvidia; then
addwrite /dev/nvidia0
addwrite /dev/nvidiactl
if [ ! -w /dev/nvidia0 ]; then
einfo "To run these tests, portage likely must be in the video group."
einfo "Please run \"gpasswd -a portage video\" if the tests will fail"
fi
if use amd64; then
./cudaHashcat-plus64.bin -a 3 -m 1500 nQCk49SiErOgk || die
elif use x86; then
./cudaHashcat-plus32.bin -a 3 -m 1500 nQCk49SiErOgk || die
fi
fi
if use video_cards_fglrx; then
addwrite /dev/ati
if use amd64; then
./oclHashcat-plus64.bin -a 3 -m 1500 nQCk49SiErOgk || die
elif use x86; then
./oclHashcat-plus32.bin -a 3 -m 1500 nQCk49SiErOgk || die
fi
fi
rm eula.accepted hashcat.pot hashcat.dictstat
}
src_install() {
dodoc docs/*
rm -r "${S}"/*.exe "${S}"/*.cmd "${S}"/docs || die
insinto /opt/${PN}
doins -r "${S}"/* || die "Copy files failed"
dodir /opt/bin
cat <<-EOF > "${ED}"/opt/bin/oclhashcat-plus
#! /bin/sh
echo "oclHashcat-plus and all related files have been installed in /opt/${PN}"
echo "Please run one of the following binaries to use gpu accelerated hashcat:"
EOF
for x in oclHashcat-plus64.bin oclHashcat-plus32.bin cudaHashcat-plus64.bin cudaHashcat-plus32.bin vclHashcat-plus64.bin vclHashcat-plus32.bin
do
if [ -f "${ED}"/opt/${PN}/${x} ]
then
case "${x}" in
oclHashcat-plus64.bin)
echo "echo '64 bit ATI accelerated \"oclHashcat-plus64.bin\"'" >> "${ED}"/opt/bin/oclhashcat-plus
;;
oclHashcat-plus32.bin)
echo "echo '32 bit ATI accelerated \"oclHashcat-plus32.bin\"'" >> "${ED}"/opt/bin/oclhashcat-plus
;;
cudaHashcat-plus64.bin)
echo "echo '64 bit NVIDIA accelerated \"cudaHashcat-plus64.bin\"'" >> "${ED}"/opt/bin/oclhashcat-plus
;;
cudaHashcat-plus32.bin)
echo "echo '32 bit NVIDIA accelerated \"cudaHashcat-plus32.bin\"'" >> "${ED}"/opt/bin/oclhashcat-plus
;;
vclHashcat-plus64.bin)
echo "echo '64 bit VirtualCL Cluster support \"vclHashcat-plus64.bin\"'" >> "${ED}"/opt/bin/oclhashcat-plus
;;
vclHashcat-plus32.bin)
echo "echo '32 bit VirtualCL Cluster support \"vclHashcat-plus32.bin\"'" >> "${ED}"/opt/bin/oclhashcat-plus
;;
esac
fperms +x /opt/${PN}/${x}
cat <<-EOF > "${ED}"/opt/bin/${x}
#! /bin/sh
cd /opt/${PN}
echo "Warning: ${x} is running from /opt/${PN} so be careful of relative paths."
exec ./${x} "\$@"
EOF
fperms +x /opt/bin/${x}
fi
done
fperms +x /opt/bin/oclhashcat-plus
fowners -R root:video /opt/${PN}
fperms g+w /opt/${PN}
einfo "oclhashcat-plus can be run as user if you are in the video group"
}
pkg_preinst() {
#I feel so dirty doing this
#first we remove the eula.accepted because it cannot properly handle and empty or old one (crash or doesn't run at all)
rm -f "${EROOT}"/opt/${PN}/eula.accepted
#next we remove any compiled kernel files as these get built on first run only if they aren't there because there are no timestamp checks
rm -f "${EROOT}"/opt/${PN}/kernels/{4318,4098}/"*.kernel"
#have mercy on my soul
}
|