bruteforce-luks
===============

The purpose of this program is to try to find the password of a LUKS
encrypted volume.

It can be used in two ways:

 - try all the possible passwords given a charset
 - try all the passwords in a file

There is a command line option to specify the  number of threads to use.

Sending a USR1 signal to a running bruteforce-luks process makes it print
progress and continue.


## Exhaustive mode

The program tries to decrypt at least one of the key slots by trying
all the possible passwords. It is especially useful if you know
something about the password (i.e. you forgot a part of your password but still
remember most of it). Finding the password of a volume without knowing
anything about it would take way too much time (unless the password is really
short and/or weak).

There are command line options to specify:

 - the minimum password length to try
 - the maximum password length to try
 - the beginning of the password
 - the end of the password
 - the character set to use (among the characters of the current locale)


## Dictionary mode

The program tries to decrypt at least one of the key slots by trying all the
passwords contained in a file. The file must have one password per line.


## Dependencies

The program requires the cryptsetup library.


## Examples

Try to find the password of a LUKS encrypted volume using 4 threads, trying
only passwords with 5 characters:

    bruteforce-luks -t 4 -l 5 -m 5 /dev/sdb1


Try to find the password of a LUKS encrypted volume using 8 threads, trying
only passwords with 5 to 10 characters beginning with "W4l" and ending with "z":

    bruteforce-luks -t 8 -l 5 -m 10 -b "W4l" -e "z" /dev/sda2


Try to find the password of a LUKS encrypted volume using 8 threads, trying
only passwords with 10 characters using the character set "P情8ŭ":

    bruteforce-luks -t 8 -l 10 -m 10 -s "P情8ŭ" /dev/sdc3


Try to find the password of a LUKS encrypted volume using 6 threads, trying
the passwords contained in a dictionary file:

    bruteforce-luks -t 6 -f dictionary.txt /dev/sdd1


Print progress info:

    pkill -USR1 -f bruteforce-luks


## Donations

If you find this program useful and want to make a donation, you can send coins
to one of the following addresses:

 - Peercoin: PWFNV1Cvq7nQBRyRueuYzwmDNXUGpgNkBC
 - Bitcoin: 1F1ZfM7XtggHsShK4vwuy9zv98a9wt7nXx
