two ways, rules and/or combinator attack
i will show you the easy combinator way with just one rule
well take a look at the following
prepare a file called masks.mask with content
and fire up
as you see, these will generate all possbilitiy one to two digts, with one to two follow up special chars of !"()$ -> you can modify this with your special chars or even use full ?s instead of ?1 (if you are located in germany dont forget € or § wich are not included in ?s)
you can redirect these to a file like this
prepare a rule.rule file with just one line in it with the lower case letter c (this will tell hashcat to capitalize the first letter and lower the rest
for showing purposes only i generated a 2 chars lower dict as test.dict
now combine these two lists with hashcat tools combinator to get "your" dictionary
when i fire up hashcat like this
you will see output (unordered) like this
Ih71("
Ih61("
Ih18("
Ih08("
Ih28("
Ih38("
Ih98("
Ih48("
Ih58("
Ih88("
Ih78("
as you see the first char is uppercase the rest your desired 1-2 digits + 1-2 special, all you will need is a proper dictionary with real world words to start with (depending on your language, there are for sure many ways)
when i was starting with hashcat i scraped, wikipedia german, english and other things like oxford dictionary, german duden or lists with citynames, countrynames or human names and so on to get my basic dict
EDIT:
saw your edit with rockyou, the problem with rockyou is, there are already realworld passes so it is not exactly what you want, because if you add your digits-special, you will end up with passes like
My$specialpas$word!"§09)!
which didnt fit
i will show you the easy combinator way with just one rule
well take a look at the following
prepare a file called masks.mask with content
Code:
!"()$,?d?1
!"()$,?d?d?1
!"()$,?d?1?1
!"()$,?d?d?1?1
and fire up
Code:
hashcat -a3 --stdout masks.mask
as you see, these will generate all possbilitiy one to two digts, with one to two follow up special chars of !"()$ -> you can modify this with your special chars or even use full ?s instead of ?1 (if you are located in germany dont forget € or § wich are not included in ?s)
you can redirect these to a file like this
Code:
hashcat -a3 --stdout masks.mask > digits-special.txt
prepare a rule.rule file with just one line in it with the lower case letter c (this will tell hashcat to capitalize the first letter and lower the rest
for showing purposes only i generated a 2 chars lower dict as test.dict
now combine these two lists with hashcat tools combinator to get "your" dictionary
Code:
combinator.exe test.dict digits-special.txt > full.dict
when i fire up hashcat like this
Code:
hashcat --stdout -a0 -r rule.rule full.dict
you will see output (unordered) like this
Ih71("
Ih61("
Ih18("
Ih08("
Ih28("
Ih38("
Ih98("
Ih48("
Ih58("
Ih88("
Ih78("
as you see the first char is uppercase the rest your desired 1-2 digits + 1-2 special, all you will need is a proper dictionary with real world words to start with (depending on your language, there are for sure many ways)
when i was starting with hashcat i scraped, wikipedia german, english and other things like oxford dictionary, german duden or lists with citynames, countrynames or human names and so on to get my basic dict
EDIT:
saw your edit with rockyou, the problem with rockyou is, there are already realworld passes so it is not exactly what you want, because if you add your digits-special, you will end up with passes like
My$specialpas$word!"§09)!
which didnt fit