모든 조합을 사용하여 단어 목록 생성

모든 조합을 사용하여 단어 목록 생성

저는 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

그러나 문제는 알려진 블록을 모두 포함하지 않는 더 짧은 조합의 조합을 생성하는 방법인 것 같습니다(예: dogcat2개의 블록만 포함).

어쩌면 나보다 더 잘 아는 사람이 있을 수도 있고 crunch, 내가 사용해야 하는 다른 도구나 도구 조합이 있을까요?

답변1

그리고파이썬,

#! /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

답변2

crunch현재는 조합이 아닌 순열만 지원됩니다. perl다음과 같이 사용하고 수행하는 것이 좋습니다 Math::Combinatorics.

words=(dog cat bird xyz cow1 lion8)

# Generate all possible combinations of $words
perl -MMath::Combinatorics -E '
  $, = " ";
  for $i (1 .. @ARGV) {
    say @$_ for(combine($i, @ARGV));
  }
' ${words[@]} |

# For each combination, get all possible permutations
perl -MMath::Combinatorics -anE 'say @$_ for (permute(@F))'

를 사용하여 실행하면 | shuf -n20출력은 다음과 같습니다.

lion8dogxyzcow1cat
birdcow1catlion8xyz
catxyzlion8cow1
catdoglion8xyz
doglion8cow1birdxyzcat
birdcow1lion8dogxyzcat
xyzcow1dogcat
birddogcat
dogcatxyzcow1
catxyzdogcow1
birdcatxyzlion8dogcow1
cow1xyzlion8
cow1catlion8xyzbirddog
xyzlion8catdogcow1bird
dogcow1catxyzbirdlion8
xyzcow1dogcatbirdlion8
cow1birdlion8dogcat
lion8cow1catbird
xyzbirdcatcow1
xyzdogcow1lion8birdcat

관련 정보