hashcat is the world's fastest and most advanced password recovery utility

Overview

hashcat

hashcat is the world's fastest and most advanced password recovery utility, supporting five unique modes of attack for over 300 highly-optimized hashing algorithms. hashcat currently supports CPUs, GPUs, and other hardware accelerators on Linux, Windows, and macOS, and has facilities to help enable distributed password cracking.

License

hashcat is licensed under the MIT license. Refer to docs/license.txt for more information.

Installation

Download the latest release and unpack it in the desired location. Please remember to use 7z x when unpacking the archive from the command line to ensure full file paths remain intact.

Usage/Help

Please refer to the Hashcat Wiki and the output of --help for usage information and general help. A list of frequently asked questions may also be found here. The Hashcat Forum also contains a plethora of information.

Building

Refer to BUILD.md for instructions on how to build hashcat from source.

Tests:

Travis Appveyor Coverity
Hashcat Travis Build status Hashcat Appveyor Build status Coverity Scan Build Status

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:

  1. Licensed under MIT license, or dedicated to the public domain (BSD, GPL, etc. code is incompatible)
  2. Adheres to gnu99 standard
  3. Compiles cleanly with no warnings when compiled with -W -Wall -std=gnu99
  4. Uses Allman-style code blocks & indentation
  5. Uses 2-spaces as the indentation or a tab if it's required (for example: Makefiles)
  6. Uses lower-case function and variable names
  7. Avoids the use of ! and uses positive conditionals wherever possible (e.g., if (foo == 0) instead of if (!foo), and if (foo) instead of if (foo != 0))
  8. Use code like array[index + 0] if you also need to do array[index + 1], to keep it aligned

You can use GNU Indent to help assist you with the style requirements:

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 optimize 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!

Happy Cracking!

