Shell

使用所有組合生成詞表

  • December 28, 2020

我正在嘗試生成一個單詞表,以便使用它來暴力破解我自己的 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

引用自:https://unix.stackexchange.com/questions/438655