1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-22 16:18:09 +00:00

Run test.sh through shellcheck

It uses a lot of bashisms. Cannot be used with /bin/sh.
This commit is contained in:
Rosen Penev 2019-08-03 23:43:15 -07:00
parent f3a3d5aed9
commit 9ac0365259
No known key found for this signature in database
GPG Key ID: 36D31CFA845F0E3B

View File

@ -26,14 +26,14 @@ LUKS_MODE="14600"
# missing hash types: 5200 # missing hash types: 5200
HASH_TYPES=$(ls ${TDIR}/test_modules/*.pm | sed -E 's/.*m0*([0-9]+).pm/\1/') HASH_TYPES=$(ls "${TDIR}/test_modules/*.pm" | sed -E 's/.*m0*([0-9]+).pm/\1/')
HASH_TYPES="${HASH_TYPES} ${TC_MODES} ${VC_MODES} ${LUKS_MODE}" HASH_TYPES="${HASH_TYPES} ${TC_MODES} ${VC_MODES} ${LUKS_MODE}"
HASH_TYPES="$(echo -n ${HASH_TYPES} | tr ' ' '\n' | sort -u -n | tr '\n' ' ')" HASH_TYPES=$(echo -n "${HASH_TYPES}" | tr ' ' '\n' | sort -u -n | tr '\n' ' ')
VECTOR_WIDTHS="1 2 4 8 16" VECTOR_WIDTHS="1 2 4 8 16"
HASHFILE_ONLY=$(grep -l OPTS_TYPE_BINARY_HASHFILE ${TDIR}/../src/modules/module_*.c | sed -E 's/.*module_0*([0-9]+).c/\1/' | tr '\n' ' ') HASHFILE_ONLY=$(grep -l OPTS_TYPE_BINARY_HASHFILE "${TDIR}/../src/modules/module_*.c" | sed -E 's/.*module_0*([0-9]+).c/\1/' | tr '\n' ' ')
SLOW_ALGOS=$(grep -l ATTACK_EXEC_OUTSIDE_KERNEL ${TDIR}/../src/modules/module_*.c | sed -E 's/.*module_0*([0-9]+).c/\1/' | tr '\n' ' ') SLOW_ALGOS=$(grep -l ATTACK_EXEC_OUTSIDE_KERNEL "${TDIR}/../src/modules/module_*.c" | sed -E 's/.*module_0*([0-9]+).c/\1/' | tr '\n' ' ')
OUTD="test_$(date +%s)" OUTD="test_$(date +%s)"
@ -165,13 +165,13 @@ function init()
fi fi
rm -rf ${OUTD}/${hash_type}.sh ${OUTD}/${hash_type}_passwords.txt ${OUTD}/${hash_type}_hashes.txt rm -rf "${OUTD}/${hash_type}.sh" "${OUTD}/${hash_type}_passwords.txt" "${OUTD}/${hash_type}_hashes.txt"
# Exclude TrueCrypt and VeraCrypt testing modes # Exclude TrueCrypt and VeraCrypt testing modes
if is_in_array ${hash_type} ${TC_MODES}; then if is_in_array "${hash_type}" "${TC_MODES}"; then
return 0 return 0
fi fi
if is_in_array ${hash_type} ${VC_MODES}; then if is_in_array "${hash_type} ${VC_MODES}"; then
return 0 return 0
fi fi
@ -189,7 +189,7 @@ function init()
luks_tests="hashcat_luks_testfiles.7z" luks_tests="hashcat_luks_testfiles.7z"
luks_tests_url="https://hashcat.net/misc/example_hashes/${luks_tests}" luks_tests_url="https://hashcat.net/misc/example_hashes/${luks_tests}"
cd ${TDIR} cd "${TDIR}" || exit
# if the file already exists, but was not successfully extracted, we assume it's a broken # if the file already exists, but was not successfully extracted, we assume it's a broken
# downloaded file and therefore it should be deleted # downloaded file and therefore it should be deleted
@ -221,7 +221,7 @@ function init()
# cleanup: # cleanup:
rm -f "${luks_tests}" rm -f "${luks_tests}"
cd - >/dev/null cd - >/dev/null || exit
# just to be very sure, check again that (one of) the files now exist: # just to be very sure, check again that (one of) the files now exist:
@ -245,7 +245,7 @@ function init()
if [ "${hash_type}" -eq 10300 ]; then if [ "${hash_type}" -eq 10300 ]; then
#cat ${OUTD}/${hash_type}.sh | cut -d' ' -f11- | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes.txt #cat ${OUTD}/${hash_type}.sh | cut -d' ' -f11- | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes.txt
cat ${OUTD}/${hash_type}.sh | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes.txt cut -d"'" -f2 ${OUTD}/${hash_type}.sh > ${OUTD}/${hash_type}_hashes.txt
fi fi
# truncate dicts # truncate dicts
@ -279,7 +279,7 @@ function init()
i=1 i=1
while read -u 9 pass; do while read -r -u 9 pass; do
if [ ${i} -gt ${min} ]; then if [ ${i} -gt ${min} ]; then
@ -293,8 +293,8 @@ function init()
if [ "${pass_len}" -gt 1 ] if [ "${pass_len}" -gt 1 ]
then then
p1=$((p1 + ${min_offset})) p1=$((p1 + min_offset))
p0=$((p0 + ${min_offset})) p0=$((p0 + min_offset))
if [ "${p1}" -gt ${pass_len} ]; then if [ "${p1}" -gt ${pass_len} ]; then
@ -354,17 +354,17 @@ function init()
if [ "${hash_type}" -eq 10300 ]; then if [ "${hash_type}" -eq 10300 ]; then
#cat ${OUTD}/${hash_type}_multi_${i}.txt | cut -d' ' -f11- | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes_multi_${i}.txt #cat ${OUTD}/${hash_type}_multi_${i}.txt | cut -d' ' -f11- | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes_multi_${i}.txt
cat ${OUTD}/${hash_type}_multi_${i}.txt | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes_multi_${i}.txt cut -d"'" -f2 ${OUTD}/${hash_type}_multi_${i}.txt > ${OUTD}/${hash_type}_hashes_multi_${i}.txt
fi fi
# split password, 'i' is the len # split password, 'i' is the len
p0=$((i / 2)) p0=$((i / 2))
p1=$((p0 + 1)) p1=$((p0 + 1))
p0=$((p0 + ${min_len})) p0=$((p0 + min_len))
p1=$((p1 + ${min_len})) p1=$((p1 + min_len))
while read -u 9 pass; do while read -r -u 9 pass; do
# add splitted password to dicts # add splitted password to dicts
echo ${pass} | cut -c -${p0} >> ${OUTD}/${hash_type}_dict1_multi_${i} echo ${pass} | cut -c -${p0} >> ${OUTD}/${hash_type}_dict1_multi_${i}
@ -447,7 +447,7 @@ function attack_0()
i=0 i=0
while read -u 9 line; do while read -r -u 9 line; do
if [ "${i}" -ge ${max} ]; then if [ "${i}" -ge ${max} ]; then
@ -478,7 +478,7 @@ function attack_0()
pass=$(echo "${pass}" | cut -b 7-) # skip the first 6 chars pass=$(echo "${pass}" | cut -b 7-) # skip the first 6 chars
fi fi
CMD="echo "${pass}" | ./${BIN} ${OPTS} -a 0 -m ${hash_type} '${hash}'" CMD="echo ${pass} | ./${BIN} ${OPTS} -a 0 -m ${hash_type} '${hash}'"
echo -n "[ len $((i + 1)) ] " >>${OUTD}/logfull.txt 2>>${OUTD}/logfull.txt echo -n "[ len $((i + 1)) ] " >>${OUTD}/logfull.txt 2>>${OUTD}/logfull.txt
@ -516,7 +516,7 @@ function attack_0()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -551,7 +551,7 @@ function attack_0()
hash_file=${temp_file} hash_file=${temp_file}
while read base64_hash; do while read -r base64_hash; do
echo -n ${base64_hash} | base64 -d >> ${temp_file} echo -n ${base64_hash} | base64 -d >> ${temp_file}
@ -561,7 +561,7 @@ function attack_0()
CMD="cat ${OUTD}/${hash_type}_passwords.txt | ./${BIN} ${OPTS} -a 0 -m ${hash_type} ${hash_file}" CMD="cat ${OUTD}/${hash_type}_passwords.txt | ./${BIN} ${OPTS} -a 0 -m ${hash_type} ${hash_file}"
output=$(cat ${OUTD}/${hash_type}_passwords.txt | ./${BIN} ${OPTS} -a 0 -m ${hash_type} ${hash_file} 2>&1) output=$(./${BIN} ${OPTS} -a 0 -m ${hash_type} ${hash_file} < ${OUTD}/${hash_type}_passwords.txt 2>&1)
ret=${?} ret=${?}
@ -571,7 +571,7 @@ function attack_0()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
pass=$(sed -n ${i}p ${OUTD}/${hash_type}_passwords.txt) pass=$(sed -n ${i}p ${OUTD}/${hash_type}_passwords.txt)
@ -601,7 +601,7 @@ function attack_0()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -648,7 +648,7 @@ function attack_1()
echo "> Testing hash type $hash_type with attack mode 1, markov ${MARKOV}, single hash, Device-Type ${TYPE}, vector-width ${VECTOR}." >>${OUTD}/logfull.txt 2>>${OUTD}/logfull.txt echo "> Testing hash type $hash_type with attack mode 1, markov ${MARKOV}, single hash, Device-Type ${TYPE}, vector-width ${VECTOR}." >>${OUTD}/logfull.txt 2>>${OUTD}/logfull.txt
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
if [ $i -gt ${min} ]; then if [ $i -gt ${min} ]; then
@ -663,7 +663,7 @@ function attack_1()
line_nr=1 line_nr=1
if [ "${i}" -gt 1 ]; then if [ "${i}" -gt 1 ]; then
line_nr=$((${i} - 1)) line_nr=$((i - 1))
fi fi
dict1="${OUTD}/${hash_type}_dict1" dict1="${OUTD}/${hash_type}_dict1"
@ -682,10 +682,10 @@ function attack_1()
else else
# we need to also "steal" some chars from the second dict # we need to also "steal" some chars from the second dict
num_to_steal=$((6 - ${#line_dict1})) num_to_steal=$((6 - ${#line_dict1}))
num_steal_start=$((${num_to_steal} + 1)) num_steal_start=$((num_to_steal + 1))
if [ "${#line_dict2}" -ge 6 ]; then if [ "${#line_dict2}" -ge 6 ]; then
num_to_steal_new=$(((${#line_dict2} - ${num_to_steal}) / 2)) num_to_steal_new=$(((${#line_dict2} - num_to_steal) / 2))
if [ "${num_to_steal_new}" -gt ${num_to_steal} ]; then if [ "${num_to_steal_new}" -gt ${num_to_steal} ]; then
num_to_steal=${num_to_steal_new} num_to_steal=${num_to_steal_new}
@ -695,24 +695,24 @@ function attack_1()
line_chars_stolen=$(echo "${line_dict2}" | cut -b -${num_to_steal} | cut -b ${num_steal_start}-) line_chars_stolen=$(echo "${line_dict2}" | cut -b -${num_to_steal} | cut -b ${num_steal_start}-)
line_dict1="${line_chars_stolen}" line_dict1="${line_chars_stolen}"
line_dict2=$(echo "${line_dict2}" | cut -b $((${num_to_steal} + 1))-) line_dict2=$(echo "${line_dict2}" | cut -b $((num_to_steal + 1))-)
fi fi
# finally, modify the dicts accordingly: # finally, modify the dicts accordingly:
tmp_file="${dict1}_mod" tmp_file="${dict1}_mod"
head -n $((${line_nr} - 1)) ${dict1} > ${tmp_file} head -n $((line_nr - 1)) ${dict1} > ${tmp_file}
echo "${line_dict1}" >> ${tmp_file} echo "${line_dict1}" >> ${tmp_file}
tail -n $((${line_num} - ${line_nr} - 1)) ${dict1} >> ${tmp_file} tail -n $((line_num - line_nr - 1)) ${dict1} >> ${tmp_file}
dict1=${tmp_file} dict1=${tmp_file}
tmp_file="${dict2}_mod" tmp_file="${dict2}_mod"
head -n $((${line_nr} - 1)) ${dict2} > ${tmp_file} head -n $((line_nr - 1)) ${dict2} > ${tmp_file}
echo "${line_dict2}" >> ${tmp_file} echo "${line_dict2}" >> ${tmp_file}
tail -n $((${line_num} - ${line_nr} - 1)) ${dict2} >> ${tmp_file} tail -n $((line_num - line_nr - 1)) ${dict2} >> ${tmp_file}
dict2=${tmp_file} dict2=${tmp_file}
fi fi
@ -758,7 +758,7 @@ function attack_1()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -813,7 +813,7 @@ function attack_1()
hash_file=${temp_file} hash_file=${temp_file}
while read base64_hash; do while read -r base64_hash; do
echo -n ${base64_hash} | base64 -d >> ${temp_file} echo -n ${base64_hash} | base64 -d >> ${temp_file}
@ -835,12 +835,12 @@ function attack_1()
i=0 i=0
while read -u 9 hash; do while read -r -u 9 hash; do
line_nr=1 line_nr=1
if [ "${offset}" -gt ${i} ]; then if [ "${offset}" -gt ${i} ]; then
line_nr=$((${offset} - ${i})) line_nr=$((offset - i))
fi fi
line_dict1=$(tail -n ${line_nr} ${OUTD}/${hash_type}_dict1 | head -1) line_dict1=$(tail -n ${line_nr} ${OUTD}/${hash_type}_dict1 | head -1)
@ -872,7 +872,7 @@ function attack_1()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -927,7 +927,7 @@ function attack_3()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
if [ "${i}" -gt 6 ]; then if [ "${i}" -gt 6 ]; then
@ -961,7 +961,7 @@ function attack_3()
continue continue
fi fi
pass_part_2=$(echo -n ${pass} | cut -b $((${i} + 1))-) pass_part_2=$(echo -n ${pass} | cut -b $((i + 1))-)
mask="" mask=""
@ -989,7 +989,7 @@ function attack_3()
continue continue
fi fi
cut_pos=$((${i} * 2 + 6 - ${i} + 1)) # skip it in groups of 2 ("?d"), at least 6, offset +1 for cut to work cut_pos=$((i * 2 + 6 - i + 1)) # skip it in groups of 2 ("?d"), at least 6, offset +1 for cut to work
if [ "${i}" -gt 6 ]; then if [ "${i}" -gt 6 ]; then
cut_pos=13 # 6 * ?d + 1 (6 * 2 + 1) cut_pos=13 # 6 * ?d + 1 (6 * 2 + 1)
@ -1038,7 +1038,7 @@ function attack_3()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -1101,7 +1101,7 @@ function attack_3()
hash_file=${temp_file} hash_file=${temp_file}
while read base64_hash; do while read -r base64_hash; do
echo -n ${base64_hash} | base64 -d >> ${temp_file} echo -n ${base64_hash} | base64 -d >> ${temp_file}
@ -1149,12 +1149,12 @@ function attack_3()
cracks_offset=0 cracks_offset=0
if [ ${need_hcmask} -eq 0 ]; then if [ ${need_hcmask} -eq 0 ]; then
cracks_offset=$((${head_hashes} - ${tail_hashes})) cracks_offset=$((head_hashes - tail_hashes))
mask=${mask_3[${mask_pos}]} mask=${mask_3[${mask_pos}]}
else else
num_hashes=$(cat ${OUTD}/${hash_type}_hashes.txt | wc -l) num_hashes=$(wc -l < ${OUTD}/${hash_type}_hashes.txt)
cracks_offset=$((${num_hashes} - ${tail_hashes})) cracks_offset=$((num_hashes - tail_hashes))
mask=${OUTD}/${hash_type}_passwords.txt # fake hcmask file (i.e. the original dict) mask=${OUTD}/${hash_type}_passwords.txt # fake hcmask file (i.e. the original dict)
fi fi
@ -1188,25 +1188,25 @@ function attack_3()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
pass=$(sed -n ${i}p ${OUTD}/${hash_type}_passwords.txt) pass=$(sed -n ${i}p ${OUTD}/${hash_type}_passwords.txt)
# charset 1 # charset 1
char=$(echo "${pass}" | cut -b ${charset_1_pos}) char=$(echo "${pass}" | cut -b ${charset_1_pos})
charset_1=$(echo -e "${charset_1}\n${char}") charset_1=$(printf "%s\n%s\n" "${charset_1}" "${char}")
# charset 2 # charset 2
char=$(echo "${pass}" | cut -b ${charset_2_pos}) char=$(echo "${pass}" | cut -b ${charset_2_pos})
charset_2=$(echo -e "${charset_2}\n${char}") charset_2=$(printf "%s\n%s\n" "${charset_2}" "${char}")
# charset 3 # charset 3
char=$(echo "${pass}" | cut -b ${charset_3_pos}) char=$(echo "${pass}" | cut -b ${charset_3_pos})
charset_3=$(echo -e "${charset_3}\n${char}") charset_3=$(printf "%s\n%s\n" "${charset_3}" "${char}")
# charset 4 # charset 4
char=$(echo "${pass}" | cut -b ${charset_4_pos}) char=$(echo "${pass}" | cut -b ${charset_4_pos})
charset_4=$(echo -e "${charset_4}\n${char}") charset_4=$(printf "%s\n%s\n" "${charset_4}" "${char}")
i=$((i + 1)) i=$((i + 1))
@ -1273,7 +1273,7 @@ function attack_3()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
pass=$(sed -n ${i}p ${OUTD}/${hash_type}_passwords.txt) pass=$(sed -n ${i}p ${OUTD}/${hash_type}_passwords.txt)
@ -1357,8 +1357,8 @@ function attack_3()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
line_nr=$((${i} + ${cracks_offset})) line_nr=$((i + cracks_offset))
pass=$(sed -n ${line_nr}p ${OUTD}/${hash_type}_passwords.txt) pass=$(sed -n ${line_nr}p ${OUTD}/${hash_type}_passwords.txt)
@ -1388,7 +1388,7 @@ function attack_3()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -1458,21 +1458,21 @@ function attack_6()
pass="${pass_part_1}${pass_part_2}" pass="${pass_part_1}${pass_part_2}"
echo -n ${pass} | cut -b -$((${mask_offset} + 0)) > ${OUTD}/${hash_type}_dict1_custom echo -n ${pass} | cut -b -$((mask_offset + 0)) > ${OUTD}/${hash_type}_dict1_custom
echo -n ${pass} | cut -b $((${mask_offset} + 1))- > ${OUTD}/${hash_type}_dict2_custom echo -n ${pass} | cut -b $((mask_offset + 1))- > ${OUTD}/${hash_type}_dict2_custom
mask_custom="" mask_custom=""
for i in $(seq 1 $((${#pass} - ${mask_offset}))); do for i in $(seq 1 $((${#pass} - mask_offset))); do
if [ "${hash_type}" -eq 14000 ]; then if [ "${hash_type}" -eq 14000 ]; then
char=$(echo -n ${pass} | cut -b $((${i} + ${mask_offset}))) char=$(echo -n ${pass} | cut -b $((i + mask_offset)))
mask_custom="${mask_custom}${char}" mask_custom="${mask_custom}${char}"
elif [ "${hash_type}" -eq 14100 ]; then elif [ "${hash_type}" -eq 14100 ]; then
char=$(echo -n ${pass} | cut -b $((${i} + ${mask_offset}))) char=$(echo -n ${pass} | cut -b $((i + mask_offset)))
mask_custom="${mask_custom}${char}" mask_custom="${mask_custom}${char}"
else else
@ -1488,7 +1488,7 @@ function attack_6()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
if [ "${i}" -gt 6 ]; then if [ "${i}" -gt 6 ]; then
@ -1528,7 +1528,7 @@ function attack_6()
continue continue
fi fi
echo ${pass} | cut -b -$((${#pass} - ${i})) >> ${dict1_a6} echo ${pass} | cut -b -$((${#pass} - i)) >> ${dict1_a6}
# the block below is just a fancy way to do a "shuf" (or sort -R) because macOS doesn't really support it natively # the block below is just a fancy way to do a "shuf" (or sort -R) because macOS doesn't really support it natively
# we do not really need a shuf, but it's actually better for testing purposes # we do not really need a shuf, but it's actually better for testing purposes
@ -1541,8 +1541,8 @@ function attack_6()
for lines in $(seq 1 ${line_num}); do for lines in $(seq 1 ${line_num}); do
random_num=$((${RANDOM} % ${line_num})) random_num=$((RANDOM % line_num))
random_num=$((${random_num} + 1)) # sed -n [n]p starts counting with 1 (not 0) random_num=$((random_num + 1)) # sed -n [n]p starts counting with 1 (not 0)
random_line=$(echo -n "${sorted_lines}" | sed -n ${random_num}p) random_line=$(echo -n "${sorted_lines}" | sed -n ${random_num}p)
@ -1552,7 +1552,7 @@ function attack_6()
sorted_lines=$(echo -n "${sorted_lines}" | grep -v "^${random_line}$") sorted_lines=$(echo -n "${sorted_lines}" | grep -v "^${random_line}$")
line_num=$((${line_num} - 1)) line_num=$((line_num - 1))
done done
@ -1582,7 +1582,7 @@ function attack_6()
line_nr=1 line_nr=1
if [ "${i}" -gt 1 ]; then if [ "${i}" -gt 1 ]; then
line_nr=$((${i} - 1)) line_nr=$((i - 1))
fi fi
line_dict1=$(sed -n ${line_nr}p ${dict1}) line_dict1=$(sed -n ${line_nr}p ${dict1})
@ -1616,7 +1616,7 @@ function attack_6()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -1679,7 +1679,7 @@ function attack_6()
fi fi
for ((i = 2; i < ${max}; i++)); do for ((i = 2; i < max; i++)); do
hash_file=${OUTD}/${hash_type}_hashes_multi_${i}.txt hash_file=${OUTD}/${hash_type}_hashes_multi_${i}.txt
@ -1692,7 +1692,7 @@ function attack_6()
hash_file=${temp_file} hash_file=${temp_file}
while read base64_hash; do while read -r base64_hash; do
echo -n ${base64_hash} | base64 -d >> ${temp_file} echo -n ${base64_hash} | base64 -d >> ${temp_file}
@ -1716,7 +1716,7 @@ function attack_6()
j=1 j=1
while read -u 9 hash; do while read -r -u 9 hash; do
line_dict1=$(sed -n ${j}p ${OUTD}/${hash_type}_dict1_multi_${i}) line_dict1=$(sed -n ${j}p ${OUTD}/${hash_type}_dict1_multi_${i})
line_dict2=$(sed -n ${j}p ${OUTD}/${hash_type}_dict2_multi_${i}) line_dict2=$(sed -n ${j}p ${OUTD}/${hash_type}_dict2_multi_${i})
@ -1749,7 +1749,7 @@ function attack_6()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -1820,8 +1820,8 @@ function attack_7()
pass="${pass_part_1}${pass_part_2}" pass="${pass_part_1}${pass_part_2}"
echo -n ${pass} | cut -b -$((${mask_offset} + 0)) > ${OUTD}/${hash_type}_dict1_custom echo -n ${pass} | cut -b -$((mask_offset + 0)) > ${OUTD}/${hash_type}_dict1_custom
echo -n ${pass} | cut -b $((${mask_offset} + 1))- > ${OUTD}/${hash_type}_dict2_custom echo -n ${pass} | cut -b $((mask_offset + 1))- > ${OUTD}/${hash_type}_dict2_custom
mask_custom="" mask_custom=""
@ -1849,7 +1849,7 @@ function attack_7()
i=1 i=1
while read -u 9 hash; do while read -r -u 9 hash; do
if [ ${i} -gt ${min} ]; then if [ ${i} -gt ${min} ]; then
@ -1868,7 +1868,7 @@ function attack_7()
line_nr=1 line_nr=1
if [ "${i}" -gt 1 ]; then if [ "${i}" -gt 1 ]; then
line_nr=$((${i} - 1)) line_nr=$((i - 1))
fi fi
if [ "${hash_type}" -eq 2500 ]; then if [ "${hash_type}" -eq 2500 ]; then
@ -1887,7 +1887,7 @@ function attack_7()
mask_len=${#mask} mask_len=${#mask}
mask_len=$((mask_len / 2)) mask_len=$((mask_len / 2))
mask_prefix=$(echo ${pass} | cut -b -$((pass_len - ${mask_len} - ${pass_part_2_len}))) mask_prefix=$(echo ${pass} | cut -b -$((pass_len - mask_len - pass_part_2_len)))
mask=${mask_prefix}${mask} mask=${mask_prefix}${mask}
fi fi
@ -1907,7 +1907,7 @@ function attack_7()
mask_len=${#mask} mask_len=${#mask}
mask_len=$((mask_len / 2)) mask_len=$((mask_len / 2))
mask_prefix=$(echo ${pass} | cut -b -$((pass_len - ${mask_len} - ${pass_part_2_len}))) mask_prefix=$(echo ${pass} | cut -b -$((pass_len - mask_len - pass_part_2_len)))
mask=${mask_prefix}${mask} mask=${mask_prefix}${mask}
fi fi
@ -1932,8 +1932,8 @@ function attack_7()
mask_len=$((${#mask} / 2)) mask_len=$((${#mask} / 2))
echo "${pass_old}" | cut -b -$((6 + ${mask_len})) > ${OUTD}/${hash_type}_dict1_custom echo "${pass_old}" | cut -b -$((6 + mask_len)) > ${OUTD}/${hash_type}_dict1_custom
echo "${pass}" | cut -b $((${mask_len} + 1))- > ${OUTD}/${hash_type}_dict2_custom echo "${pass}" | cut -b $((mask_len + 1))- > ${OUTD}/${hash_type}_dict2_custom
min=0 # hack to use the custom dict min=0 # hack to use the custom dict
mask_custom=${mask} mask_custom=${mask}
@ -1965,7 +1965,7 @@ function attack_7()
line_nr=1 line_nr=1
if [ "${i}" -gt 1 ]; then if [ "${i}" -gt 1 ]; then
line_nr=$((${i} - 1)) line_nr=$((i - 1))
fi fi
line_dict1=$(sed -n ${line_nr}p ${dict1}) line_dict1=$(sed -n ${line_nr}p ${dict1})
@ -1999,7 +1999,7 @@ function attack_7()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -2070,7 +2070,7 @@ function attack_7()
fi fi
for ((i = 2; i < ${max}; i++)); do for ((i = 2; i < max; i++)); do
hash_file=${OUTD}/${hash_type}_hashes_multi_${i}.txt hash_file=${OUTD}/${hash_type}_hashes_multi_${i}.txt
dict_file=${OUTD}/${hash_type}_dict2_multi_${i} dict_file=${OUTD}/${hash_type}_dict2_multi_${i}
@ -2086,7 +2086,7 @@ function attack_7()
hash_file=${temp_file} hash_file=${temp_file}
while read base64_hash; do while read -r base64_hash; do
echo -n ${base64_hash} | base64 -d >> ${temp_file} echo -n ${base64_hash} | base64 -d >> ${temp_file}
@ -2103,7 +2103,7 @@ function attack_7()
j=1 j=1
while read -u 9 hash; do while read -r -u 9 hash; do
pass_part_1=$(sed -n ${j}p ${OUTD}/${hash_type}_dict1_multi_${i}) pass_part_1=$(sed -n ${j}p ${OUTD}/${hash_type}_dict1_multi_${i})
pass_part_2=$(sed -n ${j}p ${OUTD}/${hash_type}_dict2_multi_${i}) pass_part_2=$(sed -n ${j}p ${OUTD}/${hash_type}_dict2_multi_${i})
@ -2134,7 +2134,7 @@ function attack_7()
j=1 j=1
while read -u 9 hash; do while read -r -u 9 hash; do
line_dict1=$(sed -n ${j}p ${OUTD}/${hash_type}_dict1_multi_${i}) line_dict1=$(sed -n ${j}p ${OUTD}/${hash_type}_dict1_multi_${i})
line_dict2=$(sed -n ${j}p ${OUTD}/${hash_type}_dict2_multi_${i}) line_dict2=$(sed -n ${j}p ${OUTD}/${hash_type}_dict2_multi_${i})
@ -2167,7 +2167,7 @@ function attack_7()
msg="OK" msg="OK"
if [ "${e_nf}" -ne 0 -o "${e_nm}" -ne 0 ]; then if [ "${e_nf}" -ne 0 ] || [ "${e_nm}" -ne 0 ]; then
msg="Error" msg="Error"
@ -2515,7 +2515,7 @@ function luks_test()
;; ;;
1) 1)
luks_pass_part1_len=$((${#LUKS_PASSWORD} / 2)) luks_pass_part1_len=$((${#LUKS_PASSWORD} / 2))
luks_pass_part2_start=$((${luks_pass_part1_len} + 1)) luks_pass_part2_start=$((luks_pass_part1_len + 1))
echo "${LUKS_PASSWORD}" | cut -c-${luks_pass_part1_len} > "${luks_pass_part_file1}" echo "${LUKS_PASSWORD}" | cut -c-${luks_pass_part1_len} > "${luks_pass_part_file1}"
echo "${LUKS_PASSWORD}" | cut -c${luks_pass_part2_start}- > "${luks_pass_part_file2}" echo "${LUKS_PASSWORD}" | cut -c${luks_pass_part2_start}- > "${luks_pass_part_file2}"
@ -2654,17 +2654,17 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
case ${opt} in case ${opt} in
"V") "V")
if [ ${OPTARG} == "1" ]; then if [ ${OPTARG} = "1" ]; then
VECTOR=1 VECTOR=1
elif [ ${OPTARG} == "2" ]; then elif [ ${OPTARG} = "2" ]; then
VECTOR=2 VECTOR=2
elif [ ${OPTARG} == "4" ]; then elif [ ${OPTARG} = "4" ]; then
VECTOR=4 VECTOR=4
elif [ ${OPTARG} == "8" ]; then elif [ ${OPTARG} = "8" ]; then
VECTOR=8 VECTOR=8
elif [ ${OPTARG} == "16" ]; then elif [ ${OPTARG} = "16" ]; then
VECTOR=16 VECTOR=16
elif [ ${OPTARG} == "all" ]; then elif [ ${OPTARG} = "all" ]; then
VECTOR="all" VECTOR="all"
else else
usage usage
@ -2672,11 +2672,11 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
;; ;;
"t") "t")
if [ ${OPTARG} == "single" ]; then if [ ${OPTARG} = "single" ]; then
MODE=0 MODE=0
elif [ ${OPTARG} == "multi" ]; then elif [ ${OPTARG} = "multi" ]; then
MODE=1 MODE=1
elif [ ${OPTARG} == "all" ]; then elif [ ${OPTARG} = "all" ]; then
MODE=2 MODE=2
else else
usage usage
@ -2684,7 +2684,7 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
;; ;;
"m") "m")
if [ ${OPTARG} == "all" ]; then if [ ${OPTARG} = "all" ]; then
HT=65535 HT=65535
else else
HT=${OPTARG} HT=${OPTARG}
@ -2692,17 +2692,17 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
;; ;;
"a") "a")
if [ ${OPTARG} == "all" ]; then if [ ${OPTARG} = "all" ]; then
ATTACK=65535 ATTACK=65535
elif [ ${OPTARG} == "0" ]; then elif [ ${OPTARG} = "0" ]; then
ATTACK=0 ATTACK=0
elif [ ${OPTARG} == "1" ]; then elif [ ${OPTARG} = "1" ]; then
ATTACK=1 ATTACK=1
elif [ ${OPTARG} == "3" ]; then elif [ ${OPTARG} = "3" ]; then
ATTACK=3 ATTACK=3
elif [ ${OPTARG} == "6" ]; then elif [ ${OPTARG} = "6" ]; then
ATTACK=6 ATTACK=6
elif [ ${OPTARG} == "7" ]; then elif [ ${OPTARG} = "7" ]; then
ATTACK=7 ATTACK=7
else else
usage usage
@ -2727,9 +2727,9 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
;; ;;
"x") "x")
if [ ${OPTARG} == "32" ]; then if [ ${OPTARG} = "32" ]; then
ARCHITECTURE=32 ARCHITECTURE=32
elif [ ${OPTARG} == "64" ]; then elif [ ${OPTARG} = "64" ]; then
ARCHITECTURE=64 ARCHITECTURE=64
else else
usage usage
@ -2737,11 +2737,11 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
;; ;;
"o") "o")
if [ ${OPTARG} == "win" ]; then if [ ${OPTARG} = "win" ]; then
EXTENSION="exe" EXTENSION="exe"
elif [ ${OPTARG} == "linux" ]; then elif [ ${OPTARG} = "linux" ]; then
EXTENSION="bin" EXTENSION="bin"
elif [ ${OPTARG} == "macos" ]; then elif [ ${OPTARG} = "macos" ]; then
EXTENSION="app" EXTENSION="app"
else else
usage usage
@ -2757,10 +2757,10 @@ while getopts "V:t:m:a:b:hcpd:x:o:d:D:F:POI:s:" opt; do
;; ;;
"D") "D")
if [ ${OPTARG} == "1" ]; then if [ ${OPTARG} = "1" ]; then
OPTS="${OPTS} -D 1" OPTS="${OPTS} -D 1"
TYPE="Cpu" TYPE="Cpu"
elif [ ${OPTARG} == "2" ]; then elif [ ${OPTARG} = "2" ]; then
OPTS="${OPTS} -D 2" OPTS="${OPTS} -D 2"
TYPE="Gpu" TYPE="Gpu"
else else
@ -2794,7 +2794,7 @@ if [ "${OPTIMIZED}" -eq 1 ]; then
OPTS="${OPTS} -O" OPTS="${OPTS} -O"
fi fi
if [ "${TYPE}" == "null" ]; then if [ "${TYPE}" = "null" ]; then
OPTS="${OPTS} -D 2" OPTS="${OPTS} -D 2"
TYPE="Gpu" TYPE="Gpu"
fi fi
@ -2827,7 +2827,7 @@ if [ -n "${PACKAGE_FOLDER}" ]; then
fi fi
if [ "${PACKAGE}" -eq 0 -o -z "${PACKAGE_FOLDER}" ]; then if [ "${PACKAGE}" -eq 0 ] || [ -z "${PACKAGE_FOLDER}" ]; then
# check existence of binary # check existence of binary
if [ ! -e "${BIN}" ]; then if [ ! -e "${BIN}" ]; then
@ -2923,7 +2923,7 @@ if [ "${PACKAGE}" -eq 0 -o -z "${PACKAGE_FOLDER}" ]; then
# for these particular algos we need to save the output to a temporary file # for these particular algos we need to save the output to a temporary file
IFS=';' read -ra FILE_BASED_ALGOS <<< "${HASHFILE_ONLY}" IFS=';' read -ra FILE_BASED_ALGOS <<< "${HASHFILE_ONLY}"
for hash_type in $(echo $HASH_TYPES); do for hash_type in $HASH_TYPES; do
if [ "${HT}" -ne 65535 ]; then if [ "${HT}" -ne 65535 ]; then
@ -2972,11 +2972,11 @@ if [ "${PACKAGE}" -eq 0 -o -z "${PACKAGE_FOLDER}" ]; then
MODE=0 # force single only MODE=0 # force single only
fi fi
for CUR_WIDTH in $(echo $VECTOR_WIDTHS); do for CUR_WIDTH in $VECTOR_WIDTHS; do
if [ "${VECTOR_OLD}" == "all" ] || [ "${VECTOR_OLD}" == "default" ] || [ "${VECTOR_OLD}" == "${CUR_WIDTH}" ]; then if [ "${VECTOR_OLD}" = "all" ] || [ "${VECTOR_OLD}" = "default" ] || [ "${VECTOR_OLD}" = "${CUR_WIDTH}" ]; then
if [ "${VECTOR_OLD}" == "default" ] && \ if [ "${VECTOR_OLD}" = "default" ] && \
[ "${CUR_WIDTH}" != "1" ] && \ [ "${CUR_WIDTH}" != "1" ] && \
[ "${CUR_WIDTH}" != "4" ]; then [ "${CUR_WIDTH}" != "4" ]; then
@ -3132,7 +3132,7 @@ if [ "${PACKAGE}" -eq 1 ]; then
UNAME=$(uname -s) UNAME=$(uname -s)
# of course macOS requires us to implement a special case (sed -i "" for the backup file) # of course macOS requires us to implement a special case (sed -i "" for the backup file)
if [ "${UNAME}" == "Darwin" ] ; then if [ "${UNAME}" = "Darwin" ] ; then
SED_IN_PLACE='-i ""' SED_IN_PLACE='-i ""'
fi fi