Comments
  • Many rule sets contain duplicate rules

    Many rule sets contain duplicate rules

    Examples:

    []  orig: ] [
    []  orig: ][
    []$;  orig: ] [ $;
    []$;  orig: ][$;
    
    sg9se3sa4  orig: sa4 se3 sg9
    sg9se3sa4  orig: sa4 sg9 se3
    
    A0`01`  orig: ^1 ^0
    A0`01`  orig: ^1^0
    
    A0`02`  orig: ^2 ^0
    A0`02`  orig: ^2^0
    
    A0`03`  orig: ^3 ^0
    A0`03`  orig: ^3^0
    
    [email protected]  orig: sa@ si1 se3
    [email protected]  orig: si1 sa@ se3
    [email protected]  orig: si1 se3 sa@
    [email protected]  orig: sa@ se3 so0 si1
    [email protected]  orig: sa@ si1 se3 so0
    [email protected]  orig: sa@ si1 so0 se3
    [email protected]  orig: sa@ so0 se3 si1
    [email protected]  orig: sa@ so0 si1 se3
    [email protected]  orig: so0 sa@ se3 si1
    [email protected]  orig: so0 sa@ si1 se3
    [email protected]  orig: so0 se3 sa@ si1
    [email protected]  orig: so0 se3 si1 sa@
    [email protected]  orig: so0 si1 sa@ se3
    [email protected]  orig: so0 si1 se3 sa@
    [email protected]  orig: ss5 sa@ se3 si1 so0
    [email protected]  orig: ss5 sa@ se3 so0 si1
    [email protected]  orig: ss5 sa@ si1 se3 so0
    [email protected]  orig: ss5 sa@ si1 so0 se3
    [email protected]  orig: ss5 sa@ so0 se3 si1
    [email protected]  orig: ss5 sa@ so0 si1 se3
    [email protected]  orig: ss5 se3 sa@ si1 so0
    [email protected]  orig: ss5 se3 sa@ so0 si1
    [email protected]  orig: ss5 se3 si1 sa@ so0
    [email protected]  orig: ss5 se3 si1 so0 sa@
    [email protected]  orig: ss5 se3 so0 sa@ si1
    [email protected]  orig: ss5 se3 so0 si1 sa@
    [email protected]  orig: ss5 si1 sa@ se3 so0
    [email protected]  orig: ss5 si1 sa@ so0 se3
    [email protected]  orig: ss5 si1 se3 sa@ so0
    [email protected]  orig: ss5 si1 se3 so0 sa@
    [email protected]  orig: ss5 si1 so0 sa@ se3
    [email protected]  orig: ss5 si1 so0 se3 sa@
    [email protected]  orig: ss5 so0 sa@ se3 si1
    [email protected]  orig: ss5 so0 sa@ si1 se3
    [email protected]  orig: ss5 so0 se3 sa@ si1
    [email protected]  orig: ss5 so0 se3 si1 sa@
    [email protected]  orig: ss5 so0 si1 sa@ se3
    [email protected]  orig: ss5 so0 si1 se3 sa@
    [email protected]  orig: ss5 sa@ se3 si1
    [email protected]  orig: ss5 sa@ si1 se3
    [email protected]  orig: ss5 se3 sa@ si1
    [email protected]  orig: ss5 se3 si1 sa@
    [email protected]  orig: ss5 si1 sa@ se3
    [email protected]  orig: ss5 si1 se3 sa@
    [email protected]  orig: sa@ so0 se3
    [email protected]  orig: so0 sa@ se3
    [email protected]  orig: so0 se3 sa@
    [email protected]  orig: ss5 sa@ se3 so0
    [email protected]  orig: ss5 sa@ so0 se3
    [email protected]  orig: ss5 se3 sa@ so0
    [email protected]  orig: ss5 se3 so0 sa@
    [email protected]  orig: ss5 so0 sa@ se3
    [email protected]  orig: ss5 so0 se3 sa@
    [email protected]  orig: ss5 sa@ se3
    [email protected]  orig: ss5 se3 sa@
    [email protected]!so0  orig: sa@ so0 si!
    [email protected]!so0  orig: [email protected]!
    [email protected]  orig: sa@ so0 si1
    [email protected]  orig: so0 sa@ si1
    [email protected]  orig: so0 si1 sa@
    [email protected]  orig: ss5 sa@ si1 so0
    [email protected]  orig: ss5 sa@ so0 si1
    [email protected]  orig: ss5 si1 sa@ so0
    [email protected]  orig: ss5 si1 so0 sa@
    [email protected]  orig: ss5 so0 sa@ si1
    [email protected]  orig: ss5 so0 si1 sa@
    [email protected]  orig: ss5 sa@ si1
    [email protected]  orig: ss5 si1 sa@
    
    

    I am building a canonical / optimization / duplicate tool for jtr (currently just a prototype in perl slowly being put together, and some stand alone c). I am looking to leverage this to help reduce duplicates and or optimized rules, especially when we start doing rules x rules x rules logic

    I believe the rules files here have been provided by numerous private parties, and some may and some may not be maintained by said people. I was just wanting to know if it would be something wanted that when I find large groups of technically duplicate rules, that I document and or build PR's to fix them? If not, then feel free to close this issue, and I will not bother.

    opened by jfoug 63
  • `Abort trap: 6` when benchmarking `SHA-3(Keccak)` on Iris Pro

    `Abort trap: 6` when benchmarking `SHA-3(Keccak)` on Iris Pro

    $ ./hashcat.app -d2 -b -m 5000
    hashcat (v3.00-14-gb58f7a4) starting in benchmark-mode...
    
    OpenCL Platform #1: Apple
    =========================
    - Device #1: Intel(R) Core(TM) i7-4870HQ CPU @ 2.50GHz, skipped
    - Device #2: Iris Pro, 384/1536 MB allocatable, 40MCU
    - Device #3: GeForce GT 750M, skipped
    
    Hashtype: SHA-3(Keccak)
    
    Abort trap: 6
    

    Works fine with -d3 though.

    Using latest master (b58f7a4) on OS X 10.11.5 (15F34)

    opened by leonklingele 53
  • oclHashcat API

    oclHashcat API

    This is an amazing open source contribution. I wanted to start the discussion on whether creating an API would be beneficial. My thoughts are that there would probably be an interest in having an a well documented way to integrate hashcat into other systems. Feeding input/output to and from databases, connecting to distributed systems, and/or RESTful queries. I think this could also reduce the number of edits needed to the core code base, in the long run, in order to incorporate new/extended features.

    Of course I'm willing to contribute effort to this matter should the community decide to pursue it.

    new feature discussion 
    opened by Rich5 53
  • WPAx: proposal for a new hash line format (successor of hccapx)

    WPAx: proposal for a new hash line format (successor of hccapx)

    hccapx is a custom format, specifically developed for hashcat. The structure of .hccapx is fix and we are not able to handle new "attack verctors" like PMKID. Also we waste GPU time, because we have to run hashcat on WPA-EAPOL-PBKDF2 (2500) and WPA-PMKID-PBKDF2 (16800) even we have a PMKID hash and an EAPOL hash using the same network name. If we combine both hashmodes to a single hashline, we will get full advantage of reause of PBKDF2 on both hash types. Therefore we need a new and more flexible hash format. Handle WPA-EAPOL-PBKDF2 (2500) and WPA-PMKID-PBKDF2 (16800) and WPA-EAPOL-PMK (2501) and WPA-PMKID-PMK (16800) in a single hashline.

    1 The following entries are mandatory to calculate the PMK using PBKDF2: ESSID

    2 The following entries are mandatory to crack the hash in hash mode WPA-PMKID-PBKDF2 (16800): mac_ap mac_sta PMKID

    3 The following entries are mandatory to crack the hash in hash mode WPA-EAPOL-PBKDF2 (2500): mac_ap mac_sta nonce_ap EAPOL_sta

    In case of hash modes WPA-EAPOL-PMK (2501) and WPA-PMKID-PMK (16800), we do not need step 1.

    In case of AKM-defined 4-weay handshakes (WPA3, SAE, FILS, EAP), we do not need step 1, too. https://hashcat.net/forum/thread-7717-post-42759.html#pid42759

    Also we should use a hexified hashline (only hex values, especially for ESSID) like we do it allready by 16800 hashlines. We get advantage to handle this hash lines with simple bash commands instead of several tools to retrieve informations about the binary hccapx. Also hexified ASCII hash lines can be can be easily posted in varius forums (hashkiller, antichat,...).

    Putting this ideas into a single hashline, it could look like this one:

    hashcat should run WPA-PMKID-PBKDF2 and WPA-EAPOL-PBKDF2 on this hashline mac_ap * mac_sta * PMKID * ANONCE * ESSID * EAPOL

    hashcat should run WPA-PMKID-PBKDF2 on this hashline Received only a PMKID mac_ap * mac_sta * PMKID * * ESSID*

    hashcat should run WPA-EAPOL-PBKDF2 on this hashline mac_ap * mac_sta * * ANONCE * ESSID * EAPOL

    hashcat should run WPA-PMKID-PMK and WPA-EAPOL-PMK on this hashline mac_ap * mac_sta * PMKID * ANONCE * * EAPOL

    hashcat should run WPA-PMKID-PMK on this hashline Received only a PMKID mac_ap * mac_sta * PMKID * * *

    hashcat should run WPA-EAPOL-PMK on this hashline mac_ap * mac_sta * * ANONCE * * EAPOL

    Additional we can add a control field (0000) to allow hcxtools to parse informations to hashcat, like: message_pair use only PMK mode use only EAPOL mode has is AKM-defined and requires SHA_384 mic calculation instead of SHA-256 ... example: mac_ap * mac_sta * PMKID * ANONCE * ESSID * EAPOL * control_field

    discussion 
    opened by ZerBea 50
  • M1 Pro | No device found/left

    M1 Pro | No device found/left

    Describe the bug When trying to launch hashcat with a 2021 MacBook Pro (M1 Pro chip) get the same message error since the new update from Homebrew (v6.2.4) :

    hashcat (v6.2.4) starting
    No devices found/left.
    
    

    To Reproduce Just launch any instance of hashcat.

    Expected behavior Hashcat to work.

    Hardware/Compute device :

    • Compute device name: Apple M1 Pro
    • OpenCL/CUDA driver name: Apple M1 Pro
    • OpenCL/CUDA driver version: OpenCL 1.2
    • OpenCL/CUDA driver source: Both homebrew and latest commit

    Hashcat version (please complete the following information):

    • OS: MacOS Monterey 12.0.1
    • Version: both latest release (hashcat v6.2.4) and latest commit (v6.2.4-135-g8c7a22a07)

    Diagnostic output compute devices:

    Post hashcat -I output

    hashcat (v6.2.4) starting in backend information mode
    
    OpenCL Info:
    ============
    
    OpenCL Platform ID #1
      Vendor..: Apple
      Name....: Apple
      Version.: OpenCL 1.2 (Oct  1 2021 19:40:58)
    
      Backend Device ID #1
        Type...........: GPU
        Vendor.ID......: 2
        Vendor.........: Apple
        Name...........: Apple M1 Pro
        Version........: OpenCL 1.2 
        Processor(s)...: 16
        Clock..........: 1000
        Memory.Total...: 10922 MB (limited to 1024 MB allocatable in one block)
        Memory.Free....: 5408 MB
        OpenCL.Version.: OpenCL C 1.2 
        Driver.Version.: 1.2 1.0
    

    Additional context It was working before the homebrew update (6.2.4)

    Thank you in advance, and sorry for bad English.

    bug 
    opened by davacker 49
  • Ethereum KDF - Scrypt

    Ethereum KDF - Scrypt

    New algorithm: Ethereum Scrypt

    Use: Currently in use by Ethereum wallets to secure the wallet encryption password.

    The algorithm design is explained very well here: https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition

    The page does not go quite into the same detail regarding the Scrypt variant, however it is almost identical to the PBKDF2 variant, with Scrypt in place for the initial password hashing.

    To summarize, the password is hashed with Scrypt, then the "second leftmost 16 bytes" of the derived hash are concatenated with the ciphertext, which is then hashed with SHA3-256. The SHA3-256 hash is then directly compared to the "mac" value to verify whether or not the password is correct. If the SHA3 hashes match, the password is correct and the decryption of the ciphertext/wallet proceeds.

    The page linked above includes this example of a valid wallet:password pair:

    Test Vectors

    Details:

    • Address: 008aeeda4d805471df9b2a5b0f38a0c3bcba786b
    • ICAP: XE542A5PZHH8PYIZUBEJEO0MFWRAPPIL67
    • UUID: 3198bc9c-6672-5ab3-d9954942343ae5b6
    • Password: testpassword
    • Secret: 7a28b5ba57c53603b0b07b56bba752f7784bf506fa95edc395f5cf6c7514fe9d

    Scrypt

    Test vector using AES-128-CTR and Scrypt:

    {
        "crypto" : {
            "cipher" : "aes-128-ctr",
            "cipherparams" : {
                "iv" : "83dbcc02d8ccb40e466191a123791e0e"
            },
            "ciphertext" : "d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c",
            "kdf" : "scrypt",
            "kdfparams" : {
                "dklen" : 32,
                "n" : 262144,
                "r" : 1,
                "p" : 8,
                "salt" : "ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19"
            },
            "mac" : "2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097"
        },
        "id" : "3198bc9c-6672-5ab3-d995-4942343ae5b6",
        "version" : 3
    }
    

    Intermediates:

    • Derived key: fac192ceb5fd772906bea3e118a69e8bbb5cc24229e20d8766fd298291bba6bd
    • MAC Body bb5cc24229e20d8766fd298291bba6bdd172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c
    • MAC: 2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097
    • Cipher key: fac192ceb5fd772906bea3e118a69e8b

    I have written ether2hashcat to extract the relevant information from the json blobs and present it in a proposed hash format for hashcat. The proposed format would be as follows:

    $ethereum$s*n*r*p*salt*mac*ciphertext

    Using the example data from the test wallet above, we would get the following hash:

    $ethereum$s*262144*1*8*ab0c7876052600dd703518d6fc3fe8984592145b591fc8fb5c6d43190334ba19*2103ac29920d71da29f15d75b4a16dbe95cfd7ff8faea1056c33131d846e3097*d172bf743a674da9cdad04534d56926ef8358534d458fffccd4e6ad2fbde479c

    This would be cracked as testpassword

    Because there are multiple KDF variations, one using PBKDF2 and one using Scrypt, the format includes a P or S to denote the different versions. The PBKDF2 variant is addressed in a separate issue, as it is technically a different algorithm.

    Both algorithms were previously discussed on this forum thread and example code for cracking both algorithms was written by @philsmd

    This was previously requested in issue #262, however that issue/request did not seem to be completed with the required information.

    The sister algorithm request for the PBKDF2 variant is issue #1227

    new algorithm 
    opened by Chick3nman 42
  • GitHub workflow for pushing or creating pull request

    GitHub workflow for pushing or creating pull request

    Workflow to build application after pushing or creating pull request for master branch.

    As you can see this workflow builds application on Windows, Ubuntu and MacOS.

    Some extra steps (e.g. with checking code style) can be added.

    opened by ventaquil 37
  • support for bcrypt(md5($pass)) / bcryptmd5

    support for bcrypt(md5($pass)) / bcryptmd5

    I've recently learned that vBulletin can be (and now often is) configured to hash passwords client-side with MD5 before sending them to the server to be hashed as bcrypt. The end result / effective storage method is therefore bcrypt(md5($pass)), and must be attacked that way.

    opened by roycewilliams 32
  • Support for md5hmac(left, salt, 16) XOR sha1hmac(right, salt, 16) needed

    Support for md5hmac(left, salt, 16) XOR sha1hmac(right, salt, 16) needed

    Hi, we encountered a system with interesting challenge response:

    1. a Salt is given as 28 bytes
    2. a 16 byte Password is split into a left and right half
    3. two hashes (md5hmac(left, salt, 16) and sha1hmac(right, salt, 16) ) a generated and combined via XOR into the result

    We know through man in the middle attack the salt and result and verificated the generation with one known password.

    opened by SandraK82 32
  • "inc_vendor.h" file not found on MacOS Catalina 10.15.2

    hashcat % ./hashcat -m 0 -d3 -O -a 3 -1 '?l?d' example0.hash -i '?1?1?1?1?1?1?1?1'
    hashcat (v5.1.0-1569-g74c1bf81) starting...
    
    OpenCL API (OpenCL 1.2 (Nov  9 2019 04:32:50)) - Platform #1 [Apple]
    ====================================================================
    * Device #1: Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz, skipped
    * Device #2: Intel(R) HD Graphics 630, skipped
    * Device #3: AMD Radeon Pro 560 Compute Engine, 4032/4096 MB (1024 MB allocatable), 16MCU
    
    Minimum password length supported by kernel: 0
    Maximum password length supported by kernel: 55
    
    Hashes: 6494 digests; 6494 unique digests, 1 unique salts
    Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
    
    Applicable optimizers:
    * Optimized-Kernel
    * Zero-Byte
    * Precompute-Init
    * Meet-In-The-Middle
    * Early-Skip
    * Not-Salted
    * Not-Iterated
    * Single-Salt
    * Brute-Force
    * Raw-Hash
    
    Watchdog: Hardware monitoring interface not found on your system.
    Watchdog: Temperature abort trigger disabled.
    
    clBuildProgram(): CL_BUILD_PROGRAM_FAILURE
    
    <program source>:11:10: fatal error: 'inc_vendor.h' file not found
    #include "inc_vendor.h"
             ^
    
    * Device #3: Kernel /Users/emma.latuszekibm.com/Desktop/tools/hashcat/OpenCL/m00000_a3-optimized.cl build failed - proceeding without this device.
    
    Started: Thu Jan  9 16:08:27 2020
    Stopped: Thu Jan  9 16:08:28 2020
    

    @Chick3nman

    opened by vhu1f 28
  • Display driver crashes using Intel HD Graphics 4400

    Display driver crashes using Intel HD Graphics 4400

    Using oclhashcat64.exe on a Windows 8.1 Professionnal and latest Intel drivers with OpenCL gpu runtime:

    oclHashcat64.exe -b
    

    display driver crashes. Looking at the eventlog, I get:

    Display driver igfx stopped responding and has successfully recovered.
    EventId: 4101
    

    I know it will be difficult to debug with such few details, so if I can add some more details, do not hesitate to ask

    opened by Fist0urs 28
  • fixes #3487: added -m 3090x = Bitcoin raw private key

    fixes #3487: added -m 3090x = Bitcoin raw private key

    This commit adds the following hash modes (requested in #3487):

    • -m 30901 = Bitcoin raw private key (P2PKH), compressed
    • -m 30902 = Bitcoin raw private key (P2PKH), uncompressed
    • -m 30903 = Bitcoin raw private key (P2WPKH, Bech32), compressed
    • -m 30904 = Bitcoin raw private key (P2WPKH, Bech32), uncompressed
    • -m 30905 = Bitcoin raw private key (P2SH(P2WPKH)), compressed
    • -m 30906 = Bitcoin raw private key (P2SH(P2WPKH)), uncompressed

    They are similar to the hash modes -m 28501 to -m 28506 that we already support (the WIF format of the private key), but these new hash modes support the raw 32 bytes (64 hex char) private keys as password.

    This should be all straight forward, of course the speed is different to the WIF hash modes, because we have no more advantage of the quick/fast base58check (checksum) testing (early reject) here.

    Thank you very much

    opened by philsmd 1
  • Java hashCode() Token Length Exception with Hex integer

    Java hashCode() Token Length Exception with Hex integer

    Describe the bug Java HashCode() has a token length exception while using a Hex integer.

    the following integer should be cracked: 4798182389041606985 which is the following in Hex: 42969176025C3149

    To Reproduce Try to crack with mode 18700, Token Length Exception comes by

    Expected behavior Cracking it, without a token length exception

    Hardware/Compute device (please complete the following information):

    • Compute device name: RTX3050Ti
    • OpenCL/CUDA driver name: [e.g. NVIDIA DRIVER]
    • OpenCL/CUDA driver version: 522.25
    • OpenCL/CUDA driver source: [e.g. runtime installer/.exe installer]

    Hashcat version (please complete the following information):

    • OS: W11
    • Distribution: Uncertain
    • Version: 6.2.5

    Diagnostic output compute devices:

      Backend Device ID #2 (Alias: #1)
        Type...........: GPU
        Vendor.ID......: 32
        Vendor.........: NVIDIA Corporation
        Name...........: NVIDIA GeForce RTX 3050 Ti Laptop GPU
        Version........: OpenCL 3.0 CUDA
        Processor(s)...: 20
        Clock..........: 1485
        Memory.Total...: 4095 MB (limited to 1023 MB allocatable in one block)
        Memory.Free....: 3520 MB
        OpenCL.Version.: OpenCL C 1.2
        Driver.Version.: 522.25
        PCI.Addr.BDF...: 01:00.0
    
    bug 
    opened by scout247 0
  • Can we speed up -m 99999?

    Can we speed up -m 99999?

    Describe the feature

    Make -m 99999 (plaintext hash mode) faster.

    Current behavior

    -m 99999 is no faster than MD4 it currently uses internally. But I believe there are algorithms that are much faster and no less collision-resistant. Can't we use one of them?

    Expected behavior

    -m 99999 does no unnecessary computationally-intensive work.

    new feature 
    opened by justpretending 0
  • WPA password empty

    WPA password empty

    Using hashcat v6.2.6, WPA is cracked but password is empty. xxx579a3xxx089abxxx:yyyyyy:zzzzzz:ESSID:

    What does it mean? WPA password cannot be lengh <8

    bug 
    opened by adrastee 1
  • In macOS Version 13.1 terminates with uncaught exception of type NSException

    In macOS Version 13.1 terminates with uncaught exception of type NSException

    GitHub is for bugs and features - not for support For support, please use the hashcat forums https://hashcat.net/forum/

    Check the FAQ Some items that might appear to be issues are not issues. Please review the hashcat FAQ https://hashcat.net/wiki/doku.php?id=frequently_asked_questions before submitting a bug report.

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Please provide us with all files required to reproduce the bug locally on our development systems. For instance: hash files, wordlists, rule files, ...

    Expected behavior A clear and concise description of what you expected to happen.

    Hardware/Compute device (please complete the following information):

    • Compute device name: AMD Radeon Pro 555X
    • OpenCL/CUDA driver name: AMD
    • OpenCL/CUDA driver version: OpenCL 1.2
    • OpenCL/CUDA driver source: Apple

    Hashcat version (please complete the following information):

    • OS: macOS
    • Distribution: Ventura
    • Version: 13.1

    Diagnostic output compute devices:

    hashcat (v6.2.6-196-g60f98d51d) starting in benchmark mode
    
    Benchmarking uses hand-optimized kernel code by default.
    You can use it in your cracking session by setting the -O option.
    Note: Using optimized kernel code limits the maximum supported password length.
    To disable the optimized kernel code in benchmark mode, use the -w option.
    
    METAL API (Metal 306.3.4)
    =========================
    * Device #1: Intel(R) UHD Graphics 630, skipped
    * Device #2: AMD Radeon Pro 555X, skipped
    
    OpenCL API (OpenCL 1.2 (Nov  4 2022 20:34:07)) - Platform #1 [Apple]
    ====================================================================
    * Device #3: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz, skipped
    * Device #4: Intel(R) UHD Graphics 630, 704/1536 MB (192 MB allocatable), 24MCU
    * Device #5: AMD Radeon Pro 555X Compute Engine, 1920/4096 MB (1024 MB allocatable), 12MCU
    
    Benchmark relevant options:
    ===========================
    * --optimized-kernel-enable
    
    -------------------
    * Hash-Mode 0 (MD5)
    -------------------
    
    2022-12-28 17:33:50.699 hashcat[4616:1995240] -[__NSCFArray length]: unrecognized selector sent to instance 0x600003c20cd0
    2022-12-28 17:33:50.700 hashcat[4616:1995240] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray length]: unrecognized selector sent to instance 0x600003c20cd0'
    *** First throw call stack:
    (
    	0   CoreFoundation                      0x00007ff818bc240b __exceptionPreprocess + 242
    	1   libobjc.A.dylib                     0x00007ff81870ee25 objc_exception_throw + 48
    	2   CoreFoundation                      0x00007ff818c5954b -[NSObject(NSObject) __retain_OA] + 0
    	3   CoreFoundation                      0x00007ff818b2c64b ___forwarding___ + 1324
    	4   CoreFoundation                      0x00007ff818b2c088 _CF_forwarding_prep_0 + 120
    	5   AppleIntelKBLGraphicsGLDriver       0x00007ffa26258f38 _ZL20setProgramKernelInfoP20GLDComputeProgramRecPK14__CFDictionary + 174
    	6   AppleIntelKBLGraphicsGLDriver       0x00007ffa26258b4e _ZL19setupGLDProgramDataPvmP20GLDComputeProgramRecP16GLDShareGroupRec + 315
    	7   AppleIntelKBLGraphicsGLDriver       0x00007ffa26383068 gldLinkComputeProgram + 129
    	8   OpenCL                              0x00007ffa2f72a03c clFlush + 55540
    	9   OpenCL                              0x00007ffa2f73613c clLinkProgram + 1330
    	10  hashcat                             0x00000001040e2a1b hc_clLinkProgram + 75
    	11  hashcat                             0x00000001040d2956 load_kernel + 3478
    	12  hashcat                             0x00000001040bf6b4 backend_session_begin + 13700
    	13  hashcat                             0x00000001040e8694 outer_loop + 1172
    	14  hashcat                             0x00000001040e7f72 hashcat_session_execute + 1026
    	15  hashcat                             0x00000001040ab3d0 main + 416
    	16  dyld                                0x00007ff81873b310 start + 2432
    )
    libc++abi: terminating with uncaught exception of type NSException
    [1]    4616 abort      hashcat -b
    
    Post clinfo output
    
    hashcat (v6.2.6-196-g60f98d51d) starting in backend information mode
    
    Metal Info:
    ===========
    
    Metal.Version.: 306.3.4
    
    Backend Device ID #1
      Type...........: GPU
      Vendor.ID......: 2
      Vendor.........: Apple
      Name...........: Intel(R) UHD Graphics 630
      Processor(s)...: 8
      Clock..........: N/A
      Memory.Total...: 1536 MB (limited to 1024 MB allocatable in one block)
      Memory.Free....: 704 MB
      Local.Memory...: 32 KB
      Phys.Location..: built-in
      Registry.ID....: 1639
      Max.TX.Rate....: N/A
      GPU.Properties.: headless 0, low-power 1, removable 0
    
    Backend Device ID #2
      Type...........: GPU
      Vendor.ID......: 2
      Vendor.........: Apple
      Name...........: AMD Radeon Pro 555X
      Processor(s)...: 8
      Clock..........: N/A
      Memory.Total...: 4096 MB (limited to 3072 MB allocatable in one block)
      Memory.Free....: 3968 MB
      Local.Memory...: 32 KB
      Phys.Location..: built-in
      Registry.ID....: 1691
      Max.TX.Rate....: N/A
      GPU.Properties.: headless 0, low-power 0, removable 0
    
    OpenCL Info:
    ============
    
    OpenCL Platform ID #1
      Vendor..: Apple
      Name....: Apple
      Version.: OpenCL 1.2 (Nov  4 2022 20:34:07)
    
      Backend Device ID #3
        Type...........: CPU
        Vendor.ID......: 8
        Vendor.........: Intel
        Name...........: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
        Version........: OpenCL 1.2
        Processor(s)...: 12
        Clock..........: 2600
        Memory.Total...: 16384 MB (limited to 2048 MB allocatable in one block)
        Memory.Free....: 8160 MB
        Local.Memory...: 32 KB
        OpenCL.Version.: OpenCL C 1.2
        Driver.Version.: 1.1
    
      Backend Device ID #4
        Type...........: GPU
        Vendor.ID......: 8
        Vendor.........: Intel Inc.
        Name...........: Intel(R) UHD Graphics 630
        Version........: OpenCL 1.2
        Processor(s)...: 24
        Clock..........: 1150
        Memory.Total...: 1536 MB (limited to 192 MB allocatable in one block)
        Memory.Free....: 704 MB
        Local.Memory...: 64 KB
        OpenCL.Version.: OpenCL C 1.2
        Driver.Version.: 1.2(Dec  1 2022 21:13:10)
    
      Backend Device ID #5
        Type...........: GPU
        Vendor.ID......: 1
        Vendor.........: AMD
        Name...........: AMD Radeon Pro 555X Compute Engine
        Version........: OpenCL 1.2
        Processor(s)...: 12
        Clock..........: 907
        Memory.Total...: 4096 MB (limited to 1024 MB allocatable in one block)
        Memory.Free....: 1920 MB
        Local.Memory...: 32 KB
        OpenCL.Version.: OpenCL C 1.2
        Driver.Version.: 1.2 (Dec  1 2022 21:19:40)
    
    bug 
    opened by L3ss-dev 1
Releases(v6.2.6)
  • v6.2.6(Sep 2, 2022)

    Welcome to hashcat 6.2.6 release!

    This release adds new backend support for Metal, the OpenCL replacement API on Apple, many new hash-modes, and some bug fixes.

    This is a minor release. If you are looking for release notes please refer to docs/changes.txt.

    Source code(tar.gz)
    Source code(zip)
    hashcat-6.2.6.7z(19.98 MB)
  • v6.2.5(Nov 21, 2021)

  • v6.2.4(Aug 29, 2021)

    Welcome to hashcat 6.2.4 release!

    This release adds performance improvements, a new rule-engine function, several new hash-modes, and bug fixes.

    This is a minor release. If you are looking for release notes please refer to docs/changes.txt.

    Source code(tar.gz)
    Source code(zip)
    hashcat-6.2.4.7z(7.10 MB)
  • v6.2.3(Jul 16, 2021)

    Welcome to hashcat 6.2.3 release!

    This release adds an entire new compute backend (HIP), CPU hardware monitor support, several new hash-modes, bug fixes and improvements.

    This is a minor release. If you are looking for release notes please refer to docs/changes.txt.

    Source code(tar.gz)
    Source code(zip)
    hashcat-6.2.3.7z(6.62 MB)
  • v6.2.2(Jun 13, 2021)

  • v6.2.1(May 15, 2021)

  • v6.2.0(May 14, 2021)

  • v6.1.1(Jul 29, 2020)

  • v6.1.0(Jul 28, 2020)

  • v6.0.0(Jun 16, 2020)

    Welcome to hashcat 6.0.0 release!

    This release is about new hash-mode plugin interface, new backend API interface, expanding support for new algorithms and fixing bugs.

    Thanks to everyone who contributed to this release!!!

    Full release notes: https://hashcat.net/forum/thread-9303.html

    Source code(tar.gz)
    Source code(zip)
    hashcat-6.0.0.7z(5.68 MB)
  • v5.1.0(Dec 2, 2018)

  • v5.0.0(Oct 28, 2018)

  • v4.2.1(Aug 7, 2018)

    Bugfix release:

    • Try to evaluate available OpenCL device memory and use this information instead of total available OpenCL device memory for autotune
    • Fixed a buffer overflow in precompute_salt_md5() in case salt was longer than 64 characters
    Source code(tar.gz)
    Source code(zip)
    hashcat-4.2.1.7z(2.59 MB)
  • v4.2.0(Aug 2, 2018)

  • v4.1.0(Feb 21, 2018)

  • v4.0.1(Nov 7, 2017)

    Bugfix release:

    • Fixed a memory leak while parsing a wordlist
    • Fixed compile of kernels on AMD systems on windows due to invalid detection of ROCm
    • Fixed compile of sources using clang under MSYS2
    • Fixed overlapping memory segment copy in CPU rule engine if using a specific rule function
    • Fixed a parallel build problem when using the "install" Makefile target
    • Fixed the version number extraction for github releases which do not including the .git directory
    Source code(tar.gz)
    Source code(zip)
  • v4.0.0(Oct 27, 2017)

    Welcome to hashcat 4.0.0 release! This release is mostly password and salt length up to 256 support.

    Thanks to everyone who contributed to this release!!!

    Full changelog: https://hashcat.net/forum/thread-6965.html

    Source code(tar.gz)
    Source code(zip)
  • v3.6.0(Jun 9, 2017)

    Welcome to hashcat v3.6.0 release! This release is mostly about new algorithms added.

    Thanks to everyone who contributed to this release!!!

    Full changelog: https://hashcat.net/forum/thread-6630.html

    Source code(tar.gz)
    Source code(zip)
  • v3.5.0(Apr 5, 2017)

    Welcome to hashcat v3.5.0 release! This is just a smaller update, mostly bugfixes.

    I recommend upgrading even if you did not face any errors with older versions.

    Thanks to everyone who contributed to this release!!!

    Source code(tar.gz)
    Source code(zip)
  • v3.40(Mar 3, 2017)

    Welcome to hashcat v3.40 release!

    The major changes are the following:

    • Added support to crack iTunes backups: https://hashcat.net/forum/thread-6047.html
    • Added support to crack LUKS volumes: https://hashcat.net/forum/thread-6225.html
    • Added support for hccapx files: https://hashcat.net/forum/thread-6273.html

    There's also a ton of bugfixes thanks to some very good reports from the users and others found while adding hashcat to the Coverity CI.

    I recommend upgrading even if you did not face any errors with older versions.

    Thanks to everyone who contributed to this release!!!

    Source code(tar.gz)
    Source code(zip)
  • v3.30(Jan 6, 2017)

    The refactorization of version 3.20 was so extreme it was almost impossible to not bring in a few bugs. This version 3.30 is mostly about bugfixes, but there's also some new features and a new hash-mode. I recommend upgrading even if you did not face any errors with older versions. Thanks to everyone who contributed to this release!!!

    For full details please see docs/changes.txt

    Source code(tar.gz)
    Source code(zip)
  • v3.20(Dec 2, 2016)

    The hashcat core was completely refactored to be a MT-safe library (libhashcat). The goal was to help developers include hashcat into distributed clients or GUI frontends. The CLI (hashcat.bin or hashcat.exe) works as before but from a technical perspective it's a library frontend.

    There's also new features, new hash-modes, many bugfixes and performance improvements.

    We recommend upgrading even if you did not face any errors with older versions.

    For full details please see docs/changes.txt

    Source code(tar.gz)
    Source code(zip)
  • v3.10(Aug 19, 2016)

    This release is mostly a bugfix and maintainance release, plus a small set of new features and a new hash-mode.

    We recommend upgrading even if you did not face any errors with v3.00.

    Most important changes:

    • Added some workarounds to deal with problems caused by broken OpenCL installation on the host system
    • Improved rule-engine: Enabled support to use the missing @ rule on GPU
    • Improved rule-engine: On Nvidia, the rule-engine got a small performance improvement

    For details please see docs/changes.txt

    Source code(tar.gz)
    Source code(zip)
  • v3.00(Jun 29, 2016)

    hashcat v3.00

    There are a multitude of changes with this release; I'll try to describe them all at the level of detail they deserve.

    Fusion of hashcat and oclHashcat (CPU + GPU)

    This was a big milestone which I've planned for a very long time. If you know me, or if you're idling on our IRC channel (#hashcat on Freenode), you probably knew that this was on my agenda for many years. To those of you who don't know what I'm talking about:

    There are two different versions of hashcat.

    • One that was utilizing your CPU (hashcat)
    • One that was utilizing your GPU (oclHashcat)

    But that's changed...

    This fusion became possible because of the following preparations:

    • Going Open Source, which enabled the use of the JIT compiler.
    • Provide the OpenCL kernels as sources instead of binaries for every hardware and algorithm.
    • Full OpenCL device type integration (I'll explain later in detail).
    • A complete rewrite of the SIMD handling from scratch.

    The latter was important to make use of CPU specific extensions (like XOP, AVX2, etc) from within OpenCL. It also had a positive side-effect on GPU, because it reduced the number of registers required in the kernel to 1/Nth of the previous required registers where N is the SIMD width at which an hash-mode is running with.

    Here are a few of the advantages of having just one fusioned tool:

    • Supported hashes are now in sync. For example, oclHashcat had support to crack TrueCrypt container while hashcat did not.
    • Supported options are now in sync. For example, oclHashcat had support for --stdin while hashcat did not.
    • It's no longer required to know all of the specific limits both programs have. For example, the maximum supported password- and salt-length.
    • Tutorials and Videos you find in the wild will be less confusing. Some explained hashcat while others explained oclHashcat. This was often very frustrating for new users who may have been following along with a tutorial for the wrong application.
    • Developers no longer need to back-port one hash-mode from hashcat to oclHashcat or vice versa. This means no more waiting for algorithms to appear in one version or another, you will be able to immediately use the algorithms on both CPU and/or GPU.
    • Package maintainers can also integrate much more easily hashcat into a distribution package.
    • A single tool means less dependencies. This could mean that you will see more distribution-specific packages in the near future.
    • Last but not least, it's simply easier and more compact to say, and everyone knows what you're talking about when you say "hashcat".

    Oh... speaking about hashcat CPU, to help distinguish them in the future, I'll rename it to hashcat-legacy.

    Newly added hash-modes

    • ArubaOS
    • Android FDE (Samsung DEK)
    • RAR5
    • Kerberos 5 TGS-REP etype 23
    • AxCrypt
    • AxCrypt in memory SHA1
    • Keepass 1 (AES/Twofish) and Keepass 2 (AES)
    • PeopleSoft PS_TOKEN
    • WinZip
    • VeraCrypt
    • Windows 8+ phone PIN/Password

    Some special notes about optimizations: Behind the WinZip KDF optimization

    Support to utilize multiple different OpenCL platforms in parallel

    Here's a list of OpenCL runtimes that are supported and have been tested by either myself, or some of the hashcat beta testers:

    • AMD OpenCL runtime
    • Apple OpenCL runtime
    • NVidia OpenCL runtime (replaces CUDA)
    • Mesa (Gallium) OpenCL runtime
    • Pocl OpenCL runtime
    • Intel (CPU, GPU and Accelerator) OpenCL runtime

    I tried to stay as close as possible to the OpenCL specifications. That means, if you have a device which comes with an OpenCL runtime it should work. That could also be, for example, an OpenCL runtime that supports utilizing a FPGA. Some of the FPGA vendors, that provide such an OpenCL runtime have just not been available to me for testing.

    Another addition to the support of mixed OpenCL platforms is the ability to run them in parallel and within the same hashcat session. Yes, that actually means you can put both an AMD and an NVidia GPU into your system and make use of both. There still may be some work needed to properly utilize multiple sets of drivers. More information may be provided on the wiki later.

    In case you do not want a specific OpenCL runtime to be used, you can select specific platforms to be used with the new --opencl-device-platforms command line option.

    Support to utilize OpenCL device types other than GPU

    When it comes to compatibility, oclHashcat was limited to just two different vendors: AMD and NVidia. They provide the fastest GPUs by far, and it was therefore important to support them, but there are many other options available that aren't even building a GPU.

    As a result, hashcat will support the following device types:

    • GPU
    • CPU
    • APU
    • DSP
    • FPGA
    • Coprocessor
    • Anything else which comes with an OpenCL runtime

    For example, Intel CPUs will now instantly pop up as an available OpenCL device after you've installed the Intel OpenCL runtime.

    Support to utilize multiple different OpenCL device types in parallel

    When I've redesigned the core that handles the workload distribution to multiple different GPUs in the same system, which oclHashcat v2.01 already supported. I thought it would be nice to not just support for GPUs of different kinds and speed but also support different device types. What I'm talking about is running a GPU and CPU (and even FPGA) all in parallel and within the same hashcat session.

    Beware! This is not always a clever thing to do. For example with the OpenCL runtime of NVidia, they still have a 5-year-old-known-bug which creates 100% CPU load on a single core per NVidia GPU (NVidia's OpenCL busy-wait). If you're using oclHashcat for quite a while you may remember the same bug happened to AMD years ago.

    Basically, what NVidia is missing here is that they use spinning instead of yielding. Their goal was to increase the performance but in our case there's actually no gain from having a CPU burning loop. The hashcat kernels run for ~100ms and that's quite a long time for an OpenCL kernel. At such a scale, spinning creates only disadvantages and there's no way to turn it off (Only CUDA supports that).

    But why is this a problem? If the OpenCL runtime spins on a core to find out if a GPU kernel is finished it creates 100% CPU load. Now imagine you have another OpenCL device, e.g. your CPU, creating also 100% CPU load, it will cause problems even if it's legitimate to do that here. The GPU's CPU-burning thread will slow down by 50%, and you end up with a slower GPU rate just by enabling your CPU too (--opencl-device-type 1). For AMD GPU that's not the case (they fixed that bug years ago.)

    To help mitigate this issue, I've implemented the following behavior:

    • Hashcat will try to workaround the problem by sleeping for some precalculated time after the kernel was queued and flushed. This will decrease the CPU load down to less than 10% with almost no impact on cracking performance.
    • By default, if hashcat detects both CPU and GPU OpenCL devices in your system, the CPU will be disabled. If you really want to run them both in parallel, you can still set the option --opencl-device-types to 1,2 to utilize both device types, CPU and GPU.

    Here's some related information:

    Added makefile native compilation targets; Adds GPU support for OSX and *BSD

    To make it even easier for everyone to compile hashcat from sources (which hopefully also increases the number of commits from the community), I've decide to add a target for a native build. That should help to compile hashcat on Linux, OSX, *BSD and some other exotic operating systems.

    But it turned out that I could not simply add a native compilation target to the Makefile without doing some preparations.

    • For example, on Linux the first step was to achieve Linux FHS compatibility.
    • Another preparation would be having a hashcat binary (without a .bin extension) somewhere located in /usr/local/bin.
    • Ideally a Makefile which provides a PREFIX and DESTDIR variables to modify that and finally to have our files that need to be accessible by all users somewhere at /usr/share/hashcat or so.

    But when I started to implement that it turned out, again, that this is not fully ideal. There was still the problem of where to store pot files, dict files, etc. The logical answer was to add support for a home directory-specific folder. That folder is named $HOME/.hashcat/ and it will be automatically created by hashcat. You can also remove it whenever you want (hashcat will continue to work and will recreate it as needed.)

    In summary, the following changes were mandatory:

    • Added a native Makefile target
    • Added an install and uninstall Makefile target
    • Added true Linux FHS compatibility
    • Added separate Install-, Profile- and Session-folder

    These changes are only active once the install target (make install) is excecuted, those who choose not to install will use the source directory as it has been in the past.

    Here's the full discussion:

    Fewer Dependencies

    Here's another piece of great news: There are no longer dependencies on AMD-APP-SDK, AMD-ADL, NV-CUDA-SDK, NV-Drivers, NV-NVML or NV-NVAPI.

    Our first OSS version of oclHashcat just had too much dependencies; and they were all required to compile oclHashcat. We tried to provide a script to handle these for you (deps.sh), but you still had to download the archives yourself. That wasn't very comfortable and surely held back people from compiling oclHashcat, leaving them to use the binary version instead.

    Having dependencies in general is not always bad, but it creates some overhead for both developers and package maintainers. Regular users usually do not notice this. Having no dependencies usually result in less features, so how did we manage to get rid of the dependencies while maintaining the features they provided at the same time?

    The answer is simple. For both Linux and Windows we simply used their dynamic library loading capability instead of linking the libraries at compile time. So don't get me wrong here, we still use those libraries, we just load them at runtime.

    This provides a lot of advantages for both users and developers, such as:

    • The library libOpenCL.so on Linux was load as-is. This was a problem when a user had a bad OpenCL installation that created libOpenCL.so.1. Unless the user fixed the filename or created a link the binary would be unable to locate the library.
    • The Windows binary becomes smaller since it does not need to ship the code, it reuses the code from your installed library.
    • For developers, there is no longer a need to have a 32 bit and a 64 bit library object. That was always a problem with NVML provided by the Nvidia drivers; we had to manually symlink them to get them working.
    • The installed library does not need to be of the same version as the one used by the person who compiled the hashcat binary. For example, if you remember this error you know what I'm talking about: ./oclHashcat64.bin: /usr/lib/x86_64-linux-gnu/libOpenCL.so.1: version 'OPENCL_2.0' not found (required by ./oclHashcat64.bin)
    • Package maintainers should now have a really easy job. No more (compile-time) dependencies means way less work.

    Added auto-tuning engine and user-configurable tuning database

    The auto-tuning engine is exactly what it says it is, it automatically tunes the -n and -u parameters (aka workload) to a value which gives you the best performance to reach a specific kernel runtime.

    To understand what that means you need to understand that the kernel runtime influences the desktop response time. If you don't care about desktop lags (because you have a dedicated cracking machine) you simply set -w 3 and everything is fine. In that case, hashcat will optimize kernel runtime to a very efficient one. Efficient in terms of power consumption/performance. There's indeed a way for us to control how much power your GPU consumes while cracking. It's like a car. If you want to drive it with 220 km/h it consumes twice as much gas as if you run it with 200km/h. Well not exactly but you get the idea.

    Having said that, the best way to control your workload is all about -w now. There's still -n and -u, but this is mostly for development and debugging use. There's a total of 4 different workload settings, here's a snippet of --help:

    | # | Performance | Runtime | Power Consumption | Desktop Impact |
    |---|-------------|---------|-------------------|----------------|
    | 1 | Low         |    2 ms | Low               | Minimal        |
    | 2 | Default     |   12 ms | Economic          | Noticeable     |
    | 3 | High        |   96 ms | High              | Unresponsive   |
    | 4 | Nightmare   |  480 ms | Insane            | Headless       |
    

    The -w setting will be default to number "2". But also number "1" could be interesting, in case you're watching an HD video, or if you're playing a game.

    OK, so there's an auto-tuning engine that controls -n and -u, so what is that tuning database used for? If, for whatever reason, you do not like the setting the auto-tuning engine has calculated for you, you can force a specific -n and -u setting to be used. This also decreases the startup time a bit, because hashcat does not need to test runtimes with setting N and U.

    But there's another setting to be controlled from within the database. It's the vector width, which is used within the OpenCL kernel. But note, not all kernel support a vector width greater than 1. The vector width can also be controlled with the new command line parameter --opencl-vector-width.

    At this point I don't want to get too much into the details of the new auto-tuning engine, especially the database (hashcat.hctune). There's a lot of more information needed for you to make your own database.

    Therefore, please read this dedicated thread: The Autotune Engine

    Extended Hardware-Management support

    With the increased interest in power consumption per GPU, vendors started to add complicated clock speed changes from inside the driver and the GPU BIOS. The problem with that is, some of the settings are related to the workload, some to the power consumption, and some to temperature. This can increase the complexity of troubleshooting hashcat issues (for example, if you are trying to determine why cracking performance has rather suddenly and dramatically dropped.) To prevent users sending in invalid "bug" reports related to performance, I decided to add the clock and memory rate of the current GPU to the status display. The user will notice the clocks jumping around as the speeds jump around and hopefully realize that there's something wrong with their setup.

    Most of the time it's a cooling issue. In the past oclHashcat already showed the temperature in the status display, but the problem is that current drivers may try to hold a target temperature by either increasing the fan speed or by decreasing the clock rate. The latter case will lead the user to the false assumption their setup is well cooled; the speed dropped over time but since the temperature was not going up, they did not make the link that the clocks have been decreased.

    Switching from NVAPI to NVML will be a very important change for setups using NVidia GPU and Windows. NVidia is actually distributing a 64 bit bit .dll for NVML with their latest driver version and hashcat will find the .dll by checking the Windows registry. If it does not find it, you can also simply copy the nvml.dll into hashcat installation folder (though that should not be necessary). There's another reason why we've switched to NVML. AMD users already had a workaround to disable the GPU bios trying to optimize power consumption. They simply switched on the flag --powertune-enable which sets the maximum power the GPU can consume to 120%, the same way as you can do it by using e.g. MSI Afterburner. With hashcat, and because we're using NVML now, this option is also available to NVidia users.

    There is still a sole exception of the nvapi, i.e. the usage of NVAPI calls in ext_nvapi.c: hashcat needs this NVAPI dependency to recognize the core clock throttling in case temperatures exceed the threshold and become too high/hot. This is a configurable setting in Windows (for example, this may be modified with Afterburner.)

    Added the option to quit at next restore checkpoint

    One important user interface change that you might immediately recognize is the new checkpoint-stop feature. This new feature is visible at the status prompt, which now has a sixth option labeled [c]heckpoint (in addition to the previous: [s]tatus, [p]ause, [r]esume, [b]ypass and [q]uit).

    The goal of this new feature is to tell hashcat that it should delay stopping until it reaches the next restore point. Hitting the "q" key on your keyboard and "quitting" is not always the best choice; doing so will force hashcat to stop immediately, wherever the workload is. Since the restore option (--restore) works on batched key space segments, this could lead to re-calculating work you have already done or even missing candidates alltogether when trying to restore your session.

    Stopping at checkpoints will make sure a particular workload segment is completed and a checkpoint is reached before terminating. This means no duplicate work or lost candidates when restoring sessions. We could say this new feature is an intelligent version of quitting hashcat.

    You will notice that the "Status" line in the status display will change to Running (stop at checkpoint) whenever you enable this new feature. However, if you have hit stop by mistake, or first decided to stop at the next checkpoint but then changed your mind, you can cancel the checkpoint stop just by hitting the c key on your keyboard again. This will change from Running (stop at checkpoint) back to Running to let you know the checkpoint stop has been aborted.

    Please note that quitting hashcat with the checkpoint-stop prompt option might take a little bit longer compared to stopping it with the "q" key. The total time depends on many factors, including the selected workload profile (-w), the type of hashes you run (-m), the total number of salts, etc.

    Performance

    In addition to all the improvements and newly added features, I'm always keen to optimize the performance.

    The changes in performance from oclHashcat v2.01 to hashcat v3.00 largely depend on the combination of hash-mode and GPU. Here's a Spreadsheet that shows the changes in a more easy-to-read format, separated by hash-mode and GPU:

    Hashcat v2.01 -> v3.00 performance comparison

    Note that with older NVidia GPUs, and by old I mean before maxwell chipsets, there is a drop in performance. That is simply because NVidia's runtime isn't/wasn't optimized for OpenCL. They were made at a time when NVidia focused purely on CUDA and it seems they are not putting any effort in updating for older cards. In case you buy a NVidia GPU next time, just make sure it's of Shader Model 5.0 or higher.

    Also note that the benchmarks for hashcat v3.00 were created using the option --machine-readable which now can be used in combination with --benchmark. This makes comparisons of the performance to older versions much easier. Also the time it takes to complete a full benchmark was reduced significantly. While it was around 45 minutes on hashcat v2.01, it's now just 20 minutes with hashcat v3.00 and that's including the new hash-modes, which were not available in v2.01.

    I did not compare CPU performance of hashcat v2.01 to hashcat v3.00 but you can be sure it is either faster or at least even. Just one example, NTLM performance on my i7-6700 CPU increased from 95.64MH/s to 1046.1 MH/s, which is by the way new world record for cracking NTLM on CPU.

    ... and there still more, ... really!

    If you want to know about all the changes please take a look at the redesigned docs/changes.txt file. It includes all the fixed bugs and other changes, mostly interesting for developers, package maintainer and hashcat professionals.

    Here's a small preview:

    • Added support for [i]--gpu-temp-retain[/i] for NVidia GPU, both Linux and Windows
    • Added option [i]--stdout[/i] to print candidates instead of trying to crack a hash
    • Added human-readable error message for the OpenCL error codes
    • Redesigned docs/changes.txt layout
    • Redesigned [i]--help[/i] menu layout
    • Added [i]-cl-std=CL1.1[/i] to all kernel build options
    • ...
    Source code(tar.gz)
    Source code(zip)
Passbolt - Open source password manager for teams

Passbolt - Open source password manager for teams

Passbolt 10 Oct 29, 2022
An implementation of Advanced Encryption Standard with calculative optimization

An implementation of Advanced Encryption Standard with calculative optimization. Complete round operations in a single function.

Echo Heath 1 Jan 24, 2022
x509cert is a tool and library for generating X.509 certificates and certificate requests.

x509cert is a tool and library for generating X.509 certificates and certificate requests. It is written in C99 and uses BearSSL to decode keys and compute signatures.

Michael Forney 10 Sep 5, 2022
HashLibPlus is a recommended C++11 hashing library that provides a fluent interface for computing hashes and checksums of strings, files, streams, bytearrays and untyped data to mention but a few.

HashLibPlus HashLibPlus is a recommended C++11 hashing library that provides a fluent interface for computing hashes and checksums of strings, files,

Telepati 6 Dec 22, 2022
Text-Crypt is a tool which encrypts and decrypts texts using a specific and certain key.

Text-Crypt is a tool which encrypts and decrypts texts using a specific and certain key. This tool uses Caesar Cypher Algorithm to encrypt and decrypt a given text.

AnonabdulJ 4 Dec 24, 2021
An open source, portable, easy to use, readable and flexible SSL library

README for Mbed TLS Mbed TLS is a C library that implements cryptographic primitives, X.509 certificate manipulation and the SSL/TLS and DTLS protocol

Arm Mbed 3.9k Jan 7, 2023
TLS/SSL and crypto library

Welcome to the OpenSSL Project OpenSSL is a robust, commercial-grade, full-featured Open Source Toolkit for the Transport Layer Security (TLS) protoco

OpenSSL 20.5k Jan 6, 2023
Library and command line tool to detect SHA-1 collision in a file

sha1collisiondetection Library and command line tool to detect SHA-1 collisions in files Copyright 2017 Marc Stevens [email protected] Distributed

Marc Stevens 1.2k Dec 29, 2022
Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

Tink A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. Ubuntu

Google 12.9k Jan 9, 2023
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Jan 6, 2023
MIRACL Cryptographic SDK: Multiprecision Integer and Rational Arithmetic Cryptographic Library is a C software library that is widely regarded by developers as the gold standard open source SDK for elliptic curve cryptography (ECC).

MIRACL What is MIRACL? Multiprecision Integer and Rational Arithmetic Cryptographic Library – the MIRACL Crypto SDK – is a C software library that is

MIRACL 524 Jan 2, 2023
BTCU Wallet is the original Bitcoin Ultimatum client and it builds the backbone of the network.

The concept of BTCU is similar to the concept of the second cryptocurrency by capitalization - Ethereum.

Bitcoin Ultimatum (BTCU) 31 Jul 1, 2022
Ethereum miner with OpenCL, CUDA and stratum support

Ethminer is an Ethash GPU mining worker: with ethminer you can mine every coin which relies on an Ethash Proof of Work thus including Ethereum, Ethereum Classic, Metaverse, Musicoin, Ellaism, Pirl, Expanse and others. This is the actively maintained version of ethminer. It originates from cpp-ethereum project (where GPU mining has been discontinued) and builds on the improvements made in Genoil's fork. See FAQ for more details.

null 5.9k Jan 3, 2023
Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies.

Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

Nano 3.5k Jan 7, 2023
Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies.

Nano is a digital payment protocol designed to be accessible and lightweight, with a focus on removing inefficiencies present in other cryptocurrencies. With ultrafast transactions and zero fees on a secure, green and decentralized network, this makes Nano ideal for everyday transactions.

Nano 3.1k May 5, 2021
PTHash is a C++ library implementing fast and compact minimal perfect hash functions

Fast and compact minimal perfect hash functions in C++.

Giulio Ermanno Pibiri 90 Jan 3, 2023
A lightweight and simpling iOS binary decryptor

FlexDecrypt's source code is pretty FAT, bundling the whole swift runtime to just achieve a simple mremap_encrypted.

null 210 Jan 7, 2023