Python - how to generate wordlist from given characters of specific length
20,521
Solution 1
Use itertools.product
:
>>> import itertools
>>>
>>> chrs = 'abc'
>>> n = 2
>>>
>>> for xs in itertools.product(chrs, repeat=n):
... print ''.join(xs)
...
aa
ab
ac
ba
bb
bc
ca
cb
cc
To get word from min length to max length:
chrs = 'abc'
min_length, max_length = 2, 5
for n in range(min_length, max_length+1):
for xs in itertools.product(chrs, repeat=n):
print ''.join(xs)
Solution 2
This is a naïve implementation:
list='abcdefg'
depth=8
def generate(l,d):
if d<1:
return
for c in l:
if d==1:
yield c
else:
for k in generate(l,d-1):
yield c+k
for d in range(1,depth):
for c in generate(list,d):
print c
I don't have enough reputation to comment yet, so, to make a full list based on the itertools sample above:
import itertools
chrs='abc'
n=6
for i in range(1,n):
for xs in itertools.product(chrs, repeat=i):
print ''.join(xs)
This way, you have all words from length 1 up to n in your list.
Solution 3
from itertools import product
def allwords(chars, length):
for letters in product(chars, repeat=length):
yield ''.join(letters)
def main():
letters = "abc"
for wordlen in range(3, 5):
for word in allwords(letters, wordlen):
print(word)
if __name__=="__main__":
main()
returns
aaa
aab
aac
aba
abb
...
ccbc
ccca
cccb
cccc
Related videos on Youtube
Author by
Aamu
Updated on July 05, 2022Comments
-
Aamu almost 2 years
I want to perform a dictionary attack and for that I need word lists. How to generate word list from given characters of specific length ( or word length from min length to max length )? I have tried
itertools.combinations_with_replacements
anditertools.permutations
, but it does not help. They does not have all the word lists that it should return. Any help will be greatly appreciated. Thank you.-
ThiefMaster about 10 yearsI don't think you understand the concept behind a dictionary attack. The idea is to NOT generate all possible combinations (there are A LOT) but to use a file containing actual dictionary words (and other words that are likely passwords).
-