コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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)