Each word of a dictionary is appended to each word in a dictionary.
If our dictionary contains the words:
pass 12345 omg Test
Hashcat creates the following password candidates:
passpass pass12345 passomg passTest 12345pass 1234512345 12345omg 12345Test omgpass omg12345 omgomg omgTest Testpass Test12345 Testomg TestTest
Using the Combinator Attack within hashcat (not standalone version of Combinator Attack).
The command for the Combinator Attack in hashcat is -a 1
You need to specify exactly 2 dictionaries in you command line: e.g.
./hashcat64.bin -m 0 -a 1 hash.txt dict1.txt dict2.txt
If you wish to add rules to either the left or right dictionary or both at once then you can use the -j or -k commands.
-j, --rule-left=RULE Single rule applied to each word on the left dictionary -k, --rule-right=RULE Single rule applied to each word on the right dictionary
yellow green black blue
Note: the quotes are only there to escape the $ character, which would otherwise allow $- to be interpreted as a variable. The rules that are used here are still just $- and $!. Escaping might not work exactly the same way on each operating system and with each shell interpreter (if you are unsure about what needs to be escaped and how it should be escape, please consider looking up your OS and/or shell interpreter manual).
The output would be…
yellow-car! green-car! black-car! blue-car! yellow-bike! green-bike! black-bike! blue-bike!