Hashcat is an advanced CPU-based password recovery
utility for Windows 7/8/10, Apple OS X, and GNU/Linux, supporting seven
unique modes of attack for over 100 optimized hashing algorithms.
Hashcat Screenshot
Features
- Multi-Threaded
- Free
- Open-Source
- Multi-Hash (up to 24 million hashes)
- Multi-OS (Linux, Windows and OSX native binaries)
- Multi-Algo (MD4, MD5, SHA1, DCC, NTLM, MySQL, ...)
- SSE2, AVX and XOP accelerated
- All Attack-Modes except Brute-Force and Permutation can be extended by rules
- Very fast Rule-engine
- Rules compatible with JTR and PasswordsPro
- Possible to resume or limit session
- Automatically recognizes recovered hashes from outfile at startup
- Can automatically generate random rules
- Load saltlist from external file and then use them in a Brute-Force Attack variant
- Able to work in an distributed environment
- Specify multiple wordlists or multiple directories of wordlists
- Number of threads can be configured
- Threads run on lowest priority
- Supports hex-charset
- Supports hex-salt
Contributing
Contributions are welcome and encouraged, provided your code is of sufficient quality. Before submitting a pull request, please ensure your code adheres to the following requirements:
- Licensed under MIT license, or dedicated to public domain (BSD, GPL, etc. code is incompatible)
- Adheres to either C89, C90, or C99 standards
- Compiles cleanly with no warnings when compiled with
-W -Wall -std=c99
- Uses Allman-style code blocks & indentation
- Uses 2-spaces as indentation or a tab if it's required (for example: Makefiles)
- Uses lower-case function and variable names
- Avoids the use of
!
and uses positive conditionals wherever possible (e.g.,if (foo == 0)
instead ofif (!foo)
, andif (foo)
instead ofif (foo !=0)
) - Use code like array[index + 0] if you also need to do array[index + 1], to keep it aligned
indent -st -bad -bap -sc -bl -bli0 -ncdw -nce -cli0 -cbi0 -pcs -cs -npsl -bs -nbc -bls -blf -lp -i2 -ts2 -nut -l1024 -nbbo -fca -lc1024 -fc1
Your pull request should fully describe the functionality you are
adding/removing or the problem you are solving. Regardless of whether
your patch modifies one line or one thousand lines, you must describe
what has prompted and/or motivated the change.Solve only one problem in each pull request. If you're fixing a bug and adding a new feature, you need to make two separate pull requests. If you're fixing three bugs, you need to make three separate pull requests. If you're adding four new features, you need to make four separate pull requests. So on, and so forth.
If your patch fixes a bug, please be sure there is an issue open for the bug before submitting a pull request. If your patch aims to improve performance or optimizes an algorithm, be sure to quantify your optimizations and document the trade-offs, and back up your claims with benchmarks and metrics.
In order to maintain the quality and integrity of the Hashcat source tree, all pull requests must be reviewed and signed off by at least two board members before being merged. The project lead has the ultimate authority in deciding whether to accept or reject a pull request. Do not be discouraged if your pull request is rejected!