Dictionary with known combinations
#1
Can anyone point me in the right direction for creating a dictionary file; I have 3-5 words that are in the password in any order, with or without CAPS, and also might have a set of numbers in it to.  What I'm hoping to end up with is something like this:

words:
Test Tester Testee Tested John Sirus

Numbers:
1900 1901 1902 1903

output file:

TestTester1900
TestTested1901
TestedTester1903
JohnTestSirus1902
SirusTesterTest1900

ETC.

I can't seem to find a way to do this with any of the tools I have found or forum posts I have read....
Thanks in advance....
#2
if you really need to combine every word with every word, you should probably use combinator3 from hashcat.utils

Code:
combinator3 dict dict dict

if the numbers are always at the end and "only" the words are combined in any order, you should use either this approach:

Code:
combinator dict.txt dict.txt > temp
hashcat --stdout -o generated_dict.txt -r append_my_numbers.rule temp

where the file "append_my_numbers.rule" contains:
Code:
$1 $9 $0 $0
$1 $9 $0 $1
$1 $9 $0 $2
$1 $9 $0 $3

or if there are very few numbers, you could also use -a 1 directly with -k option, e.g.:

Code:
hashcat --stdout -o generated_dict.txt -a 1 -k '$1 $9 $0 $0' dict.txt dict.txt

hashcat --stdout -o generated_dict.txt -a 1 -k '$1 $9 $0 $1' dict.txt dict.txt

hashcat --stdout -o generated_dict.txt -a 1 -k '$1 $9 $0 $2' dict.txt dict.txt

hashcat --stdout -o generated_dict.txt -a 1 -k '$1 $9 $0 $3' dict.txt dict.txt

(note: if you use windows you need to escape the -k command line parameter differently, e.g. use double quotes instead of single quotes)

Note: combining 3 or more words/numbers together (and storing it on disk) only makes sense if the word list is very small, it grows exponentially. That brings up another question: does it make sense to store the full precomputed password candidate list on disk? I agree that for a very small dict it doesn't hurt, but maybe for an even slightly bigger output (# of candidates), it could make sense to e.g. apply some rules on-the-fly while cracking... this even could result in much faster speed since the input/output bottleneck (i.e. reading the huge file from a relatively slow disk) could be bypassed and the GPUs/CPUs are kept busy applying the rules

Note2: your CAPS requirement doesn't make it much more complicated, you either just need to manually write all capitalized words within the file or use hashcat --stdout to do it for you (use the "u" rule , see https://hashcat.net/wiki/ule_based_attack ). But remember: if the original dict containing all the words you want to use grows a lot, the final number of combinations of 3 words will grow even more (almost exponentially).