Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

A highly flexiable and scriptable password dictionary generator.

Project description


Build Status Coverage Status Codacy Badge

TTPassGen is a highly flexiable and scriptable password dictionary generator base on Python, you can easily use various rules to generate the desired combination of words.

README i18n: 中文说明


  • generate password use combination、permulation、conditional rules and so on.
  • support all characters or words(from wordlist option) that can make up a password, some built-in charset has been provided, such as alphabetical list and numeric list.
  • you can specify the order and frequency of each element in the word.
  • simple rule format, and easy to use, rule could be defined similar regex's style.
  • time-consuming estimates, output size estimates, and real-time progress reports.
  • unicode word support by using wordlist option.
  • Generation of large amounts of passwords at once, no output size limit.
  • it can split output by file size.


TTPassGen can be easily installed using pip:

pip install ttpassgen

if you are using the windows operating system, you could just use the release version.


Python 3.5 or later.

Quick Start

Switch to the project's ttpassgen directory if you want use ttpassgen by downloaded source code.

Example: Generate word list output to out.dict, the word format is prefix three digits, only allow 1、2、3, appear 2 or 3 times, followed by letter a or b.

ttpassgen -r [123]{2:3}[ab] out.dict



C:\Users\tp730>ttpassgen --help
Usage: ttpassgen [OPTIONS] OUTPUT
  -m, --mode INTEGER             generation mode:

                                 0 = combination rule mode
                                 [default: 0]
  -d, --dictlist TEXT            read wordlist from the file, multi files
                                 should by seperated by comma.
  -r, --rule TEXT                define word format, $0 means refer first
                                 file in dictlist option, some built-in charsets:

                                 ?l = abcdefghijklmnopqrstuvwxyz
                                 ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
                                 ?d = 0123456789
                                 ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
                                 ?a = ?l?u?d?s
                                 ?q = ]

                                 example: [?dA]{1:2}$0
                                 view *Examples* section for more information.
                                 [default: '']
  -c, --dict_cache INTEGER       each element in 'dictlist' option represents
                                 a dict file path, this option define the
                                 maximum amount of memory(MB) that can be used,
                                 increasing this value when the file is large 
                                 may increase the build speed.  [default: 500]
  -g, --global_repeat_mode TEXT  whether the character is allowd to repeat:

                                 ? = 0 or 1 repetitions
                                 * = 0 or more repetitions
                                 [default: ?]
  -p, --part_size INTEGER        when result data is huge, split package
                                 size(MB) will be applied, 0 is unlimited.
                                 [default: 0]
  -a, --append_mode INTEGER      whether append content to OUTPUT or not.
                                 [default: 0]
  -s, --seperator TEXT           word seperator, by default, each word
                                 occupies one line. special char:

                                 &#160; = one space
                                 [default: ]
  --inencoding TEXT              dict file encoding.
  --outencoding TEXT             output file encoding.  [default: utf-8]
  --help                         Show this message and exit.

generated password displayed line by line in OUTPUT. It is recommended to use Notepad++ to open this file(utf-8).


[] Used to wrap charset.

Repeat mode

[] 1 repetitions. [123] -> 1 2 3

[]? 0 or 1 repetitions. [123] -> '' 1 2 3


when repeatMode is `?`, [123]{1:2:?} -> 1 2 3 12 13 21 23 31 32
when repeatMode is `*`, [123]{1:2:*} -> 1 2 3 11 12 13 21 22 23 31 32 33

[]{m:n} default use global_repeat_mode option.

[]{n} or []{n:r} same as []{n:n:r}.

$no ref dict file index from dictlist option.

ttpassgen --dictlist in.dict,in2.dict --rule $0[_]?$1 -s "&#160;" out.dict
when dictlist option defined as `in.dict,in2.dict`,
in.dict content:

in2.dict content:

$0[_]?$1 -> word11word21 word11word22 word11_word21 word11_word22 word12word21 word12word22 word12_word21 word12_word22

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for ttpassgen, version
Filename, size File type Python version Upload date Hashes
Filename, size ttpassgen- (8.6 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page