Python - how to generate wordlist from given characters of specific length

后端 未结 4 735
醉酒成梦
醉酒成梦 2021-01-13 12:30

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

相关标签:
4条回答
  • 2021-01-13 13:03

    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.

    0 讨论(0)
  • 2021-01-13 13:15

    def word_gen(start= 3,end= 3, elements = 1): """ Hud Seidu Daannaa Wordlist gen MSC InfoSec, CEH"

    README
    #for start&end
    #e.g. start= 3,end= 3
    #means first words to last words should be 3 characters
    
    #for elements
    1 is asci
    2 is numbers
    3 is asci&numbers
    """
    import itertools
    #types of elements
    if elements ==1: elements= 'abcdefghijklmnopqrstuvwxyx'
    if elements ==2: elements= '0123456789'
    if elements== 3: elements= 'abcdefghijklmnopqrstuvwxyx0123456789'
    else: pass
    wl = []
    for i in range(start,end+1):
        for xs in itertools.product(elements, repeat=i):
            wl.append(''.join(xs))
    return wl
    
    0 讨论(0)
  • 2021-01-13 13:18

    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)
    
    0 讨论(0)
  • 2021-01-13 13:28
    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    
    
    0 讨论(0)
提交回复
热议问题