import hashlib
import argparse
import sys
import signal
loader=["/","-","|","\\"]
count=0
def log(c):
global loader,count
simbol=loader[count]
count+=1
if count >=len(loader):
count=0
a="["+simbol+"] "+c+" "*(118-len(c))
try:
sys.stdout.write("%s \r" % (a) )
sys.stdout.flush()
except:
pass
def keyboardInterruptHandler(signal, frame):
log(("Rly Dawg? Thats Soon ? let me do my stuff"))
exit(0)
signal.signal(signal.SIGINT, keyboardInterruptHandler)
try:
import wordlist
import pyfiglet
from colorama import init
from colorama import Fore, Back, Style
except:
log("python -m pip install wordlist & python -m pip install colorama & python -m pip install pyfiglet")
sys.exit()
import logging
import time
init()
result = pyfiglet.figlet_format("Cyber Security Group")
log(Fore.BLUE+result)
result = pyfiglet.figlet_format("Md5 Cracker")
log(Fore.RED+result)
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("--hash",metavar="", dest="hash", nargs=1, default=" ",
help="f.e --hash=a5fc425f7019e8768c123a5df7d85a35 ")
parser.add_argument('--keys', '-k',dest='keywords' ,help="keywords f.e:ABCDEFGHIJKLMNOP")
parser.add_argument("--min", "-m", type=int, dest="min",
help="string min length for e.x --min=1 -m 2")
parser.add_argument("--max", "-M", type=int, dest="max",
help="string max length for e.x --max=1 -M 2")
parser.add_argument("--list", "-l", type=str, dest="list",
help="--list=wordlist.txt \n or -l wordlist.txt")
args = parser.parse_args()
def checkhash(x):
global md5hash
result = hashlib.md5(str(x).encode())
try:
log(Fore.YELLOW+"checking: "+x)
except:
pass
if md5hash[0]==result.hexdigest():
log(Fore.GREEN+"We Found Your Secret: "+x)
sys.exit()
def brutefromwordlist(wordlist):
f=open(wordlist,"r").read().split("\n")
for each in f:
checkhash(each)
if not args.hash:
log(Fore.RED+"--hash is requried")
sys.exit()
md5hash=args.hash
if args.min and args.max :
if args.keywords:
generator = wordlist.Generator(args.keywords)
if args.min > args.max:
args.min,args.max=args.max,args.min
if not args.min>0:
log(Fore.RED+"min length must be higher then zero")
for each in generator.generate(args.min, args.max):
checkhash(each)
else:
if not args.list :
log(Fore.RED+"You should provide min and max values of string length with key --keys=string --min=1 --max=14 or -k string -m 1 -M 12")
sys.exit()
if args.list and not args.keywords:
brutefromwordlist(args.list)
else:
log(Fore.RED+"You shouldnt use keys and list args at same time")
log(Fore.RED+"SRY u dont get lucky")
$ python -m pip install wordlist
$ python -m pip install colorama
$ python -m pip install pyfiglet
$ python cracker.py -m 1 -M 9 --hash=a5fc425f7019e8768c123a5df7d85a35 -k asd
$ python cracker.py --min=1 --max=9 --hash=a5fc425f7019e8768c123a5df7d85a35 --keys=asd