---
name: "crack_mkdict"
section: "8"
platform: "linux"
package: "cracklib-runtime"
version: "2.7-19"
release: "Debian 4.0 (Etch)"
platforms: ["linux"]
url: "https://new.carta.tech/crack_mkdict"
---

# crack\_mkdict(8)

cracklib dictionary utilities

## NAME

crack\_mkdict, crack\_packer, crack\_unpacker - cracklib dictionary utilities

## SYNOPSIS

**crack\_mkdict** *file*...

**crack\_packer** *cracklib\_dictpath*

**crack\_unpacker** *cracklib\_dictpath*

## DESCRIPTION

**crack\_mkdict** takes a list of text files each containing a list of words, one per line, It lowercases all words, removes control characters, and sorts the lists.  It outputs the cleaned up list to standard output.  The text files may be optionally compressed with [**gzip**(1)](/gzip/1.md).

If you supply massive amounts of text to **crack\_mkdict** you must have enough free space available for use by the [**sort**(1)](/sort/1.md) command.  If you do not have 20Mb free in /var/tmp (or whatever temporary area your [**sort**(1)](/sort/1.md) command uses), have a look at the **/usr/sbin/crack\_mkdict program which is a** [**sh**(1)](/sh/1.md) program.  You can usually tweak the [**sort**(1)](/sort/1.md) command to use any large area of disk you desire, by use of the **-T** option. **crack\_mkdict** has a hook for this.

**crack\_packer** reads from standard input a list of sorted and cleaned words and creates a database in the directory and prefix given by the command line argument **cracklib\_dictpath.** Three files are created with the suffixes of .hwm, .pwd, and .pwi. These three files are in the format that the [**FascistCheck**(3)](/FascistCheck/3.md) subroutine and **crack\_unpacker,** [**crack\_testlib**(8)](/crack_testlib/8.md), [**crack\_testnum**(8)](/crack_testnum/8.md), and [**crack\_teststr**(8)](/crack_teststr/8.md) utilities understand.  The number of words read and written are printed on [**stdout**(3)](/stdout/3.md).

**crack\_unpacker** reads from the database in the directory and prefix given by the command line argument **cracklib\_dictpath** and outputs on standard output the list of words that make up the database.

The database is in a binary format generated by the utilities [**crack\_mkdict**(8)](/crack_mkdict/8.md) and [**crack\_packer**(8)](/crack_packer/8.md). On a Debian system the database is located in the directory /var/cache/cracklib/cracklib\_dict and is generated daily with the program /etc/cron.daily/cracklib.  The location is also defined in the header file **crack.h** using the constant **CRACKLIB\_DICTPATH** though none of the subroutines in the cracklib libraries have this location hardcoded into their implementations.

## FILES

- */var/cache/cracklib/cracklib\_dict.\[hwm\|pwd\|pwi\]*

  cracklib dictionary database files used by utilities.

- */etc/cron.daily/cracklib*

  cracklib daily cron program to rebuild the cracklib dictionary database.

- */etc/cracklib/cracklib.conf*

  cracklib configuration file used by the cracklib daily cron program to rebuild the cracklib dictionary database.

- */usr/include/crack.h*

  cracklib header file defining the subroutine **[FascistCheck(3)](/FascistCheck/3.md)** and the constant **CRACKLIB\_DICTPATH** used to compile in the location of the cracklib dictionary database for these utilities.

- */usr/sbin/crack\_mkdict*

  cracklib shell script to create initial list of words for dictionary database.

## SEE ALSO

[**FascistCheck**(3)](/FascistCheck/3.md), [**crack\_teststr**(8)](/crack_teststr/8.md), [**update-cracklib**(8)](/update-cracklib/8.md)\
 /usr/share/doc/cracklib2/cracklib2.html\
 /usr/share/doc/cracklib-runtime/cracklib-runtime.html

## AUTHOR

**cracklib2** is written by Alec Muffett \<alecm@crypto.dircon.co.uk\>. Manual added by Jean Pierre LeJacq \<jplejacq@quoininc.com\>.
