World's fastest and most advanced password recovery utility https://hashcat.net/hashcat/
  • C 92.4%
  • Perl 2.8%
  • Common Lisp 2.8%
  • Shell 1%
  • Python 0.4%
  • Other 0.6%
Find a file
PenguinKeeper7 b3c721155b
Optimise MD5 steps for -m 0 -a 0/1 (#4700)
Speed up optimised mode 0 by dropping the message words that are always zero

The short length kernels of mode 0 feed all 16 message words into the MD5 rounds, although a candidate in that bucket cannot reach past the first 8. With -O the kernel accepts 31 characters at most, so w2 and the first two words of w3 are zero on every candidate, and the rounds that take them add a round constant to a zero. Under -a 0 a compiler sees that for itself and folds it away. Under -a 1 the two words are joined at a runtime offset, so the zeroes are invisible to it and the rounds are emitted in full.

The rounds that read those words now use MD5_STEP0, which takes the round constant on its own. The word holding the message length keeps its ordinary round, and the kernels for the longer length buckets are untouched, because a candidate there does reach w2.

Combinator attacks gain throughout. 3 runs of each build alternated over 25 second windows:

```
  Intel Arc A770        OpenCL       7.87 -> 15.10 GH/s   +92.0 percent
  Radeon RX 7900 XTX    HIP         30.77 -> 39.31 GH/s   +27.7 percent
  Radeon Pro W5700X     Metal        7.68 ->  9.07 GH/s   +18.1 percent
  RTX A400              CUDA         2.29 ->  2.68 GH/s   +16.8 percent
  GeForce RTX 4090      CUDA        67.87 -> 78.82 GH/s   +16.1 percent
  Radeon RX 9070 XT     HIP         23.71 -> 27.45 GH/s   +15.8 percent
  GeForce RTX 2080 Ti   CUDA        13.35 -> 15.33 GH/s   +14.8 percent
  Core i5-9600K         OpenCL CPU   0.30 ->  0.33 GH/s   +10.2 percent
```

Straight attacks are unchanged across the same devices, which is what the compiler already doing the work predicts.
2026-09-20 07:49:21 +02:00
.github Build a Raspberry Pi artifact for a named core and read the core on a Pi (#4753) 2026-09-13 21:12:44 +02:00
bridges/subs Dynamic hash plugin 2025-09-01 19:20:54 +07:00
charsets Added full charset for romanian language 2023-07-26 10:13:18 +03:00
deps Unpack RAR3 in hashcat and remove UnRAR and the C++ toolchain 2026-09-01 17:37:23 +02:00
docker Measure free device memory, speed up PKZIP, and restore Windows mask attacks 2026-08-31 21:32:10 +02:00
docs Fix Windows/WSL PATH issue (#4654) 2026-09-19 11:39:18 +02:00
extra/tab_completion >200% a0 speedup by length-sorting password-candidates (#4624) 2026-09-19 09:43:46 +02:00
feeds New attack-mode 8 initial commit 2025-08-25 23:02:00 +02:00
include Give back what outer_loop () and the autodetect probe hold on every return (#4886) 2026-09-19 20:45:45 +02:00
masks add hashcat's default mask for external use 2020-05-23 12:35:41 -08:00
modules The Assimilation Bridge (Framework) 2025-05-29 15:38:13 +02:00
obj The Assimilation Bridge (Framework) 2025-05-29 15:38:13 +02:00
OpenCL Optimise MD5 steps for -m 0 -a 0/1 (#4700) 2026-09-20 07:49:21 +02:00
pcfg Recover one person's hash with a PCFG ruleset that takes its words from you 2026-09-12 14:54:56 +02:00
Python Give each candidate its own salt on the bridge path in attack mode 9 2026-09-16 17:16:28 +02:00
rules Update best64 to best66 2025-08-24 02:10:34 +01:00
Rust Give each candidate its own salt on the bridge path in attack mode 9 2026-09-16 17:16:28 +02:00
src Give back what outer_loop () and the autodetect probe hold on every return (#4886) 2026-09-19 20:45:45 +02:00
tables Restore the table attack as attack mode 5 2026-09-10 15:22:06 +02:00
tools Accept the salt field in -m 19800 and -m 19900 (#4884) 2026-09-19 09:26:58 +02:00
tunings Accept prestashop salts up to 64 bytes (#4021) 2026-09-15 21:10:48 +02:00
.appveyor.yml.old Test disable Appveyor 2022-12-30 18:45:40 +00:00
.editorconfig Fix .editorconfig suggested in #3675 2023-04-10 17:23:29 +00:00
.gitattributes Prevent the git autocrlf option from messing files 2023-09-27 20:53:36 -07:00
.gitignore Restore the table attack as attack mode 5 2026-09-10 15:22:06 +02:00
AGENTS.md Restore the table attack as attack mode 5 2026-09-10 15:22:06 +02:00
BUILD.md Update the Python floor in BUILD.md to the one the build enforces (#4847) 2026-09-11 21:32:12 +02:00
BUILD_Android.md Retire workload profiles and fix autotune launch selection 2026-09-08 18:33:16 +02:00
BUILD_CYGWIN.md Load iconv at runtime, rewrite Camellia from RFC 3713, and fix module 23800 on MSYS2 2026-08-31 08:11:24 +02:00
BUILD_Docker.md Finish the BSD builds and apply Docker patches with git apply 2026-08-24 16:11:27 +02:00
BUILD_macOS.md Define runtime requirements and stop guessing installed library names 2026-09-10 22:01:00 +02:00
BUILD_MSYS2.md Load iconv at runtime, rewrite Camellia from RFC 3713, and fix module 23800 on MSYS2 2026-08-31 08:11:24 +02:00
BUILD_WSL.md Merge pull request #4603 from JustGuardian/patch-1 2026-09-07 22:37:09 +02:00
CONTRIBUTING.md Restore the table attack as attack mode 5 2026-09-10 15:22:06 +02:00
example.dict Removed duplicated words in example.dict 2018-08-20 11:58:21 +02:00
example0.cmd Fix CRLF for windows scripts 2023-09-25 16:57:01 +00:00
example0.hash Prepare to rename project into hashcat 2016-05-10 19:07:07 +02:00
example0.sh fix example0*, skip autodetect if keyspace enabled, update help and changes.txt 2021-06-06 15:48:04 +02:00
example400.cmd Fix CRLF for windows scripts 2023-09-25 16:57:01 +00:00
example400.hash Prepare to rename project into hashcat 2016-05-10 19:07:07 +02:00
example400.sh Fix sed call in Makefile 2016-06-11 11:39:49 +02:00
example500.cmd Fix CRLF for windows scripts 2023-09-25 16:57:01 +00:00
example500.hash Prepare to rename project into hashcat 2016-05-10 19:07:07 +02:00
example500.sh Fix sed call in Makefile 2016-06-11 11:39:49 +02:00
hashcat.hcstat2 LZMA compress version of hashcat.hcstat2 2017-06-23 14:37:45 +02:00
Makefile Initial commit 2015-12-04 15:47:52 +01:00
README.md Update the v7.1.x changelog and release documentation 2026-09-19 10:53:21 +02:00
RUNTIME_Docker.md Complete the plugin interface and fix the release build path 2026-08-14 13:59:37 +02:00
SECURITY.md Update the v7.1.x changelog and release documentation 2026-09-19 10:53:21 +02:00

hashcat

hashcat is a highly optimized password recovery platform for GPUs, CPUs, and large distributed systems.

Features

  • World's fastest password cracker
  • World's first and only in-kernel rule engine
  • Free and open source, under the MIT license
  • Multi-OS: Linux, Windows and macOS
  • Multi-backend: CUDA, HIP, Metal and OpenCL
  • Multi-device: several devices, and mixed device types, in one system
  • Multi-hash: cracks large numbers of hashes at once
  • Over 590 hash modes, each written with performance in mind
  • 10 attack modes: wordlist, combination, brute-force, PCFG, table, two hybrids, a mask that says where the word goes, generic plugin feeds and association
  • Assimilation bridge: add a hash mode in C, Python or Rust, without writing a kernel
  • Brain: skips candidates an earlier session already tried
  • Distributed cracking networks, using an overlay
  • Reads candidates from a wordlist, from stdin, or from another program
  • Markov chain keyspace ordering, so the likely candidates come first
  • Automatic performance tuning per device
  • Interactive pause and resume
  • Named sessions, and restore after an interruption
  • Built-in benchmark
  • Integrated thermal watchdog
  • Hex salt and hex charset, for hashes and character sets that are not text
  • Encrypted plains: crack a hash for someone else without being able to read the password
  • Keyboard layout mapping, for full disk encryption passwords typed on a non-US keyboard

License

hashcat is licensed under the MIT license. See docs/license.txt.

Installation

Download the latest release and unpack it where you want it. Use 7z x when unpacking from the command line, so the full file paths stay intact.

Your platform may also provide packages.

Building

Building from source is optional. The release package is the same program, and a binary you build yourself will not crack any faster. Build it if you want a change of your own, a fix that is in master but not yet released, or a platform we do not ship a binary for.

See BUILD.md for how.

Tests:

Build BSD Rust
Build BSD Rust tests

Usage and help

Start with --help, also kept in the tree as docs/hashcat-help.md. One example hash per mode is in docs/hashcat-example-hashes.md.

The wiki and the FAQ go further. The forum holds years of answered questions. If you still need help from a real human, come to Discord.

Documentation

The docs directory covers each feature. The ones people ask about most:

Contributing

Contributions are welcome. CONTRIBUTING.md has the code style, what a pull request needs, and how to test a change before you send it.

Security

SECURITY.md has how to report a vulnerability, and what counts as one.

Happy Cracking!