crhash is a hackable hash cracker, meant to be customized for your special cracking needs. Basically it’s just a framework to enumerate strings given a pattern and a charset and you can plug in your own hash computation and checks.

It includes support for OpenCL, so if you want to use that you just have to provide a kernel that computes a hash and checks whether it fulfills a certain property. The framework will then run your kernel and find the strings that you marked as positive.

Currently customization is done by tweaking the config.h header file. In the future we might add the option to support compiled plugins in the form of a shared library.

Usage:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

Usage:crhash[FLAGS]pattern_string alphabet0[alphabet1[...]]

pattern_string

isastringwith?chars asplaceholders

alphabetX

isan alphabet specification inone of two formats:

=srepresents the explicit set of characters ins

:lo:hi represents the set of characters with ASCII values

inthe inclusive range lo..hi

You can provide different charsets forthe different wildcard positions

inthe pattern string.The last character set you provide will be used

forthe remaining positions.

OPTIONS

-tintegerUsethe given number of threads

-sNo verbose output,just dump the result string

-aFind all matching strings

-cUseOpenCL.Currently only supportsasubset of patterns,

specifically ones where the wildcards are all contiguous and

there isonly one contiguous charset.I.e.<prefix>??...??<suffix>

-hShow thishelp

Building:crhash is built using CMake:

1

2

3

4

$mkdir build

$cd build

$cmake/path/to/crhash

$make

You can also use the included run wrapper script, which will create a build directory in the current working dir: