12-28-2014, 05:52 PM
It can be done with oclhashcat, but it will take some work. You have two options (AFAIK):
1) Use the hashcat utility program combinator to create a new dictionary, then you can use rules with that. This has the downside that it requires a bit a disk space. The bigger the dictionaries, the more diskspace. The space required is roughly the space used by dictionary 1 multiplied by the space used by dictionary 2. Yes, it is possible to pipe things, but that gets trickier.
The command is combinator.exe dict1 dict2 > newdict.dict
Obviously, if you on Linux, substitute the Linux binary.
Once you have the new, combo, dictionary, then run it as an -a 6 attack and use ?d mask. It could be done with rules too.
2) With oclhashcat, you can use a combinator attack (-a 1) and a single rule, applied to either the left or right dictionary word. An example of such a command (using the Nvidia version of oclhashcat on Windows) is:
cudahashcat64.exe -a 1 -m 0 --remove -o found.txt --rule-right=$5 md5.hash dict1.dict dict2.dict
where:
-a 1 is a combinator attack
-m 0 is for MD5 hashes
--remove is to remove found hashes from the found file. I believe there are some speed improvements from doing this, and definitely makes tracking progress easier
-o found.txt is where to dump the found hashes
--rule-right=$5 is a rule to apply to the right (and therefore second) word. In this example $5 means append a 5 to the word.
md5.hash is the file containing a list of hashes
dict1.dict is the first dictionary (left word)
dict2.dict is the second dictionary (right word), which can be the same as the first dictionary
The downside to this method is you have to alter the rule for each digit after each run, i.e. first run has $1, then second run has $2, etc. since combinator attacks don't allow rules files. You can, of course, write a script/batch file to help.
1) Use the hashcat utility program combinator to create a new dictionary, then you can use rules with that. This has the downside that it requires a bit a disk space. The bigger the dictionaries, the more diskspace. The space required is roughly the space used by dictionary 1 multiplied by the space used by dictionary 2. Yes, it is possible to pipe things, but that gets trickier.
The command is combinator.exe dict1 dict2 > newdict.dict
Obviously, if you on Linux, substitute the Linux binary.
Once you have the new, combo, dictionary, then run it as an -a 6 attack and use ?d mask. It could be done with rules too.
2) With oclhashcat, you can use a combinator attack (-a 1) and a single rule, applied to either the left or right dictionary word. An example of such a command (using the Nvidia version of oclhashcat on Windows) is:
cudahashcat64.exe -a 1 -m 0 --remove -o found.txt --rule-right=$5 md5.hash dict1.dict dict2.dict
where:
-a 1 is a combinator attack
-m 0 is for MD5 hashes
--remove is to remove found hashes from the found file. I believe there are some speed improvements from doing this, and definitely makes tracking progress easier
-o found.txt is where to dump the found hashes
--rule-right=$5 is a rule to apply to the right (and therefore second) word. In this example $5 means append a 5 to the word.
md5.hash is the file containing a list of hashes
dict1.dict is the first dictionary (left word)
dict2.dict is the second dictionary (right word), which can be the same as the first dictionary
The downside to this method is you have to alter the rule for each digit after each run, i.e. first run has $1, then second run has $2, etc. since combinator attacks don't allow rules files. You can, of course, write a script/batch file to help.