despite the fact, that this isnt a simple task you have 2 options i think
1. writing a script and feeding hashcat per pipe. you will see that generating and checking for your 3 restrictions will slow down the whole process, thats why hashcat doesnt work this way
2. i think the best approach would be sticking to plain lower letters and using rules to modify these words + because of a real slow hash consider using hashcat the brain to do the work of rejecting passes allready tested (i think it should be impossible to forge a ruleset not generating doubles when it comes to this way)
you have to generate rulesets for every specific lenght, lets gimme a hint, you are starting with length 6 in your example
you need at one special char ! and one number plus any number of uppercase (you can use maskprocessor or haschat with option stdout (use latest beta for that) to help you, or just do it by hand and use combinator from hahscat utils for combinig
so lets start with replacing position 0-5 with ! (i use maskprocessor and uses a ending space just for better readablitiy in the textfiles)
mp64 -1 012345 "o?1! " > exmark.txt
file (6 rules) will be:
o0!
...
o5!
similar for digits (beware the new cli) -> (output 60 rules)
mp64 -1 012345 "o?1?d " > digits.txt
now whe combine exmark with digits
combine exmark.txt digits.txt > ex-dig.txt (360 rules, but there are now many rules like o0! o05 OR o5! o54 which are not wanted, because they just overwrite the exmark again with a number you can clean them by hand)
the fun begins with toggling, you will need all possibilites for toggling from just 1 char, to 2, 3 and 4 and each of them has to be combined with the cleaned ex-digit.txt and copied into a final rulesset for your lenght 6, due to the fact that this toggling is very specific, i would do it by hand (but you have to think of all combinations yourself length one and two is quite simple tho)
and this is the work just for lenght 6 ..., the good part is, lenght 7 needs new rules because of the new length
UPDATE:
the above is for one exclamation mark and one number, want more digits? then you will have to generatre again, more rules for 2, 3, 4 numbers
1. writing a script and feeding hashcat per pipe. you will see that generating and checking for your 3 restrictions will slow down the whole process, thats why hashcat doesnt work this way
2. i think the best approach would be sticking to plain lower letters and using rules to modify these words + because of a real slow hash consider using hashcat the brain to do the work of rejecting passes allready tested (i think it should be impossible to forge a ruleset not generating doubles when it comes to this way)
you have to generate rulesets for every specific lenght, lets gimme a hint, you are starting with length 6 in your example
you need at one special char ! and one number plus any number of uppercase (you can use maskprocessor or haschat with option stdout (use latest beta for that) to help you, or just do it by hand and use combinator from hahscat utils for combinig
so lets start with replacing position 0-5 with ! (i use maskprocessor and uses a ending space just for better readablitiy in the textfiles)
mp64 -1 012345 "o?1! " > exmark.txt
file (6 rules) will be:
o0!
...
o5!
similar for digits (beware the new cli) -> (output 60 rules)
mp64 -1 012345 "o?1?d " > digits.txt
now whe combine exmark with digits
combine exmark.txt digits.txt > ex-dig.txt (360 rules, but there are now many rules like o0! o05 OR o5! o54 which are not wanted, because they just overwrite the exmark again with a number you can clean them by hand)
the fun begins with toggling, you will need all possibilites for toggling from just 1 char, to 2, 3 and 4 and each of them has to be combined with the cleaned ex-digit.txt and copied into a final rulesset for your lenght 6, due to the fact that this toggling is very specific, i would do it by hand (but you have to think of all combinations yourself length one and two is quite simple tho)
and this is the work just for lenght 6 ..., the good part is, lenght 7 needs new rules because of the new length
UPDATE:
the above is for one exclamation mark and one number, want more digits? then you will have to generatre again, more rules for 2, 3, 4 numbers