-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwordlist.py
80 lines (69 loc) · 3.21 KB
/
wordlist.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import itertools
import string
import re
#Função para remover os acentos das palavras, espaços e caracteres especiais
def remover_acentos(palavras_chave):
palavras_chave_sem_acentos = []
for palavra in palavras_chave:
palavra_sem_acentos = re.sub(r'[^\w\s]', '', palavra)
palavra_sem_acentos = re.sub(r'[ãáàâä]', 'a', palavra_sem_acentos)
palavra_sem_acentos = re.sub(r'[éêë]', 'e', palavra_sem_acentos)
palavra_sem_acentos = re.sub(r'[íï]', 'i', palavra_sem_acentos)
palavra_sem_acentos = re.sub(r'[óôöõ]', 'o', palavra_sem_acentos)
palavra_sem_acentos = re.sub(r'[úüû]', 'u', palavra_sem_acentos)
palavra_sem_acentos = re.sub(r'ç', 'c', palavra_sem_acentos)
palavra_sem_acentos = re.sub(r'\s', '', palavra_sem_acentos)
palavras_chave_sem_acentos.append(palavra_sem_acentos)
return palavras_chave_sem_acentos
# Funções para gera permutações, combinações, mesclagem e inserções de letras e números entre as palavras
def permutacoes(palavras_chave):
permutations = set()
for perm in itertools.permutations(palavras_chave):
palavra_permutada = ''.join(perm)
if palavra_permutada not in palavras_chave:
permutations.add(palavra_permutada)
return permutations
def combinacoes(palavras_chave):
combinations = set()
for r in range(2, len(palavras_chave)+1):
for combi in itertools.combinations(palavras_chave, r):
palavra_combinada = ''.join(combi)
if palavra_combinada not in palavras_chave:
combinations.add(palavra_combinada)
return combinations
def mesclagens(palavras_chave):
merges = set()
for r in range(1, len(palavras_chave)+1):
for merge in itertools.product(palavras_chave, repeat=r):
palavra_mesclada = ''.join(merge)
if palavra_mesclada not in palavras_chave:
merges.add(palavra_mesclada)
return merges
def insercoes(palavras_chave):
insertions = set()
caracteres = list(string.ascii_letters + string.digits)
for r in range(1, len(palavras_chave)+1):
for combi in itertools.combinations(palavras_chave, r):
for perm in itertools.permutations(combi):
for i in range(len(perm)+1):
for c in caracteres:
palavra_inserida = ''.join(list(perm[:i]) + [c] + list(perm[i:]))
if palavra_inserida not in palavras_chave:
insertions.add(palavra_inserida)
return insertions
def main():
palavras = input("Digite as palavras-chave separadas por vírgulas: ")
palavras = palavras.split(",")
palavras_chave_sem_acentos = remover_acentos(palavras)
# Faz a união de permutações, combinações, mesclagens e inserções
wordlist = set()
wordlist |= permutacoes(palavras_chave_sem_acentos)
wordlist |= combinacoes(palavras_chave_sem_acentos)
wordlist |= mesclagens(palavras_chave_sem_acentos)
wordlist |= insercoes(palavras_chave_sem_acentos)
wordlist = sorted(wordlist, key=len)
with open('wordlist.txt', 'w') as f:
for w in wordlist:
f.write(w + '\n')
if __name__ == '__main__':
main()