Shell
使用所有組合生成詞表
我正在嘗試生成一個單詞表,以便使用它來暴力破解我自己的 Truecrypt 容器。我確實知道部分密碼,它使用其他已知密碼塊來增加長度,但我忘記了這些塊的使用順序以及是否根本沒有使用某些塊。
用空格分隔的範例“塊”:
dog cat bird xyz cow1 lion8
我想做的是創建一個包含這些塊的每個可能組合的單詞表。例如
dog cat dogcat catdog bird dogbird catbird birdcat birddog dogcatbird catdogbird xyz dogcatbirdxyz cow1 xyzcow1dogcat xyzcow1dogcatbird catdogbirdxyzcow8 lion8 catdogbirdxyzcow1lion8 lion8catdogbirdxyzcow1 dogcatbirdxyzcow1lion8 cow1birddogcatxyzlion8 cow1lion8birddogcatxyz ...
到目前為止,我已經嘗試使用名為 crunch 的工具:http ://www.irongeek.com/i.php?page=backtrack-r1-man-pages/crunch
但挑戰似乎是如何生成較短組合的組合,不包括所有已知的塊,例如:
dogcat
只包括 2 個塊。也許有人
crunch
比我更了解,或者我是否應該使用其他工具或工具組合?
使用Python,
#! /usr/bin/env python3 import sys from itertools import chain, permutations # from the docs https://docs.python.org/3/library/itertools.html#itertools-recipes # modified for permutations instead of combinations def powerset_perm(iterable): s = list(iterable) return chain.from_iterable(permutations(s, r) for r in range(1, len(s) + 1)) for w in powerset_perm(sys.argv[1:]): print("".join(w))
例子:
~ ./foo.py foo フー bar1™ foo フー bar1™ fooフー foobar1™ フーfoo フーbar1™ bar1™foo bar1™フー fooフーbar1™ foobar1™フー フーfoobar1™ フーbar1™foo bar1™fooフー bar1™フーfoo