| 0. 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. 148. 149. 150. 151. 152. 153. 154. 155. 156. | #!/usr/bin/env bash
# InvisionPowerBoard Cracker V1.0
# coded By 0x90 2008
# 0x90[at]bsdmail.org
# This small tool will bruteForce "Invision Power Board" MD5 hash
# work only on FreeBSD
#
# I do not take any reponsibilty for what you do with this tool
# Hopefully it will make your life easier rather then making other
# peoples lives more difficult!
##############################
# ___ ___ ___
# / _ \ / _ \ / _ \
#| | | |_ _| (_) | | | |
#| | | \ \/ /\__, | | | |
#| |_| |> < / /| |_| |
# \___//_/\_\ /_/ \___/
##############################
echo ".:: InvisionPowerBoard Cracker, Coded By 0x90 ::."
echo -n "Enter IPB md5 Hash: "
read hash
if [ -z "$hash" ] || [ "${#hash}" != "32" ]; then
echo "Error: please Enter a valid md5 hash"
exit
fi
echo
echo -n "Enter IPB Salt: "
read salt
md5_salt=`echo "$salt" | md5sum | awk '{ print $1 }'`
echo -n "Select BruteForce Method:
1: Random BruteForce
2: Dictionary BruteForce
Enter your choise 1 or 2: "
read choise
if [ -z "$choise" ] || [ "$choise" != "1" ] && [ "$choise" != "2" ]; then
echo "Error: please choise between 1 or 2"
exit 1
fi
#########################
# Random BruteForce
#########################
if [ "$choise" == "1" ]; then
echo "use Random method to crack"
echo "trying to bruteforce IPB MD5 hash ..."
echo -n "enter min lengh: "
read minlen
echo -n "enter max lengh: "
read maxlen
echo -n "Select bruteForce mode:
all, alnum, lower, upper, digit, alpha
> "
read mode
if [ "$mode" = "all" ]; then
char="a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # $ % & ' ( ) * + , - . / : ; & < = > ? @ [ \ ] ^ _ { | } ~"
if [ "$mode" = "alnum" ]; then
char="a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9"
fi
if [ "$mode" = "alpha" ]; then
char="a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9"
fi
if [ "$mode" = "lower" ]; then
char="a b c d e f g h i j k l m n o p q r s t u v w x y z"
fi
if [ "$mode" = "upper" ]; then
char="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
fi
if [ "$mode" = "digit" ]; then
char="0 1 2 3 4 5 6 7 8 9"
fi
bf(){
for c in $char ; do
nc=$[$nc+1]
ch[$nc]=$c
done
for x in `seq 1 $[$maxlen+1]` ; do
if [ $minlen -ge $x ] ; then
ci[$x]=1
else
ci[$x]=0
fi
done
for clen in `seq $minlen $maxlen` ; do
while [ ${ci[$[$clen+1]]} -ne 1 ] ; do
wrd=""
for x in `seq $clen -1 1` ; do
wrd=$wrd${ch[${ci[$x]}]}
done
md5_hash=`echo "$wrd" | md5sum | awk '{ print $1 }'`
ipb_bf=`echo "$md5_salt$md5_hash" | md5sum | awk '{ print $1 }'`
echo "$wrd: hash: $ipb_bf"
if [ "$ipb_bf" == "$hash" ]; then
echo
echo "Cracked, IPB md5 password is: $wrd"
exit 0
fi
ci[1]=$[${ci[1]}+1]
for x in `seq 1 $clen`; do
if [ ${ci[$x]} -gt $nc ] ; then
ci[$x]=1
ci[$[$x+1]]=$[${ci[$[$x+1]]}+1]
fi
done
done
done
}
bf
fi
#########################
# Dictionary BruteForce
#########################
# Cain&Abel wordlist http://www.md5this.com/Wordlist.zip
# dont forget to convert the wordlist to Unix file format
# dos2unix Wordlist.txt
if [ "$choise" == "2" ]; then
echo "use dictionary method to crack"
echo -n "Enter dictionary name: "
read dic
echo "trying to bruteforce IPB MD5 hash ..."
n=`cat $dic | wc -l`
echo "we have $n password to try"
for (( i=1; i <= $n; i++));
do
pass=`sed -n "$i"p $dic`
md5_hash=`echo "$pass" | md5sum | awk '{ print $1 }'`
ipb_bf=`echo "$md5_salt$md5_hash" | md5sum | awk '{ print $1 }'`
echo "$i: hash: $ipb_bf"
if [ "$ipb_bf" == "$hash" ]; then
echo
echo "Cracked, IPB md5 password is: $pass"
exit 0
fi
done
fi
exit
|