Project For Password Crack
Project For Password Crack
".whitesource"
{
"generalSettings": {
"shouldScanRepo": true
},
"checkRunSettings": {
"vulnerableCheckRunConclusionLevel": "failure"
}
}
**hash.py**
#!/usr/bin/env python3
import re
import os
import requests
import argparse
import concurrent.futures
parser = argparse.ArgumentParser()
parser.add_argument('-s', help='hash', dest='hash')
parser.add_argument('-f', help='file containing hashes', dest='file')
parser.add_argument('-d', help='directory containing hashes', dest='dir')
parser.add_argument('-t', help='number of threads', dest='threads', type=int)
args = parser.parse_args()
cwd = os.getcwd()
directory = args.dir
file = args.file
thread_count = args.threads or 4
if directory:
if directory[-1] == '/':
directory = directory[:-1]
def crack(hashvalue):
result = False
if len(hashvalue) == 32:
if not file:
print ('%s Hash function : MD5' % info)
for api in md5:
r = api(hashvalue, 'md5')
if r:
return r
elif len(hashvalue) == 40:
if not file:
print ('%s Hash function : SHA1' % info)
for api in sha1:
r = api(hashvalue, 'sha1')
if r:
return r
elif len(hashvalue) == 64:
if not file:
print ('%s Hash function : SHA-256' % info)
for api in sha256:
r = api(hashvalue, 'sha256')
if r:
return r
elif len(hashvalue) == 96:
if not file:
print ('%s Hash function : SHA-384' % info)
for api in sha384:
r = api(hashvalue, 'sha384')
if r:
return r
elif len(hashvalue) == 128:
if not file:
print ('%s Hash function : SHA-512' % info)
for api in sha512:
r = api(hashvalue, 'sha512')
if r:
return r
else:
if not file:
print ('%s This hash type is not supported.' % bad)
quit()
else:
return False
result = {}
def threaded(hashvalue):
resp = crack(hashvalue)
if resp:
print (hashvalue + ' : ' + resp)
result[hashvalue] = resp
def grepper(directory):
os.system('''grep -Pr "[a-f0-9]{128}|[a-f0-9]{96}|[a-f0-9]{64}|[a-f0-9]{40}|[a-
f0-9]{32}" %s --exclude=\*.{png,jpg,jpeg,mp3,mp4,zip,gz} |
grep -Po "[a-f0-9]{128}|[a-f0-9]{96}|[a-f0-9]{64}|[a-f0-9]{40}|[a-f0-9]
{32}" >> %s/%s.txt''' % (directory, cwd, directory.split('/')[-1]))
print ('%s Results saved in %s.txt' % (info, directory.split('/')[-1]))
def miner(file):
lines = []
found = set()
with open(file, 'r') as f:
for line in f:
lines.append(line.strip('\n'))
for line in lines:
matches = re.findall(r'[a-f0-9]{128}|[a-f0-9]{96}|[a-f0-9]{64}|[a-f0-9]
{40}|[a-f0-9]{32}', line)
if matches:
for match in matches:
found.add(match)
print ('%s Hashes found: %i' % (info, len(found)))
threadpool = concurrent.futures.ThreadPoolExecutor(max_workers=thread_count)
futures = (threadpool.submit(threaded, hashvalue) for hashvalue in found)
for i, _ in enumerate(concurrent.futures.as_completed(futures)):
if i + 1 == len(found) or (i + 1) % thread_count == 0:
print('%s Progress: %i/%i' % (info, i + 1, len(found)), end='\r')
def single(args):
result = crack(args.hash)
if result:
print (result)
else:
print ('%s Hash was not found in any database.' % bad)
if directory:
try:
grepper(directory)
except KeyboardInterrupt:
pass
elif file:
try:
miner(file)
except KeyboardInterrupt:
pass
with open('cracked-%s' % file.split('/')[-1], 'w+') as f:
for hashvalue, cracked in result.items():
f.write(hashvalue + ':' + cracked + '\n')
print ('%s Results saved in cracked-%s' % (info, file.split('/')[-1]))
elif args.hash:
single(args)
**makefile**
DESTDIR ?= /usr/local/bin
install:
@sudo cp hash.py $(DESTDIR)/buster
@sudo chmod +x $(DESTDIR)/buster
@echo "Installation Successful!"
uninstall:
@sudo rm -f $(DESTDIR)/buster
@echo "Hash-Buster has been removed"