def generate_rand_N(self, p, n_generate=20, max_length=MAX_LEN): generate_list = [] samples = random.sample(p.passwords_string, n_generate) for i in range(n_generate): start_letter = samples[i][0] input_tensor = P.passwordToInputTensor(start_letter) with torch.no_grad(): hidden = torch.rand(self.layers, 1, self.hidden_size).to(device) output_password = start_letter for c in range(max_length): output, hidden = self.gru(self.embedding(input_tensor), hidden) output = self.h2o(output) output = output.view(-1) output = F.softmax(output, dim=0) output = output.cpu().numpy() index = np.random.choice(range(len(output)), p=output) if index == CHARMAP_LEN - 1: break else: letter = P.all_letters[index] output_password += letter input_tensor = P.passwordToInputTensor(letter).to(device) generate_list.append(output_password) return generate_list
def generate_N(self, p, n_generate=20, max_length=MAX_LEN): generate_list = [] samples = random.sample(p.passwords_string, n_generate) for i in range(n_generate): start_letter = samples[i][0] input_tensor = P.passwordToInputTensor(start_letter) with torch.no_grad(): hidden = torch.rand(self.layers, 1, self.hidden_size).to(device) output_password = start_letter for c in range(max_length): output, hidden = self.gru(self.embedding(input_tensor), hidden) output = self.h2o(output) output = output.view(1, -1) topv, topi = output.topk(1) topi = topi[0][0] if topi == CHARMAP_LEN - 1: break else: letter = P.all_letters[topi] output_password += letter input_tensor = P.passwordToInputTensor(letter).to(device) generate_list.append(output_password) return generate_list
def generate_from(self, start_letter, max_length=MAX_LEN): input_tensor = P.passwordToInputTensor(start_letter) with torch.no_grad(): hidden = torch.rand(self.layers, 1, self.hidden_size).to(device) output_password = start_letter for c in range(max_length): output, hidden = self.gru(self.embedding(input_tensor), hidden) output = self.h2o(output) output = output.view(1, -1) topv, topi = output.topk(1) topi = topi[0][0] if topi == CHARMAP_LEN - 1: break else: letter = P.all_letters[topi] output_password += letter input_tensor = P.passwordToInputTensor(letter).to(device) return output_password
def generatePassTensor(self, max_length = 18): start_letter = p.passwords_string[random.randint(0,len(p.passwords_string) - 1)][0] with torch.no_grad(): input_tensor = P.passwordToInputTensor(start_letter).to(device) self.hidden = self.initHiddenZeros() password = start_letter for c in range(max_length): output = self(input_tensor[0]) output = output.view(1,-1) topv, topi = output.topk(1) topi = topi[0][0] if topi == P.n_letters - 1: break else: letter = P.all_letters[topi] password += letter input_tensor = P.passwordToInputTensor(letter).to(device) return P.passwordToInputTensor(password)