forked from pmittaldev/john-the-ripper
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbest.sh
executable file
·131 lines (106 loc) · 2.58 KB
/
best.sh
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
#!/bin/sh
#
# This file is part of John the Ripper password cracker,
# Copyright (c) 1996-2000,2003,2005,2008,2011 by Solar Designer
#
[ $# -eq 5 ] || exit 1
MAKE=$1
DES_DEPEND=$2
DES_BS_DEPEND=$3
MD5_DEPEND=$4
BF_DEPEND=$5
# Detect the best non-bitslice DES algorithm
MAX=0
DES_BEST=1
for MODE in 1 2 3 4 5; do
if ./detect $MODE 1 0 0 0 0 0 > arch.h; then
rm -f $DES_DEPEND bench
echo "Compiling: DES benchmark (code version #$MODE)"
$MAKE bench || exit 1
RES=`./bench 1` || exit 1
if [ $RES -gt $MAX ]; then
MAX=$RES
DES_BEST=$MODE
fi
fi
done
./detect $DES_BEST 0 0 0 0 0 0 > arch.h
rm -f $DES_DEPEND bench
echo "Compiling: DES benchmark (code version #$DES_BEST, no key copying)"
$MAKE bench || exit 1
RES=`./bench 1` || exit 1
if [ $RES -gt $MAX ]; then
MAX=$RES
DES_COPY=0
else
DES_COPY=1
fi
# Check if bitslice DES is faster
DES_BS=0
rm -f $DES_DEPEND bench
for MODE in 1 2 3; do
if ./detect $DES_BEST $DES_COPY $MODE 0 0 0 0 > arch.h; then
echo "Compiling: DES benchmark (bitslice, code version #$MODE)"
if [ $MODE -gt 1 ]; then
rm -f $DES_BS_DEPEND bench
fi
$MAKE bench || exit 1
RES=`./bench 1` || exit 1
if [ $RES -gt $MAX ]; then
MAX=$RES
DES_BS=$MODE
fi
fi
done
# Detect the best MD5 algorithm
MAX=`./bench 2` || exit 1
./detect $DES_BEST $DES_COPY $DES_BS 1 0 0 0 > arch.h
rm -f $MD5_DEPEND bench
echo "Compiling: MD5 benchmark (two hashes at a time)"
$MAKE bench || exit 1
RES=`./bench 2` || exit 1
if [ $RES -gt $MAX ]; then
MAX=$RES
MD5_X2=1
else
MD5_X2=0
fi
./detect $DES_BEST $DES_COPY $DES_BS $MD5_X2 1 0 0 > arch.h
rm -f $MD5_DEPEND bench
echo "Compiling: MD5 benchmark (immediate values)"
$MAKE bench || exit 1
RES=`./bench 2` || exit 1
if [ $RES -gt $MAX ]; then
MD5_IMM=1
else
MD5_IMM=0
fi
# Detect the best Blowfish algorithm
MAX=`./bench 3` || exit 1
./detect $DES_BEST $DES_COPY $DES_BS $MD5_X2 $MD5_IMM 1 0 > arch.h
rm -f $BF_DEPEND bench
echo "Compiling: Blowfish benchmark (scale)"
$MAKE bench || exit 1
RES=`./bench 3` || exit 1
if [ $RES -gt $MAX ]; then
MAX=$RES
BF_SCALE=1
else
BF_SCALE=0
fi
./detect $DES_BEST $DES_COPY $DES_BS $MD5_X2 $MD5_IMM $BF_SCALE 1 > arch.h
rm -f $BF_DEPEND bench
echo "Compiling: Blowfish benchmark (two hashes at a time)"
$MAKE bench || exit 1
RES=`./bench 3` || exit 1
if [ $RES -gt $MAX ]; then
BF_X2=1
else
BF_X2=0
fi
# Produce generic.h, make sure everything is rebuilt with detected options,
# and do some cleanup
./detect $DES_BEST $DES_COPY $DES_BS $MD5_X2 $MD5_IMM $BF_SCALE $BF_X2 \
> generic.h
rm -f $DES_DEPEND $DES_BS_DEPEND $MD5_DEPEND $BF_DEPEND \
bench detect best.o detect.o arch.h