Changes
Changes
##
## Algorithms
##
##
## Features
##
- Added new backend support for Metal, the OpenCL replacement API on Apple
- Added support to building universal macOS binary on Apple Silicon
- Added support to use --debug-mode in attack-mode 9 (Association Attack)
- Added hex encoding format for --separator option
- Added password candidates range to --status-json output
- Added parameter to Bitwarden mode for second iteration count
- Added support to use 'John the Ripper' hash format with hash-type 13100
- Added support to use 'John the Ripper' hash format with hash-type 18200
- Added the hash extraction scripts from the tools folder also to beta/release
versions
- Added user advice if a hash throws 'token length exception'
- Added tunings/ folder in order to replace hashcat.hctune. Configuration files
with *.hctune suffix are automatically load on startup
##
## Bugs
##
##
## Technical
##
- AMD Driver: Updated requirements for AMD Linux drivers to "AMDGPU" (21.50 or
later) and "ROCm" (5.0 or later)
- AMD Driver: Updated requirements for AMD Windows drivers to "AMD Adrenalin
Edition" (Adrenalin 22.5.1 exactly)
- Association Attack: Enable module specific pw_min and pw_max settings to avoid
false positives in -a 9 attack-mode
- Autotune: Added error handling. By default skipping device on error, with --force
using accel/loops/threads min values instead
- Backend: improved management of systems with multiple OpenCL platforms
- Backend Info: Added folder_config info to output
- Backend Info: Added generic system info to output (must be completed on Windows
side)
- Backend Info: Added local memory size to output
- Backend: with kernel build options, switch from -I to -D INCLUDE_PATH, in order
to support Apple Metal runtime
- Command Line: Disallow combinations of some options. for instance, using -t in -a
0 mode
- CUDA Backend: moved functions to ext_cuda.c/ext_nvrtc.c and includes to
ext_cuda.h/ext_nvrtc.h
- Debug Rules: Set --debug-file to $session.debugfile if --debug-mode was set by
the user and --debug-file was not set
- Hardware Monitor: Add support for GPU device utilization readings using iokit on
Apple Silicon (OpenCL and Metal)
- Hash Info: show more information (Updated Hash-Format. Added Autodetect, Self-
Test, Potfile and Plaintext encoding)
- HIP Backend: moved functions to ext_hip.c/ext_hiprtc.c and includes to
ext_hip.h/ext_hiprtc.h
- HIP Backend: removed unused functions from hiprtc to workaroung missing function
symbols on windows dll
- Kernels: Refactored standard kernel declaration to use a structure holding
u32/u64 attributes to reduce the number of attributes
- Kernels: Refactored standard kernel includes, KERN_ATTR macros and RC4 cipher
functions, in order to support Apple Metal runtime
- Kernels: Set the default Address Space Qualifier for any pointer, in order to
support Apple Metal runtime
- Logfile: Write per-session "recovered new" value to logfile
- Makefile: updated MACOSX_DEPLOYMENT_TARGET to 10.15 and removed OpenCL framework
from LFLAGS_NATIVE on MacOS
- Metal Runtime: added support for vectors up to 4
- Modules: Added suffix *legacy* to old TrueCrypt modules (6211-6243)
- Modules: Added suffix *legacy* to old VeraCrypt modules (13711-13783)
- Modules: Added support of a custom charset setting for benchmarks to the module
interface
- Modules: New LUKS v1 modules (29511-29543) which do not use
`module_hash_binary_parse` to get data from containers anymore (use new tool
`tools/luks2hashcat.py`)
- Modules: New TrueCrypt modules (29311-29343) which do not use
`module_hash_binary_parse` to get data from containers anymore (use new tool
`tools/truecrypt2hashcat.py`)
- Modules: New VeraCrypt modules (29411-29483) which do not use
`module_hash_binary_parse` to get data from containers anymore (use new tool
`tools/veracrypt2hashcat.py`)
- Modules: Renamed old LUKS module into LUKS v1 and added suffix *legacy* (14600)
- OpenCL Backend: added workaround to make optimized kernels work on Apple Silicon
- OpenCL Backend: moved functions to ext_OpenCL.c and includes to ext_OpenCL.h
- OpenCL Backend: show device_type in device list info on Apple Silicon
- OpenCL Kernel: Set native_threads to 32 on Apple GPU's for various hash-modes
- OpenCL Runtime: Added support to use Apple Silicon compute devices
- OpenCL Runtime: Add some unstable warnings detected on macOS
- OpenCL Runtime: Set default device-type to GPU with Apple Silicon compute devices
- Restore: Restore timer is decreased from 60 seconds to 1 second, but only updates
if there's actually a change compared to previous data written to restore file
- Rules: Add new rulesets from T0XlC: T0XlCv2, T0XlC_3_rule,
T0XlC_insert_HTLM_entities_0_Z
- Rules: Add support to include source wordlist in debugging format
- Rules: Update hand-written rulesets to covers years up to 2029
- Status code: updated negative status code (added kernel create failure and
resync)
- Status code: updated negative status code, usefull in Unit tests engine (test.sh)
- Terminal: Increased size of hash name column in `--help` and `--identify` options
- Terminal: Limit output length of example hash in --example-hash mode to 200. Use
--mach to see full example hash
- Terminal: show empty OpenCL platforms only in backend information mode
- Tuning Database: Added a warning if a module implements
module_extra_tuningdb_block but the installed computing device is not found
- Unit tests: added -r (--runtime) option
- Unit tests: handle negative status code, skip deprecated hash-types, skip hash-
types with known perl modules issues, updated output
- Unit tests: Updated test.sh to set default device-type to CPU with Apple Intel
and added -f (--force) option
- Usage Screen: On windows console, wait for any keypress if usage_mini_print() is
used
- User Options: Add new module function module_hash_decode_postprocess() to
override hash specific configurations from command line
- User Options: Change --backend-info/-I option type, from bool to uint
- Workflow: Added basic workflow for GitHub Actions
##
## Algorithms
##
##
## Performance
##
- PDF Kernel (10700): Improved performance on AMD GPUs by using shared memory for
the scratch buffer and disabled inlining to save spilling
##
## Bugs
##
##
## Technical
##
- AMD Driver: Updated requirements for AMD Linux drivers to ROCm 4.5 or later due
to new HIP interface
- Backend devices: In -S mode, limit the number of workitems so that no more than
2GB of host memory is required per backend device
- Backend devices: In non -S mode, limit the number of workitems so that no more
than 4GB of host memory is required per backend device
- Backend types: The default filter for the device types is now set so that only
the GPU is used, except for APPLE, where we set CPU
- Benchmark: Update benchmark_deep.pl with new hash modes added (also new hash
modes which were added with v6.2.3)
- Electrum Wallet: Added new entropy-based check to test whether the decryption was
successful or not
- Module Optimizers: Added OPTS_TYPE_MAXIMUM_THREADS to deactivate the else branch
route in the section to find -T before compilation
- Makefile: Added wildcard include src/modules/module_*.mk directive so that plugin
developers can add 3rd party libraries for their plugins
- Rejects: Disabled checking of the minimum and maximum length of the password
candidate in attack-mode 9 because they are incompatible
- POCL: Added a workaround for an issue in POCL where a quote character is used as
a part of the path itself which is passed as a path for the -I option
- Device Threads: The default maximum device thread number has been reduced from
1024 to 256, users can still overwrite with the -T option
- Tuning-DB: Add missing entries for -m 25600 and -m 25800 for CPU cracking
- OpenCL Backend: added workaround to support Apple Silicon (GPU: M1, M1 Pro, and
M1 Max)
- MacOS v10.8+ (PBKDF2-SHA512): Added support for parsing new mac2john hash format
directly in the module for -m 7100
##
## Algorithms
##
##
## Features
##
##
## Bugs
##
##
## Performance
##
- AMD GPUs: Add inline assembly code for md5crypt, sha256crypt, PDF 1.7, 7-Zip,
RAR3, Samsung Android and Windows Phone 8+
- AMD GPUs: On the Apple OpenCL platform, we ask for the preferred kernel thread
size rather than hard-coding 32
- Backend Interface: Replace most of the blocking Compute API functions with
asynchronous ones to improve GPU utilization
- Blake Kernels: Optimize 3/4 BLAKE2B_ROUND() 64-bit rotations with inline assembly
hc_byte_perm_S() calls
- Blowfish Kernels: Backport optimizations to reduce bank conflicts from bcrypt to
Password Safe v2 and Open Document Format (ODF) 1.1
- ECC secp256k1: The inline assembly code for AMD GPUs has been removed as the
latest JIT compilers optimize it with the same efficiency
- HIP Kernels: Enable vector data types for HIP kernels for functionality and
performance
- Kernel threads: Use warp size / wavefront size query instead of hard-coded values
as the basis for kernel threads
- SCRYPT Kernels: Improve Hashcat.hctune entries for many NV and AMD GPUs for hash
mode 8900, 9300, 15700 and 22700
- STDIN: Reduce the performance gap between stdin and wordlist by disabling the --
stdin-timeout-abort check after 1000 successful reads
- Tuning Database: Add new module function module_extra_tuningdb_block() to extend
hashcat.hctune content from a module
##
## Technical
##
- 7-Zip Hook: Increase the supported data length from 320kb to 8mb
- ADL: Updated support for AMD Display Library to 15.0, updated data types
- AMD Driver: Updated requirements for AMD Linux drivers to ROCm 4.3 or later due
to new HIP interface
- AMD Driver: Updated requirements for AMD Windows drivers to Adrenalin 21.2.1 or
later due to new ADL library
- Autotune: Add autotune event to inform the user about autotune is
starting/stopping on startup
- Backend Interface: Implement gpu_bzero() as a gpu_memset() replacement, since all
gpu_memset() operations used 0 as the value
- Backend Interface: Improve the query kernel's dynamic memory size based on
DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN instead of BF
- Brain Session: Adds hashconfig-specific opti_type and opts_type parameters to the
session calculation to enable cover functions like -O
- Commandline: Fix some memory leaks in case hashcat aborts due to command line
parameter settings
- Commandline: Throw an error if the separator specified by the user with the -p
option is not exactly 1 byte
- Community: Add link to new hashcat discord to docs/contact.txt
- Constants: Make const char * pointers actually const char * const pointers
- Deprecated Plugins: Add new module function module_deprecated_notice() to mark a
plugin as deprecated and to return a free text user notice
- Deprecated Plugins: Marked plugins 2500/2501 and 16800/16801 as deprecated
- Encoding: Truncate password candidates in UTF8 -> UTF16 conversion if it contains
an invalid UTF8 byte sequence
- Filehandling: Avoid direct access to some file handles and use internal
structures instead
- Filehandling: Use const char for fopen mode to fix -Wwrite-strings warnings
- Hardware Monitor: Added support for OverDrive 7 and 8 based GPUs
- HIP Kernels: Dependency on hip/hip runtime.h has been removed to enable easier
integration of the HIP backend under Windows
- Kernel cache: Add kernel threads for hash calculation, which will later be used
in the file name of the kernel cache
- Memory Management: Check in OpenCL that CL_DEVICE_HOST_UNIFIED_MEMORY is true and
if so, then half of the available memory
- Memory Management: Refactored the code responsible for limiting kernel accel with
the goal to avoid low host memory situations
- MetaMask: Added special extraction tool for MetaMask wallets
- NEO driver: Activate the NEO driver (Intel GPU) after it passed several tests in
hashcat using the latest NEO driver version
- OpenCL Runtime: The use of clUnloadPlatformCompiler () was disabled after some
users received unexpected return codes
- OpenCL Runtime: Workaround for Intel OpenCL runtime: segmentation fault when
compiling hc_enc_next() / hc_enc_next_global()
- Potfile: Fixed some leaks in potfile_*_open(), potfile_*_close(),
potfile_destroy() and don't assume plain file
- RC4 Kernels: Use improved native thread derivation for RC4-based hash modes 7500,
13100, 18200, 25400
- Shared Memory: Calculate the dynamic memory size of the kernel based on
CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK_OPTIN
- Slow kernels: Set some of the slowest kernels to OPTS_TYPE_MP_MULTI_DISABLE to
make it easier to handle small word lists
- Status view: Add hash-mode (-m number) in addition to hash-name
- Vendor Discovery: Add "Intel" as a valid vendor name for GPUs on macOS
- MetaMask: Increase the supported data len from 784b to 3136b and set pw-min to 8
##
## Algorithms
##
##
## Features
##
- Added new backend support for HIP, an OpenCL alternative API for AMD GPUs
(similar to CUDA for NVIDIA GPUs)
- Added option --markov-inverse to inverse markov statistics, with the idea of
reversing the order of the password candidates
- Added temperature watchdog and fanspeed readings for CPU and GPU on macOS using
iokit
- Added temperature watchdog and utilization for CPU on linux using sysfs and
procfs
##
## Bugs
##
##
## Improvements
##
- Alias Devices: Show a warning in case the user specifically listed a device to
use which in a later step is skipped because it is an alias of another active
device
- Backend Information: Added new column showing the PCI Address per CUDA/OpenCL
device to easier identify broken cards
- Bcrypt-SHA1/MD5 Kernels: Get rid of local memory use for binary to hex conversion
to avoid false negatives on several OpenCL runtimes
- CPU Affinity: Allow mask up to 64 processors in Windows and remove call to
SetThreadAffinityMask as SetProcessAffinityMask limits all threads in process
- Debug Rules: HEX-ify rules debug non-rules outputs that contain colons
- KeePass: Increase supported size for KeePass 1 databases from 300kB to 16MB
- Potfile: Disable potfile for hash-mode 99999
- VeraCrypt: Increase password length support for non-boot volumes from 64 to 128
- WPA Kernels: Increased performance by 3.5% for backend devices controlled by CUDA
backend
##
## Technical
##
- Autodetect: Limit the number of errors per hash-mode try to 100 to avoid long
startup time
- Brain: Add brain_ctx_t to hashcat_ctx_t to enable runtime check if hashcat was
compiled with brain support
- File handling: Do not abort on seeing a BOM in input files, just warn and ignore
the BOM
- Folders: Do not escape the variable cpath_real to prevent certain OpenCL runtimes
from running into an error which do not support escape characters
- Java Object hashCode: Add OPTS_TYPE_SUGGEST_KG as a default option
- LM: Workaround JiT compiler bug in -m 3000 on NV leading to false negatives with
large amount of hashes
- OpenCL Runtime: Workaround a problem of the AMD OpenCL GPU driver under macOS
which results in false negatives due to changes in the kernel crypto library
- OpenCL Runtime: Workaround JiT crash (SC failed. No reason given.) on macOS by
limiting local memory allocations to 32k
- Status View: Include time and duration info when pausing and resuming
- Tests: Changed tests for VeraCrypt from -a 0 to -a 3, because password extension
is not available to all shells
- WinZip Kernel: Increase supported data length from 8k to 16mb
##
## Algorithms
##
##
## Features
##
##
## Bugs
##
- Fixed error message in -a 9 mode with rules when number of words from wordlist is
not in sync with number of unique salts
- Fixed error-handling logic in monitor thread to not return in case of error (disk
full, permission error, ...) but to retry instead
- Fixed false negatives with TrueCrypt/VeraCrypt when zip- or gzip-compressed files
were used as keyfiles
- Fixed free memory-size output for skipped GPU (both automatic and manual) of --
backend-info information screen
##
## Improvements
##
- AES Crypt Plugin: Reduced max password length from 256 to 128 which improved
performance by 22%
- CUDA Backend: If --stdout is used, do not warn about missing CUDA SDK
- Folder Management: Add support for XDG Base Directory specification when hashcat
is installed using 'make install'
- Hardware Monitor: Add support for GPU device utilization readings from sysfs (AMD
on Linux)
- OpenCL Backend: Use CL_DEVICE_BOARD_NAME_AMD instead of CL_DEVICE_NAME for device
name (when supported by OpenCL runtime)
- Performance Monitor: Suggest -S to improve cracking performance in specific
attack configurations
- RAR3-p (Compressed): Fix workaround in unrar library in AES constant table
generation to enable multi-threading support
- RC4 Kernels: Improved performance by 20%+ with new RC4 code in hash-modes
Kerberos 5 (etype 23), MS Office (<= 2003) and PDF (<= 1.6)
- Scrypt Kernels: Re-enable use of kernel cache in scrypt-based kernels
- Status Screen: Show currently-running kernel type (pure, optimized) and generator
type (host, device)
- UTF8-to-UTF16: Replaced naive UTF8-to-UTF16 conversion with true conversion for
RAR3, AES Crypt, MultiBit HD (scrypt) and Umbraco HMAC-SHA1
##
## Technical
##
##
## Technical
##
##
## Algorithms
##
##
## Features
##
- Added new attack-mode: Association Attack (aka "Context Attack") to attack hashes
from a hashlist with associated "hints"
- Added support for true UTF-8 to UTF-16 conversion in kernel crypto library
- Added option --hash-info to show generic information for each hash-mode
- Added command prompt [f]inish to tell hashcat to quit after finishing the current
attack
##
## Bugs
##
##
## Improvements
##
- Apple Keychain: Notify the user about the risk of collisions / false positives
- CUDA Backend: Do not warn about missing CUDA SDK installation if --backend-
ignore-cuda is used
- CUDA Backend: Give detailed warning if either the NVIDIA CUDA or the NVIDIA RTC
library cannot be initialized
- CUDA Backend: Use blocking events to avoid 100% CPU core usage (per GPU)
- OpenCL Runtime: Workaround JiT compiler deadlock on NVIDIA driver >= 465.89
- OpenCL Runtime: Workaround JiT compiler segfault on legacy AMDGPU driver
compiling RAR3 OpenCL kernel
- RAR3 Kernels: Improved loop code, improving performance by 23%
- Scrypt Kernels: Added a number of GPU specific optimizations per hash modes to
hashcat.hctune
- Scrypt Kernels: Added detailed documentation on device specific tunings in
hashcat.hctune
- Scrypt Kernels: Optimized Salsa code portion by reducing register copies and
removed unnecessary byte swaps
- Scrypt Kernels: Reduced kernel wait times by making it a true split kernel where
iteration count = N value
- Scrypt Kernels: Refactored workload configuration strategy based on available
resources
- Startup time: Improved startup time by avoiding some time-intensive operations
for skipped devices
##
## Technical
##
##
## Bugs
##
##
## Algorithms
##
##
## Bugs
##
##
## Improvements
##
- Compile macOS: Fixed makefile target 'clean' to correctly remove *.dSYM folders
- Compile ZLIB: Fixed makefile include paths in case USE_SYSTEM_ZLIB is used
- Hcchr Files: Renamed some .charset files into .hcchr files
- Hash-Mode 21200 (md5(sha1($salt).md5($pass))): Improved speed by using pre-
computed SHA1
- OpenCL Devices: Utilize PCI domain to improve alias device detection
- OpenCL Kernels: Added datatypes to literals of enum costants
- OpenCL Kernels: Added pure kernels for hash-mode 600 (BLAKE2b-512)
- OpenCL Runtime: Add some unstable warnings for some SHA512 based algorithms on
AMD GPU on macOS
- OpenCL Runtime: Reinterpret return code CL_DEVICE_NOT_FOUND from clGetDeviceIDs()
as non-fatal
##
## Technical
##
##
## Features
##
##
## Algorithms
##
##
## Bugs
##
##
## Improvements
##
- Bitcoin Wallet: Be more user friendly by allowing a larger data range for ckey
and public_key
- Brain: Added new parameter --brain-server-timer to specify seconds between
scheduled backups
- Building: Fix for library compilation failure due to multiple defenition of
sbob_xx64()
- Cracking bcrypt and Password Safe v2: Use feedback from the compute API backend
to dynamically calculate optimal thread count
- Dictstat: On Windows, the st_ino attribute in the stat struct is not set, which
can lead to invalid cache hits. Added the filename to the database entry.
- Documents: Added README on how to build hashcat on Cygwin, MSYS2 and WSL
- File handling: Print a truncation warning when an oversized line is detected
- My Wallet: Added additional plaintext pattern used in newer versions
- Office cracking: Support hash format with second block data for 40-bit oldoffice
files (eliminates false positives)
- OpenCL Runtime: Added a warning if OpenCL runtime NEO, Beignet, POCL (v1.4 or
older) or MESA is detected, and skip associated devices (override with --force)
- OpenCL Runtime: Allow the kernel to access post-48k shared memory region on CUDA.
Requires both module and kernel preparation
- OpenCL Runtime: Disable OpenCL kernel cache on Apple for Intel CPU (throws
CL_BUILD_PROGRAM_FAILURE for no reason)
- OpenCL Runtime: Do not run shared- or constant-memory size checks if their memory
type is of type global memory (typically CPU)
- OpenCL Runtime: Improve ROCm detection and make sure to not confuse with recent
AMDGPU drivers
- OpenCL Runtime: Not using amd_bytealign (amd_bitalign is fine) on AMDGPU driver
drastically reduces JiT segfaults
- OpenCL Runtime: Unlocked maximum thread count for NVIDIA GPU
- OpenCL Runtime: Update unstable mode warnings for Apple and AMDGPU drivers
- OpenCL Runtime: Workaround JiT compiler error on AMDGPU driver compiling WPA-
EAPOL-PBKDF2 OpenCL kernel
- OpenCL Runtime: Workaround JiT compiler error on ROCm 2.3 driver if the 'inline'
keyword is used in function declaration
- OpenCL Runtime: Workaround memory allocation error on AMD driver on Windows
leading to CL_MEM_OBJECT_ALLOCATION_FAILURE
- OpenCL Runtime: Removed some workarounds by calling chdir() to specific folders
on startup
- Outfile: Added new system to specify the outfile format, the new --outfile-format
now also supports timestamps
- Startup Checks: Improved the pidfile check: Do not just check for existing PID,
but also check executable filename
- Startup Checks: Prevent the user from modifying options which are overwritten
automatically in benchmark mode
- Startup Screen: Add extra warning when using --force
- Startup Screen: Add extra warning when using --keep-guessing
- Startup Screen: Provide an estimate of host memory required for the requested
attack
- Status Screen: Added brain status for all compute devices
- Status Screen: Added remaining counts and changed recovered count logic
- Status Screen: Added --status-json flag for easier machine reading of hashcat
status output
- Tab Completion: Allow using "make install" version of hashcat
- Tuning Database: Updated hashcat.hctune with new models and refreshed vector
width values
- VeraCrypt: Added support for VeraCrypt PIM brute-force, replaced --veracrypt-pim
with --veracrypt-pim-start and --veracrypt-pim-stop
- WipZip cracking: Added two byte early reject, resulting in higher cracking speed
- WPA/WPA2 cracking: In the potfile, replace password with PMK in order to detect
already cracked networks across all WPA modes
##
## Technical
##
##
## Features
##
##
## Algorithms
##
##
## Improvements
##
##
## Bugs
##
- Fixed automated calculation of brain-session when not using all hashes in the
hashlist
- Fixed calculation of brain-attack if a given wordlist has zero size
- Fixed checking the length of the last token in a hash if it was given the
attribute TOKEN_ATTR_FIXED_LENGTH
- Fixed endianness and invalid separator character in outfile format for hash-mode
16801 (WPA-PMKID-PMK)
- Fixed ignoring --brain-client-features configuration when brain server has
attack-position information from a previous run
- Fixed invalid hardware monitor detection in benchmark mode
- Fixed invalid warnings about throttling when --hwmon-disable was used
- Fixed missing call to WSACleanup() to cleanly shutdown windows sockets system
- Fixed missing call to WSAStartup() and client indexing in order to start the
brain server on Windows
- Fixed out-of-boundary read in DPAPI masterkey file v2 OpenCL kernel
- Fixed out-of-bounds write in short-term memory of the brain server
- Fixed output of --speed-only and --progress-only when fast hashes are used in
combination with --slow-candidates
- Fixed selection of OpenCL devices (-d) if there's more than 32 OpenCL devices
installed
- Fixed status output of progress value when -S and -l are used in combination
- Fixed thread count maximum for pure kernels in straight attack mode
##
## Technical
##
##
## Features
##
- Added new option --slow-candidates which allows hashcat to generate passwords on-
host
- Added new option --brain-server to start a hashcat brain server
- Added new option --brain-client to start a hashcat brain client, automatically
activates --slow-candidates
- Added new option --brain-host and --brain-port to specify ip and port of brain
server, both listening and connecting
- Added new option --brain-session to override automatically calculated brain
session ID
- Added new option --brain-session-whitelist to allow only explicit written session
ID on brain server
- Added new option --brain-password to specify the brain server authentication
password
- Added new option --brain-client-features which allows enable and disable certain
features of the hashcat brain
##
## Algorithms
##
##
## Improvements
##
- Added additional hybrid "passthrough" rules, to enable variable-length
append/prepend attacks
- Added a periodic check for read timeouts in stdin/pipe mode, and abort if no
input was provided
- Added a tracker for salts, amplifier and iterations to the status screen
- Added option --markov-hcstat2 to make it clear that the new hcstat2 format
(compressed hcstat2gen output) must be used
- Allow bitcoin master key lengths other than 96 bytes (but they must be always
multiples of 16)
- Allow hashfile for -m 16800 to be used with -m 16801
- Allow keepass iteration count to be larger than 999999
- Changed algorithms using colon as separators in the hash to not use the
hashconfig separator on parsing
- Do not allocate memory segments for bitmap tables if we don't need it - for
example, in benchmark mode
- Got rid of OPTS_TYPE_HASH_COPY for Ansible Vault
- Improved the speed of the outfile folder scan when using many hashes/salts
- Increased the maximum size of edata2 in Kerberos 5 TGS-REP etype 23
- Make the masks parser more restrictive by rejecting a single '?' at the end of
the mask (use ?? instead)
- Override --quiet and show final status screen in case --status is used
- Removed duplicate words in the dictionary file example.dict
- Updated Intel OpenCL runtime version check
- Work around some AMD OpenCL runtime segmentation faults
- Work around some padding issues with host compilers and OpenCL JiT on 32 and 64-
bit systems
##
## Bugs
##
##
## Improvements
##
- Try to evaluate available OpenCL device memory and use this information instead
of total available OpenCL device memory for autotune
##
## Bugs
##
- Fixed a buffer overflow in precompute_salt_md5() in case salt was longer than 64
characters
##
## Algorithms
##
##
## Improvements
##
##
## Bugs
##
##
## Features
##
- Added option --benchmark-all to benchmark all hash-modes (not just the default
selection)
- Removed option --gpu-temp-retain that tried to retain GPU temperature at X
degrees celsius - please use driver-specific tools
- Removed option --powertune-enable to enable power tuning - please use driver
specific tools
##
## Algorithms
##
##
## Bugs
##
- Fixed a configuration setting for -m 400 in pure kernel mode which said it was
capable of doing SIMD when it is not
- Fixed a hash parsing problem for 7-Zip hashes: allow a longer CRC32 data length
field within the hash format
- Fixed a hash parsing problem when using --show/--left with hashes with long salts
that required pure kernels
- Fixed a logic error in storing temporary progress for slow hashes, leading to
invalid speeds in status view
- Fixed a mask-length check issue: return -1 in case the mask length is not within
the password-length range
- Fixed a missing check for return code in case hashcat.hcstat2 was not found
- Fixed a race condition in combinator- and hybrid-mode where the same scratch
buffer was used by multiple threads
- Fixed a restore issue leading to "Restore value is greater than keyspace" when
mask files or wordlist folders were used
- Fixed a uninitialized value in OpenCL kernels 9720, 9820 and 10420 leading to
absurd benchmark performance
- Fixed the maximum password length check in password-reassembling function
- Fixed the output of --show when $HEX[] passwords were present within the potfile
##
## Improvements
##
- OpenCL Kernels: Add a decompressing kernel and a compressing host code in order
to reduce PCIe transfer time
- OpenCL Kernels: Improve performance preview accuracy in --benchmark, --speed-only
and --progress-only mode
- OpenCL Kernels: Remove password length restriction of 16 for Cisco-PIX and Cisco-
ASA hashes
- Terminal: Display set cost/rounds during benchmarking
- Terminal: Show [r]esume in prompt only in pause mode, and show [p]ause in prompt
only in resume mode
##
## Technical
##
- Autotune: Improve autotune engine logic and synchronize results on same OpenCL
devices
- Documents: Added docs/limits.txt
- Files: Copy include/ folder and its content when SHARED is set to 1 in Makefile
- Files: Switched back to relative current working directory on windows to work
around problems with Unicode characters
- Hashcat Context: Fixed a memory leak in shutdown phase
- Hash Parser: Changed the way large strings are handled/truncated within the event
buffer if they are too large to fit
- Hash Parser: Fixed a memory leak in shutdown phase
- Hash Parser: Fixed the use of strtok_r () calls
- OpenCL Devices: Fixed several memory leaks in shutdown phase
- OpenCL Kernels: Add general function declaration keyword (inline) and some OpenCL
runtime specific exceptions for NV and CPU devices
- OpenCL Kernels: Replace variables from uXX to uXXa if used in __constant space
- OpenCL Kernels: Use a special kernel to initialize the password buffer used
during autotune measurements, to reduce startup time
- OpenCL Kernels: Refactored kernel thread management from native to maximum per
kernel
- OpenCL Kernels: Use three separate comparison kernels (depending on keyver) for
WPA instead of one
- OpenCL Runtime: Add current timestamp to OpenCL kernel source in order to force
OpenCL JiT compiler to recompile and not use the cache
- OpenCL Runtime: Enforce use of OpenCL version 1.2 to restrain OpenCL runtimes to
make use of the __generic address space qualifier
- OpenCL Runtime: Updated rocm detection
- Returncode: Enforce return code 0 when the user selects --speed-only or --
progress-only and no other error occurs
- Rules: Fixed some default rule-files after changing rule meaning of 'x' to 'O'
- Self Test: Skip self-test for mode 8900 - user-configurable scrypt settings are
incompatible with fixed settings in the self-test hash
- Self Test: Skip self-test for mode 15700 because the settings are too high and
cause startup times that are too long
- Terminal: Add workitem settings to status display (can be handy for debugging)
- Terminal: Send clear-line code to the same output stream as the message
immediately following
- Timer: Switch from gettimeofday() to clock_gettime() to work around problems on
cygwin
- User Options: According to getopts manpage, the last element of the option array
has to be filled with zeros
##
## Improvements
##
- Changed the maximum length of the substring of a hash shown whenever the parser
found a problem while parsing the hash
##
## Bugs
##
##
## Features
##
##
## Algorithms
##
##
## Bugs
##
##
## Improvements
##
- Autotune: Do a pre-autotune test run to find out if kernel runtime is above some
TDR limit
- Charset: Add additional DES charsets with corrected parity
- OpenCL Buffers: Do not allocate memory for amplifiers for fast hashes, it's
simply not needed
- OpenCL Kernels: Improved performance of SHA-3 Kernel (keccak) by hardcoding the
0x80 stopbit
- OpenCL Kernels: Improved rule engine performance by 6% on for NVidia
- OpenCL Kernels: Move from ld.global.v4.u32 to ld.const.v4.u32 in _a3 kernels
- OpenCL Kernels: Replace bitwise swaps with rotate() versions for AMD
- OpenCL Kernels: Rewritten Keccak kernel to run fully on registers and partially
reversed last round
- OpenCL Kernels: Rewritten SIP kernel from scratch
- OpenCL Kernels: Thread-count is set to hardware native count except if -w 4 is
used then OpenCL maximum is used
- OpenCL Kernels: Updated default scrypt TMTO to be ideal for latest NVidia and AMD
top models
- OpenCL Kernels: Vectorized tons of slow kernels to improve CPU cracking speed
- OpenCL Runtime: Improved detection for AMD and NV devices on macOS
- OpenCL Runtime: Improved performance on Intel MIC devices (Xeon PHI) on runtime
level (300MH/s to 2000MH/s)
- OpenCL Runtime: Updated AMD ROCm driver version check, warn if version < 1.1
- Show cracks: Improved the performance of --show/--left if used together with --
username
- Startup: Add visual indicator of active options when benchmarking
- Startup: Check and abort session if outfile and wordlist point to the same file
- Startup: Show some attack-specific optimizer constraints on start, eg: minimum
and maximum support password- and salt-length
- WPA cracking: Improved nonce-error-corrections mode to use a both positive and
negative corrections
##
## Technical
##
##
## Algorithms
##
##
## Features
##
- 7-Zip cracking: increased max. data length to 320k and removed AES padding attack
to avoid false negatives
- Dictionary cache: Show time spent on dictionary cache building at startup
- Rules: Support added for position 'p' (Nth instance of a character) in host mode
(using -j or -k)
- Rules: Support added for rejection rule '_N' (reject plains of length not equal
to N) in host mode
- Rules: Support added for rule 'eX'
- Wordlist encoding: Added parameters --encoding-from and --encoding-to to
configure wordlist encoding handling
- Wordlist encoding: Support added for internal conversion between user-defined
encodings during runtime
##
## Workarounds
##
##
## Bugs
##
- Fixed a condition that caused hybrid attacks using a maskfile to not select all
wordlists from a wordlist folder
- Fixed a memory leak that was present when a user periodically prints hashcat
status (using --status-timer)
- Fixed a missing type specifier in a function declaration of the RACF kernel
##
## Technical
##
- Building: In the binary release packages, link libiconv static for Windows
binaries
- Dictstat: Structure for dictstat file changed to include --encoding-from and --
encoding-to parameters
- OpenCL Runtime: Updated AMDGPU-PRO driver version check, warn if version 17.10
(known to be broken) is detected
- WPA cracking: Reduced --nonce-error-corrections default from 16 to 8 to
compensate for speed drop caused by big-endian fixes
##
## Features
##
- WPA cracking: Added support for WPA/WPA2 handshake AP nonce automatic error
correction
- WPA cracking: Added parameter --nonce-error-corrections to configure range of
error correction
##
## Algorithms
##
##
## Improvements
##
##
## Bugs
##
- Fixed a hash validation error when trying to load Android FDE < 4.3 hashes
- Fixed a problem where --keyspace combined with custom charsets incorrectly
displayed an error message
- Fixed a problem where --stdout combined with custom charsets incorrectly
displayed an error message
- Fixed a problem with parsing and displaying -m 7000 = Fortigate (FortiOS) hashes
- Fixed a race condition after sessions finish, where the input-base was freed but
accessed afterwards
- Fixed a typo that resulted in the minimum password length not being correctly
initialized
- Fixed --outfile-format formats 11 through 15 to show the correct crack position
- Fixed --remove to apply even when all hashes are either found in the potfile or
detected in weak-hash checks
##
## Technical
##
##
## Features
##
##
## Algorithms
##
- Added hash-mode 1411 = SSHA-256(Base64), LDAP {SSHA256}
- Added hash-mode 3910 = md5(md5($pass).md5($salt))
- Added hash-mode 4010 = md5($salt.md5($salt.$pass))
- Added hash-mode 4110 = md5($salt.md5($pass.$salt))
- Added hash-mode 4520 = sha1($salt.sha1($pass))
- Added hash-mode 4522 = PunBB
- Added hash-mode 7000 = Fortigate (FortiOS)
- Added hash-mode 12001 = Atlassian (PBKDF2-HMAC-SHA1)
- Added hash-mode 14600 = LUKS
- Added hash-mode 14700 = iTunes Backup < 10.0
- Added hash-mode 14800 = iTunes Backup >= 10.0
- Added hash-mode 14900 = Skip32
- Added hash-mode 15000 = FileZilla Server >= 0.9.55
##
## Workarounds
##
- Workaround added for AMDGPU-Pro OpenCL runtime: AES encrypt and decrypt Invertkey
function was calculated wrong in certain cases
- Workaround added for AMDGPU-Pro OpenCL runtime: RAR3 kernel require a volatile
variable to work correctly
- Workaround added for Apple OpenCL runtime: bcrypt kernel requires a volatile
variable because of a compiler optimization bug
- Workaround added for Apple OpenCL runtime: LUKS kernel requires some volatile
variables because of a compiler optimization bug
- Workaround added for Apple OpenCL runtime: TrueCrypt kernel requires some
volatile variables because of a compiler optimization bug
- Workaround added for NVidia OpenCL runtime: RACF kernel requires EBCDIC lookup to
be done on shared memory
##
## Bugs
##
- Fixed a problem within the Kerberos 5 TGS-REP (-m 13100) hash parser
- Fixed clEnqueueNDRangeKernel(): CL_UNKNOWN_ERROR caused by an invalid work-item
count during weak-hash-check
- Fixed cracking of PeopleSoft Token (-m 13500) if salt length + password length is
>= 128 byte
- Fixed cracking of Plaintext (-m 99999) in case MD4 was used in a previous session
- Fixed DEScrypt cracking in BF mode in case the hashlist contains more than 16
times the same salt
- Fixed duplicate detection for WPA handshakes with the same ESSID
- Fixed nvapi datatype definition for NvS32 and NvU32
- Fixed overflow in bcrypt kernel in expand_key() function
- Fixed pointer to local variable outside scope in case -j or -k is used
- Fixed pointer to local variable outside scope in case --markov-hcstat is not used
- Fixed recursion in loopback handling when session was aborted by the user
- Fixed rule 'O' (RULE_OP_MANGLE_OMIT) in host mode in case the offset + length
parameter equals the length of the input word
- Fixed rule 'i' (RULE_OP_MANGLE_INSERT) in host mode in case the offset parameter
equals the length of the input word
- Fixed string not null terminated inside workaround for checking drm driver path
- Fixed string not null terminated while reading maskfiles
- Fixed truncation of password after position 32 with the combinator attack
- Fixed use of option --keyspace in combination with -m 2500 (WPA)
- Fixed WPA/WPA2 cracking in case eapol frame is >= 248 byte
##
## Technical
##
##
## Features
##
- Files: Use $HEX[...] in case the password includes the separater character,
increases potfile reading performance
- Files: If the user specifies a folder to scan for wordlists instead of directly a
wordlist, then ignore the hidden files
- Loopback: Include passwords for removed hashes present in the potfile to next
loopback iteration
- New option --progress-only: Quickly provides ideal progress step size and time to
process on the user hashes and selected options, then quit
- Status screen: Reenabled automatic status screen display in case of stdin used
- Truecrypt/Veracrypt: Use CRC32 to verify headers instead of fuzzy logic, greatly
reduces false positives from 18:2^48 to 3:2^64
- WPA cracking: Reuse PBKDF2 intermediate keys if duplicate essid is detected
##
## Algorithms
##
##
## Bugs
##
- Fixed buffer overflow in status screen display in case of long non-utf8 string
- Fixed buffer overflow in plaintext parsing code: Leading to segfault
- Fixed custom char parsing code in maskfiles in --increment mode: Custom charset
wasn't used
- Fixed display screen to show input queue when using custom charset or rules
- Fixed double fclose() using AMDGPU-Pro on sysfs compatible platform: Leading to
segfault
- Fixed hash-mode 11400 = SIP digest authentication (MD5): Cracking of hashes which
did not include *auth* or *auth-int* was broken
- Fixed hex output of plaintext in case --outfile-format 4, 5, 6 or 7 was used
- Fixed infinite loop when using --loopback in case all hashes have been cracked
- Fixed kernel loops in --increment mode leading to slower performance
- Fixed mask length check in hybrid attack-modes: Do not include hash-mode
dependant mask length checks
- Fixed parsing of hashes in case the last line did not include a linefeed
character
- Fixed potfile loading to accept blank passwords
- Fixed runtime limit: No longer required so sample startup time after
refactorization
##
## Workarounds
##
- Workaround added for Intel OpenCL runtime: GPU support is broken, skip the device
unless user forces to enable it
##
## Technical
##
##
## Features
##
- New option --speed-only: Quickly provides cracking speed per device based on the
user hashes and selected options, then quit
- New option --keep-guessing: Continue cracking hashes even after they have been
cracked (to find collisions)
- New option --restore-file-path: Manually override the path to the restore file
(useful if we want all session files in the same folder)
- New option --opencl-info: Show details about OpenCL compatible devices like an
embedded clinfo tool (useful for bug reports)
- Documents: Added colors for warnings (yellow) and errors (red) instead of
WARNING: and ERROR: prefix
- Documents: Added hints presented to the user about optimizing performance while
hashcat is running
- Hardware management: Support --gpu-temp-retain for AMDGPU-Pro driver
- Hardware management: Support --powertune-enable for AMDGPU-Pro driver
- Password candidates: Allow words of length > 31 in wordlists for -a 0 for some
slow hashes if no rules are in use
- Password candidates: Do not use $HEX[] if the password candidate is a valid UTF-8
string and print out as-is
- Pause mode: Allow quit program also if in pause mode
- Pause mode: Ignore runtime limit in pause mode
- Status view: Show core-clock, memory-clock and execution time in benchmark-mode
in case --machine-readable is activated
- Status view: Show temperature, coreclock, memoryclock, fanspeed and pci-lanes for
devices using AMDGPU-Pro driver
- Status view: Show the current first and last password candidate test queued for
execution per device (as in JtR)
- Status view: Show the current position in the queue for both base and modifier
(Example: Wordlist 2/5)
- Markov statistics: Update hashcat.hcstat which is used as reference whenever the
user defines a mask
- Charsets: Added lowercase ascii hex (?h) and uppercase ascii hex (?H) as
predefined charsets
##
## Algorithms
##
##
## Bugs
##
- Custom charset from file parsing code did not return an error if an error occured
- Fix some clSetKernelArg() size error that caused slow modes to not work anymore
in -a 1 mode
- Hash-mode 11600 = (7-Zip): Depending on input hash a clEnqueueReadBuffer():
CL_INVALID_VALUE error occured
- Hash-mode 22 = Juniper Netscreen/SSG (ScreenOS): Fix salt length for -m 22 in
benchmark mode
- Hash-Mode 5500 = NetNTLMv1 + ESS: Fix loading of NetNTLMv1 + SSP hash
- Hash-mode 6000 = RipeMD160: Fix typo in array index number
- If cracking a hash-mode using unicode passwords, length check of a mask was not
taking into account
- If cracking a large salted hashlist the wordlist reject code was too slow to
handle it, leading to 0H/s
- Null-pointer dereference in outfile-check shutdown code when using --outfile-
check-dir, leading to segfault
- On startup hashcat tried to access the folder defined in INSTALL_FOLDER, leading
to segfault if that folder was not existing
- Random rules generator code used invalid parameter for memory copy function (M),
leading to use of invalid rule
- Sanity check for --outfile-format was broken if used in combination with --show
or --left
##
## Workarounds
##
- Workaround added for AMDGPU-Pro OpenCL runtime: Failed to compile hash-mode 10700
= PDF 1.7 Level 8
- Workaround added for AMDGPU-Pro OpenCL runtime: Failed to compile hash-mode 1800
= sha512crypt
- Workaround added for NVidia OpenCL runtime: Failed to compile hash-mode 6400 =
AIX {ssha256}
- Workaround added for NVidia OpenCL runtime: Failed to compile hash-mode 6800 =
Lastpass + Lastpass sniffed
- Workaround added for macOS OpenCL runtime: Failed to compile hash-mode 10420 =
PDF 1.1 - 1.3 (Acrobat 2 - 4)
- Workaround added for macOS OpenCL runtime: Failed to compile hash-mode 1100 =
Domain Cached Credentials (DCC), MS Cache
- Workaround added for macOS OpenCL runtime: Failed to compile hash-mode 13800 =
Windows 8+ phone PIN/Password
- Workaround added for pocl OpenCL runtime: Failed to compile hash-mode 5800 =
Android PIN
##
## Performance
##
- Improved performance for rule-based attacks for _very_ fast hashes like MD5 and
NTLM by 30% or higher
- Improved performance for DEScrypt on AMD, from 373MH/s to 525MH/s
- Improved performance for raw DES-based algorithms (like LM) on AMD, from 1.6GH/s
to 12.5GH/s
- Improved performance for raw SHA256-based algorithms using meet-in-the-middle
optimization, reduces 7/64 steps
- Improved performance for SAP CODVN B (BCODE) and SAP CODVN F/G (PASSCODE) due to
register handling optimization, gives 3% and 25%
- Improved performance by reducing maximum number of allowed function calls per
rule from 255 to 31
- Improved performance by update the selection when to use #pragma unroll depending
on OpenCL runtime vendor
##
## Technical
##
- Autotune: Do not run any caching rounds in autotune in DEBUG mode if -n and -u
are specified
- Bash completion: Removed some v2.01 leftovers in the bash completion
configuration
- Benchmark: Do not control fan speed in benchmark mode
- Benchmark: On macOS, some hash-modes can't compile because of macOS OpenCL
runtime. Skip them and move on to the next
- Building: Added Makefile target "main_shared", a small how-to-use libhashcat
example
- Building: Added many additional compiler warning flags in Makefile to improve
static code error detection
- Building: Added missing includes for FreeBSD
- Building: Added some types for windows only in case _BASETSD_H was not set
- Building: Changed Makefile to strip symbols in the linker instead of the compiler
- Building: Defined NOMINMAX macro to prevent definition min and max macros in
stdlib header files
- Building: Enabled ASLR and DEP for Windows builds
- Building: Fixed almost all errors reported by cppcheck and scan-build
- Building: On macOS, move '-framework OpenCL' from CFLAGS to LDFLAGS
- Building: On macOS, use clang as default compiler
- Building: Support building on Msys2 environment
- Building: Use .gitmodules to simplify the OpenCL header dependency handling
process
- Charsets: Added DES_full.charset
- Data Types: Replaced all integer macros with enumerator types
- Data Types: Replaced all integer variables with true bool variables in case they
are used as a bool
- Data Types: Replaced all string macros with static const char types
- Data Types: Replaced all uint and uint32_t to u32
- Data Types: Replaced atoi() with atoll(). Eliminates sign conversion warnings
- Documents: Added docs/credits.txt
- Documents: Added docs/team.txt
- Documents: Changed rules.txt to match v3.20 limitations
- Error handling (file handling): Fixed a couple of filepointer leaks
- Error handling (format strings): Fixed a few printf() formats, ex: use %u instead
of %d for uint32_t
- Error handling (memory allocation): Removed memory allocation checks, just print
to stderr instead
- Error handling (startup): Added some missing returncode checks to get_exec_path()
- Fanspeed: Check both fanpolicy and fanspeed returncode and disable retain support
if any of them fail
- Fanspeed: Minimum fanspeed for retain support increased to 33%, same as NV uses
as default on windows
- Fanspeed: Reset PID controler settings to what they were initially
- Fanspeed: Set fan speed to default on quit
- File handling: Do a single write test (for files to be written later) directly on
startup
- File locking: Use same locking mechanism in potfile as in outfile
- Hardware management: Fixed calling conventions for ADL, NvAPI and NVML on windows
- Hardware management: Improved checking for successfull load of the NVML API
- Hardware management: In case fanspeed can not be set, disable --gpu-temp-retain
automatically
- Hardware management: In case of initialization error show it only once to the
user on startup
- Hardware management: Refactored all code to return returncode (0 or -1) instead
of data for more easy error handling
- Hardware management: Refactored macros to real functions
- Hardware management: Removed kernel exec timeout detection on NVIDIA, should no
longer occur due to autotune
- Hardware management: Replaced NVML registry functions macros with their ascii
versions (Adds NVML support for XP)
- Hashlist loading: Do not load data from hashfile if hashfile changed during
runtime
- Kernel cache: Fixed checksum building on oversized device version or driver
version strings
- Logging: Improved variable names in hashcat.log
- Loopback: Refactored --loopback support completely, no longer a recursive
function
- Memory management: Fixed some memory leaks on shutdown
- Memory management: Got rid of all global variables
- Memory management: Got rid of local_free() and global_free(), no longer required
- Memory management: Refactored all variables with HCBUFSIZ_LARGE size from stack
to heap, macOS doesn't like that
- OpenCL Headers: Select OpenCL headers tagged for OpenCL 1.2, since we use -cl-
std=CL1.2
- OpenCL Kernels: Added const qualifier to variable declaration of matching global
memory objects
- OpenCL Kernels: Got rid of one global kernel_threads variable
- OpenCL Kernels: Moved OpenCL requirement from v1.1 to v1.2
- OpenCL Kernels: Recognize reqd_work_group_size() values from OpenCL kernels and
use them in the host if possible
- OpenCL Kernels: Refactored common function append_0x01()
- OpenCL Kernels: Refactored common function append_0x02()
- OpenCL Kernels: Refactored common function append_0x80()
- OpenCL Kernels: Refactored rule function append_block1()
- OpenCL Kernels: Refactored rule function rule_op_mangle_delete_last()
- OpenCL Kernels: Refactored rule function rule_op_mangle_dupechar_last()
- OpenCL Kernels: Refactored rule function rule_op_mangle_rotate_left()
- OpenCL Kernels: Refactored rule function rule_op_mangle_rotate_right()
- OpenCL Kernels: Support mixed kernel thread count for mixed kernels in the same
source file
- OpenCL Kernels: Switch from clz() to ffz() for bitsliced algorithms
- OpenCL Kernels: Using platform vendor name is better than using device vendor
name for function detection
- OpenCL Runtime: Updated AMDGPU-Pro and AMD Radeon driver version check
- OpenCL Runtime: Updated Intel OpenCL runtime version check
- OpenCL Runtime: Updated NVIDIA driver version check
- Password candidates: The maximum word length in a wordlist is 31 not 32, because
0x80 will eventually be appended
- Potfile: Base logic switched; Assuming the potfile is larger than the hashlist
it's better to load hashlist instead of potfile entries
- Potfile: In case all hashes were cracking using potfile abort and inform user
- Restore: Automatically unlink restore file if all hashes have been cracked
- Restore: Do not unlink restore file if restore is disabled
- Rules: Refactored macros to real functions
- Status: Added Input.Queue.Base and Input.Queue.Mod to help the user better
understand this concept
- Status: Do not wait for the progress mutex to read and store speed timer
- Status: Do not show Recovered/Time when cracking < 1000 hashes
- Status: Do not show Recovered/Time as floats but as integers to reduce over-
information
- Tests: Removed rules_test/ subproject: Would require total rewrite but not used
in a long time
- Threads: Replaced all calls to getpwuid() with getpwuid_r() to ensure thread
safety
- Threads: Replaced all calls to gmtime() with gmtime_r() to ensure thread safety
- Threads: Replaced all calls to strtok() with strtok_r() to ensure thread safety
- Wordlists: Use larger counter variable to handle larger wordlists (that is > 2^32
words)
- X11: Detect missing coolbits and added some help text for the user how to fix it
##
## Improvements
##
- Added mask display to modes 3, 6, and 7. Allows the user to see the custom
character set used during the run
- Make Linux build POSIX compatible; Also allow it to actually compile on musl-libc
systems
- Add support to compile on FreeBSD
- Make use of cl_context_properties[] to clCreateContext(), even if OpenCL
specification allow the use of NULL, some runtimes fail without
- The Time.Estimated attribute in status display should also show --runtime limit
if user set it
- Fix some strict aliasing rule violation on older compilers
- Fix some variable initializers on older compilers
- Replace DARWIN macro with compiler predefined macro __APPLE__
- Replace LINUX macro with compiler predefined macro __linux__
- Allow the use of enc_id == 0 in hash-mode 10600 and 10700 as it takes no part in
the actual computation
- Get rid of exit() calls in OpenCL wrapper library with the goal to have a better
control which error can be ignored under special circumstances
- Do not error and exit if an OpenCL platform has no devices, just print a warning
and continue with the next platform
- Workaround for OpenCL runtimes which do not accept -I parameter in the OpenCL
kernel build options even if this is an OpenCL standard option
- Workaround for OpenCL runtimes which do accept -I parameter in the OpenCL kernel
build options, but do not allow quotes
- Output cracked hashes on Windows using \r\n and not \n
- Replace RegGetValue() with RegQueryValueEx() to enable Windows XP 32 bit
compatibility
- Slightly increased NVidias rule-processing performance by using generic
instructions instead of byte_perm()
- Add support for @ rule (RULE_OP_MANGLE_PURGECHAR) to use on GPU
- Add support for --outfile (short -o) to be used together with --stdout
- Skip periodic status output whenever --stdout is used together with stdin mode,
but no outfile was specified
- Show error message if --show is used together with --outfile-autohex-disable
(this is currently not supported)
- Show error message if --skip/--limit is used together with mask files or --
increment
- Workaround for NVidia OpenCL runtime bug causing -m 6223 to not crack any hashes
even with the correct password candidate
##
## Bugs
##
- Fixed a bug where CRAM MD5 checked salt length instead of hash length
- Fixed a bug where hashcat is suppressing --machine-readable output in the final
status update
- Fixed a bug where hashcat did not check the return of realpath() and crashes
uncontrolled if the path does not exist
- Fixed a bug where hashcat crashes for accessing deallocated buffer if user spams
"s" shortly before hashcat shuts down
- Fixed a bug where hashcat crashes in case of a scrypt P setting > 1
- Fixed a bug where hashcat did not correctly use the newly cracked plains whenever
--loopback or the induction folder was used
- Fixed a bug where hashcat did not correctly remove hashes of type WPA/WPA2 even
if present in potfile
- Fixed a bug where hashcat reported an invalid password for a zero-length password
in LM
- Fixed a bug where hashcat did not take into account how long it takes to prepare
a session when auto-aborting with --runtime is in use
- Fixed a bug where some kernels used COMPARE_M_SIMD instead of COMPARE_S_SIMD in
singlehash mode
##
## Algorithms
##
This release markes the fusion of "hashcat" and "oclHashcat" into "hashcat".
It combines all features of all hashcat projects in one project.
##
## Features
##
##
## Algorithms
##
##
## Performance
##
##
## Improvements
##
##
## Bugs
##
- Fixed a bug in speed display: In some situation, especially with slow hashes or
lots of salts, it showed a speed of 0H/s
- Fixed a bug in restore handling: user immediately aborting after restart broke
the restore file
- Fixed a bug in line counter: conditional jump or move depends on an uninitialised
value
- Fixed a bug in rule-engine for NVidia devices: code for left- and right-shift
were switched
- Fixed a bug in dive.rule: rules were not updated after the function 'x' was
renamed to 'O'
- Fixed a bug in memory allocation "OpenCL -4 error": used unitialized value in a
special situation
- Fixed a bug in memory handling: heap buffer overflow
- Fixed a bug in memory handling: out of bounds access
- Fixed a bug in implementation of DCC2: forced default iteration count for hashes
to 10240
- Fixed a bug in implementation of WPA/WPA2: MAC and nonce stay one their original
position as in the hccap file
- Fixed a bug in implementation of GOST R 34.11-94: zero length passwords were not
cracked
- Fixed a bug in implementation of BLAKE2-512 kernels: incorrect access of the
esalt buffer
##
## Technical
##