/***************************************************************
 *
 * Author:    Josh Harris
 * Created:   2010-12-01
 * Copyright: Josh Harris (www.tateu.net)
 * License:
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the following disclaimer in the documentation and/or
     other materials provided with the distribution.
  3. The name of the author may not be used to endorse or promote products derived
     from this software without specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 **************************************************************/





Input file
	"C:\TrueCrypt_File.tc"                       -- A TrueCrypt file hosted volume
	"\\?\GLOBALROOT\Device\Harddisk0\Partition1" -- A TrueCrypt partition hosted volume
	"C:\RescueDisc.iso"                          -- A TrueCrypt system resuce disc
	"C:\Backupheader.h"                          -- A TrueCrypt backup header

Password pattern
	use [] to specify a character pattern type
		[1234]{2} will build a 2 character pattern using all of the available characters inside the brackets
			11  12  13  14  21  22  23  34  31  32  33  34  41  42  43  44
	You can also limit the number of duplicated values in a character or string pattern type by using {count:dup_limit)
		[1234]{2:1} will build a 2 character pattern using all of the available characters inside the brackets but will not repeat any characters more than 1 time.
			12 13 14 21 23 24 31 32 34 41 42 43
		[123]{3:2} a 3 character pattern type with a max of 2 duplicated characters
			112 113 121 122 123 131 132 133 211 212 213 221 223 231 232 233 311 312 313 321 322 323 331 332
		[12\0]{3} will generate
			111 112  11 121 122  12  11  12   1 211 212  21 221 222  22  21  22   2
		[12\0]{3:2} will generate
			    112  11 121 122  12  11  12   1 211 212  21 221      22  21  22   2
	use () to specify a string pattern type, with each string separated by |
		(red|blue|black){2} will build a 2 string pattern using all of the available strings inside the parentheses
			redred  redblue  redblack  bluered  blueblue  blueblack  blackred  blackblue  blackblack
	You can also limit duplicate values in a string pattern type
		(red|blue|black){2:1}
			redblue redblack bluered blueblack blackred blackblue
	If you know the first 16 characters (vUEgSRL745dPr2YM) of your password but forgot the last 4, your pattern might look like this:
		vUEgSRL745dPr2YM[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]{4}
	\0 can be used as a null character
		This will generate some duplicate values, as seen in the example below, but it does allow you to generate variable length passwords
		[123]{2}
			11 12 13 21 22 23 31 32 33
		[123\0]{2}
			11 12 13  1 21 22 23  2 31 32 33  3  1  2  3

Precomputed word list (This is a plaintext file with one password per line)
	"C:\word_list.txt"

Password Start Index
Password End Index
	If your word_list containes 1,000,000 passwords, you can use the "Password Start Index" and :Password End Index: to only check a smaller subset of passwords
		10000 to 50000 will check 40000 passwords starting at 10000 and ending at 50000
