Masking??? (Noob)
#1
So I need to either make a list or a mask for my password possibilities. I have a basic setup for my passwords but too many to try.

14 characters long with known constants/variants. 

First 3 characters are known. The variant is either all cap or no cap. e.g. ABC or abc

Next 6 characters are a known constant of 3 different sets. e.g. abcdef or ghijkl or mnopqr

Then 1 character that is always one of 4 numbers. e.g. 1 or 2 or 3 or 4 

Then 4 characters that are known but vary in order??? I use the same three keys varying with the shift key but the order is always two matching characters and two matching characters. e.g. aass or ssAA or ddSS or ssDD ect...

How do I make that happen? or can I even make that happen? 

Up against a TrueCrypt file. 

Thanks in advance
#2
1. generate a list for the first part
hashcat --stdout -a3 -1 aA -2 bB -3 cC ?1?2?3 -o part1.txt

2. create a file part2.txt that has the three variations of the known parts

3. combine part1 + part2
hashcat --stdout -a1 part1.txt part2.txt -o part1_2.txt

4. add the number
hashcat --stdout -a6 part1_2.txt -1 1234 ?1 -o part1_2_3.txt

5. a custom generator for the last part works best. here is a dirty python script:
Code:
chars = set('asd')

for x in chars:
    other_chars = chars.copy()
    other_chars.remove(x)
    for y in other_chars:
        print('{x}{x}{y}{y}'.format(x=x, y=y))
        print('{x}{x}{y}{y}'.format(x=x.upper(), y=y))
        print('{x}{x}{y}{y}'.format(x=x, y=y.upper()))
        print('{x}{x}{y}{y}'.format(x=x.upper(), y=y.upper()))
python script.py > part4.txt

6. you now have everything you need. Run your attack with
hashcat -a1 part1_2_3.txt part4.txt -m [attack mode] [hash file]
#3
looks almost perfect, but @undeath I think the first step is not quite correct.

#1: "either all cap or no cap"

this means that you have only 2 possibilities (either 3 lowercase or 3 uppercase characters).

therefore I would put this two passwords/variants into a dict file and combine that with the second dict
i.e.
part1.txt:
Code:
ABC
abc

part2.txt:
Code:
abcdef
ghijkl
mnopqr

Code:
hashcat --stdout -a1 part1.txt part2.txt -o part1_2.txt


furthermore, the command in step 6 seems incorrect:
you need to specify the hash file before the dicts ,i.e.
Code:
hashcat -a1 -m [attack mode] [hash file] part1_2_3.txt part4.txt

The other suggestions look very good.

btw: for fast hashing algorithms and with larger keyspace etc you might consider using different attack types (like rule based attacks etc), but since it's truecrypt/veracrypt (a very slow hash algo) the attack mode and how you provide the password candidates (input) doesn't really matter at all (it should be correct of course Wink )
#4
thanks for the corrections, philsmd. Was a bit in a hurry when typing that.