簡體   English   中英

Python-從給定字符創建單詞列表,該字符列表僅包含4-5個字母和5-6個數字

[英]Python - create wordlist from given characters of that contain 4-5 letters and 5-6 numbers ONLY

我正在尋找進行字典攻擊的方法,並且想知道如何創建一個單詞列表,當每個單詞包含5個字母(af)和5個數字時,該列表具有10個字母af和2-9個字母(我可以做到) (2-9)或僅6個字母(af)和4個數字(2-9)(我不能這樣做)。

這是我到目前為止(從這里開始 )的情況:

import itertools

chrs = 'abcdef23456789'
n = 2

min_length, max_length = 10, 10

for n in range(min_length, max_length+1):
    for xs in itertools.product(chrs, repeat=n):
        print ''.join(xs)

謝謝

只需編寫一個函數即可返回字符串中有效字母和數字的數量,然后測試返回值。

nums = '23456789'
chars = 'abcdef'

def letter_number_count(word):
    l,n = 0,0
    if len(word) == 10:
        for c in word:
            if c in nums:
                n += 1
            elif c in chars:
                l += 1
    return l,n

測試輸出

>>> s = 'abcdef2345'
>>> (l,n) = letter_number_count(s)
>>> if (l,n) == (6,4) or (l,n) == (5,5):
...     print "Do something"
... 
Do something
>>> 

您可以單獨檢查每個排列,如果滿足條件,則將其添加到數組中。 只需編寫一個簡單的布爾函數即可對每個函數中的數字和字母進行計數,並檢查條件。

這將從總數n中打印出20個這樣的排列! 其中n = 10(10!= 3,628,800)

import itertools as it
print(list(map(''.join,it.islice(it.permutations('abcdef23456'), 20))))

['abcdef2345', 'abcdef2346', 'abcdef2354', 'abcdef2356', 'abcdef2364', 'abcdef2365', 'abcdef2435', 'abcdef2436', 'abcdef2453', 'abcdef2456', 'abcdef2463', 'abcdef2465', 'abcdef2534', 'abcdef2536', 'abcdef2543', 'abcdef2546', 'abcdef2563', 'abcdef2564', 'abcdef2634', 'abcdef2635']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM