test.sh first changes

pull/1842/head
jsteube 6 years ago
parent bcbaef3853
commit 813977e419

@ -32,6 +32,8 @@ HASH_TYPES="0 10 11 12 20 21 22 23 30 40 50 60\
16200 16300 16400 16500 16600 16700 16800 16900 17300 17400 17500 17600 17700\ 16200 16300 16400 16500 16600 16700 16800 16900 17300 17400 17500 17600 17700\
17800 17900 18000 18100 18200 18300 18400 18500 18600 99999" 17800 17900 18000 18100 18200 18300 18400 18500 18600 99999"
HASH_TYPES="0 10 11 12 20 21 23 50 60 100 110 120 1000 1500 5600 18400 18500 18600"
VECTOR_WIDTHS="1 2 4 8 16" VECTOR_WIDTHS="1 2 4 8 16"
MATCH_PASS_ONLY="2500 5300 5400 6600 6800 8200" MATCH_PASS_ONLY="2500 5300 5400 6600 6800 8200"
@ -254,11 +256,13 @@ function init()
fi fi
# create list of password and hashes of same type # create list of password and hashes of same type
grep " ${hash_type} '" ${OUTD}/all.sh > ${OUTD}/${hash_type}.sh 2>/dev/null cmd_file=${OUTD}/${hash_type}.sh
grep " ${hash_type} '" ${OUTD}/all.sh > ${cmd_file} 2>/dev/null
# create separate list of password and hashes # create separate list of password and hashes
cat ${OUTD}/${hash_type}.sh | awk '{print $3}' > ${OUTD}/${hash_type}_passwords.txt sed 's/^echo *|.*$//' ${cmd_file} | awk '{print $2}' > ${OUTD}/${hash_type}_passwords.txt
cat ${OUTD}/${hash_type}.sh | awk '{print $11}' | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes.txt sed 's/^echo *|/echo "" |/' ${cmd_file} | awk '{print $10}' | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes.txt
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
@ -320,11 +324,16 @@ function init()
fi fi
# add splitted password to dicts # add splitted password to dicts
echo ${pass} | cut -c -${p0} >> ${OUTD}/${hash_type}_dict1 echo ${pass} | cut -c -${p0} >> ${OUTD}/${hash_type}_dict1
echo ${pass} | cut -c ${p1}- >> ${OUTD}/${hash_type}_dict2 echo ${pass} | cut -c ${p1}- >> ${OUTD}/${hash_type}_dict2
elif [ "${pass_len}" -eq 1 ]; then
echo ${pass} >> ${OUTD}/${hash_type}_dict1
echo >> ${OUTD}/${hash_type}_dict2
else
echo >> ${OUTD}/${hash_type}_dict1
echo >> ${OUTD}/${hash_type}_dict2
fi
fi
fi fi
((i++)) ((i++))
@ -352,14 +361,16 @@ function init()
for ((i = 2; i < 9; i++)); do for ((i = 2; i < 9; i++)); do
rm -rf ${OUTD}/${hash_type}_multi_${i}.txt ${OUTD}/${hash_type}_passwords_multi_${i}.txt ${OUTD}/${hash_type}_hashes_multi_${i}.txt cmd_file=${OUTD}/${hash_type}_multi_${i}.txt
rm -rf ${cmd_file} ${OUTD}/${hash_type}_passwords_multi_${i}.txt ${OUTD}/${hash_type}_hashes_multi_${i}.txt
rm -rf ${OUTD}/${hash_type}_dict1_multi_${i} ${OUTD}/${hash_type}_dict2_multi_${i} rm -rf ${OUTD}/${hash_type}_dict1_multi_${i} ${OUTD}/${hash_type}_dict2_multi_${i}
touch ${OUTD}/${hash_type}_dict1_multi_${i} ${OUTD}/${hash_type}_dict2_multi_${i} touch ${OUTD}/${hash_type}_dict1_multi_${i} ${OUTD}/${hash_type}_dict2_multi_${i}
perl tools/test.pl single ${hash_type} ${i} > ${OUTD}/${hash_type}_multi_${i}.txt perl tools/test.pl single ${hash_type} ${i} > ${cmd_file}
cat ${OUTD}/${hash_type}_multi_${i}.txt | awk '{print $3}' > ${OUTD}/${hash_type}_passwords_multi_${i}.txt sed 's/^echo *|.*$//' ${cmd_file} | awk '{print $2}' > ${OUTD}/${hash_type}_passwords_multi_${i}.txt
cat ${OUTD}/${hash_type}_multi_${i}.txt | awk '{print $11}' | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes_multi_${i}.txt sed 's/^echo *|/echo "" |/' ${cmd_file} | awk '{print $10}' | cut -d"'" -f2 > ${OUTD}/${hash_type}_hashes_multi_${i}.txt
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
@ -463,8 +474,8 @@ function attack_0()
fi fi
hash="$(echo "$line" | cut -d\' -f2)" hash="$(echo "${line}" | cut -d\' -f2)"
pass="$(echo "$line" | cut -d' ' -f3)" pass="$(echo "${line}" | cut -d' ' -f2)"
if [ -z "${hash}" ]; then if [ -z "${hash}" ]; then
@ -480,11 +491,11 @@ function attack_0()
fi fi
CMD="echo -n "${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 echo -n "[ len $((i + 1)) ] " &>> ${OUTD}/logfull.txt
output=$(echo -n "${pass}" | ./${BIN} ${OPTS} -a 0 -m ${hash_type} "${hash}" 2>&1) output=$(echo "${pass}" | ./${BIN} ${OPTS} -a 0 -m ${hash_type} "${hash}" 2>&1)
ret=${?} ret=${?}
@ -873,60 +884,23 @@ function attack_3()
echo "> Testing hash type $hash_type with attack mode 3, markov ${MARKOV}, single hash, Device-Type ${TYPE}, vector-width ${VECTOR}." &>> ${OUTD}/logfull.txt echo "> Testing hash type $hash_type with attack mode 3, markov ${MARKOV}, single hash, Device-Type ${TYPE}, vector-width ${VECTOR}." &>> ${OUTD}/logfull.txt
max=8 max=8
mask_offset=0
# some algos have a minimum password length # some algos have a minimum password length
if [ "${hash_type}" -eq 2500 ]; then if [ "${hash_type}" -eq 2500 ]; then
mask_offset=7
max=7 max=7
elif [ "${hash_type}" -eq 14000 ]; then elif [ "${hash_type}" -eq 14000 ]; then
mask_offset=4
max=1 max=1
elif [ "${hash_type}" -eq 14100 ]; then elif [ "${hash_type}" -eq 14100 ]; then
mask_offset=3
max=1 max=1
elif [ "${hash_type}" -eq 14900 ]; then elif [ "${hash_type}" -eq 14900 ]; then
mask_offset=5
max=1 max=1
elif [ "${hash_type}" -eq 15400 ]; then elif [ "${hash_type}" -eq 15400 ]; then
mask_offset=3
max=1 max=1
elif [ "${hash_type}" -eq 16800 ]; then elif [ "${hash_type}" -eq 16800 ]; then
mask_offset=7
max=7 max=7
fi fi
# special case: we need to split the first line
if [ "${mask_offset}" -ne 0 ]; then
pass=$(sed -n 1p ${OUTD}/${hash_type}_passwords.txt)
pass_part_2=$(echo -n ${pass} | cut -b $((${mask_offset} + 1))-)
mask_custom=""
if [ "${hash_type}" -eq 14000 ]; then
mask_custom="${pass}"
elif [ "${hash_type}" -eq 14100 ]; then
mask_custom="${pass}"
else
for i in $(seq 1 ${mask_offset}); do
mask_custom="${mask_custom}?d"
done
mask_custom="${mask_custom}${pass_part_2}"
fi
fi
i=1 i=1
while read -u 9 hash; do while read -u 9 hash; do
@ -949,57 +923,40 @@ function attack_3()
fi fi
mask=${mask_3[$((i + ${mask_offset}))]}
dict="${OUTD}/${hash_type}_passwords.txt"
# modify "default" mask if needed (and set custom charset to reduce keyspace)
if [ "${hash_type}" -eq 2500 ]; then
pass=$(sed -n ${i}p ${dict})
mask=${pass}
# replace the first x positions in the mask with ?d's # construct a meaningful mask from the password itself:
# first: remove first i (== amount) chars dict="${OUTD}/${hash_type}_passwords.txt"
mask=$(echo ${mask} | cut -b $((i + 1))-)
# prepend the ?d's
for i in $(seq 1 ${i}); do
mask="?d${mask}" pass=$(sed -n ${i}p ${dict})
done # passwords can't be smaller than mask in -a 3 = mask attack
if [ "${#pass}" -lt ${i} ]; then
((i++))
continue
fi fi
if [ "${hash_type}" -eq 16800 ]; then pass_part_2=$(echo -n ${pass} | cut -b $((${i} + 1))-)
pass=$(sed -n ${i}p ${dict}) mask=""
mask=${pass} if [ "${hash_type}" -eq 14000 ]; then
# replace the first x positions in the mask with ?d's mask="${pass}"
# first: remove first i (== amount) chars elif [ "${hash_type}" -eq 14100 ]; then
mask=$(echo ${mask} | cut -b $((i + 1))-) mask="${pass}"
# prepend the ?d's else
for i in $(seq 1 ${i}); do for i in $(seq 1 ${i}); do
mask="${mask}?d"
mask="?d${mask}"
done done
fi mask="${mask}${pass_part_2}"
if [ "${mask_offset}" -ne 0 ]; then
mask=${mask_custom}
fi fi
CMD="./${BIN} ${OPTS} -a 3 -m ${hash_type} '${hash}' ${mask}" CMD="./${BIN} ${OPTS} -a 3 -m ${hash_type} '${hash}' ${mask}"
@ -2704,7 +2661,9 @@ if [ "${PACKAGE}" -eq 0 -o -z "${PACKAGE_FOLDER}" ]; then
# generate random test entry # generate random test entry
if [ ${HT} -eq 65535 ]; then if [ ${HT} -eq 65535 ]; then
perl tools/test.pl single > ${OUTD}/all.sh for TMP_HT in ${HASH_TYPES}; do
perl tools/test.pl single ${TMP_HT} >> ${OUTD}/all.sh
done
elif [[ ${HT} -ne 14600 ]]; then elif [[ ${HT} -ne 14600 ]]; then
# Exclude TrueCrypt and VeraCrypt testing modes # Exclude TrueCrypt and VeraCrypt testing modes
if [[ ${HT} -lt 6211 ]] || [[ ${HT} -gt 6243 ]]; then if [[ ${HT} -lt 6211 ]] || [[ ${HT} -gt 6243 ]]; then

Loading…
Cancel
Save