I have done a small code in which with a wordlist (out68.lst) I get the passwords from the hashes in the file 'shadow3'.
import crypt import string import itertools import datetime dir = "shadow3" #File that contains hashes and users file = open(dir, 'r').readlines() username =  hashed =  k=0 for x in file: usr, hshd, wtf, iss, this, thing, here, doing, example = x.split(':') username.append(usr) hashed.append(hshd) #Loop in order to split the data in the file and store it in username and hashed grupo1=open('out68.lst','r').readlines() long=len(grupo1) print(long) for y in grupo1: #Loop in order to go through all the possible words available c = 0 y=y.rstrip('\n') y=y.capitalize() k = k+1 if k==(long//100): print('1%') if k==(long//10): print('10%') if k==(long//5): print('20%') if k==(3*long//10): print('30%') if k==(4*long//10): #Just to check the progress print('40%') if k==(5*long//10): print('50%') if k==(6*long//10): print('60%') if k==(7*long//10): print('70%') if k==(8*long//10): print('80%') if k==(9*long//10): print('90%') for x in hashed: rehashed = crypt.crypt(y, x) #Hash verification f(passwor+hash)=hash? if rehashed == x: print('La contraseña del usuario ' + username[c] + ' es ' + y) c = c + 1
It does work but depending on the size of the files, it can last now from 30 minutes to 6 hours. So I am asking if there is any way to improve the performance, by paralelization, or GPU processing (but I have no idea about this).