if you really need to combine every word with every word, you should probably use combinator3 from hashcat.utils
if the numbers are always at the end and "only" the words are combined in any order, you should use either this approach:
where the file "append_my_numbers.rule" contains:
or if there are very few numbers, you could also use -a 1 directly with -k option, e.g.:
(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).
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).