I am trying to guess the paswords from the etc/shadow file(it has 43 user/passwords). And I have been given some hits about the passwords:
- Length is between 4 and 8 characters
- There can be only 2 numbers and only at the end
- Capital letters only in the beginning
So I started just with a small group composed by 4 character with 2 digits in it. But it takes so much time to process:
import crypt import string import itertools import datetime dir = "shadow3" file = open(dir, 'r').readlines() #Read all the 43 hashes username =  hashed =  c = 0 cc = 0 for x in file: #Split the hash and the username usr, hshd, wtf, iss, this, thing, here, doing, example = x.split(':') username.append(usr) hashed.append(hshd) #GRUPO1 4 caracteres 2 numeros letters = string.ascii_lowercase digits = string.digits grupo1= group1=itertools.product(letters,repeat=2) group1b=itertools.product(digits,repeat=2) for x in itertools.product(group1,group1b): #Join the possible iterations string=''.join([''.join(k) for k in x]) grupo1.append(string) print(len(grupo1)) for y in grupo1:#Get the one of the iterations and try it prueba=y for x in hashed: #Verify if that iteration is the password to any of the 43 users rehashed = crypt.crypt(prueba, x) if rehashed == x: #Password is found print('La contraseña del usuario ' + username[c] + ' es ' + prueba) cc = 1 c = c + 1 if cc == 0: #after all iterations password is not found print('Lo sentimos "' + prueba + '" no es la contraseña de ningun usuario')
How can I improve the efficiency of this? I have a GTX 1070 if it helps for any kind of GPU processing.(I have no idea of this)
Just this small part of 4 characters is taking me for hours, it has still not finished.