1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-07-09 16:18:19 +00:00
Commit Graph

23 Commits

Author SHA1 Message Date
Jens Steube
ed10e6a913 Autotune and Benchmark refactoring
This change affects three key areas, each improving autotuning:

- Autotune refactoring itself

The main autotune algorithm had become too complex to maintain and has
now been rewritten from scratch. The engine is now closer to the old
v6.0.0 version, using a much more straightforward approach.

Additionally, the backend is now informed when the autotune engine runs
its operations and runs an extra invisible kernel invocation. This
significantly improves runtime accuracy because the same caching
mechanisms which kick in normal cracking sessions now also apply during
autotuning. This leads to more consistent and reliable automatic
workload tuning.

- Benchmarking and '--speed-only' accuracy bugs fixed

Benchmark runtimes had become too short, especially since the default
benchmark mask changed from '?b?b?b?b?b?b?b' to '?a?a?a?a?a?a?a?a'. For
very fast hashes like NTLM, benchmarks often stopped immediately when
base words needed to be regenerated, producing highly inaccurate
results.

This issue also misled users tuning '-n' values, as manually
oversubscribing kernels could mask the problem, creating the impression
that increasing '-n' had a larger impact on performance than it truly
does. While '-n' still has an effect, it’s not as significant. With this
fix, users achieve the same speed without needing to tune '-n' manually.

The bug was fixed by enforcing a minimum benchmark runtime of 4 seconds,
regardless of kernel runtime or kernel type. This ensures more stable
and realistic benchmark results, but typically increasing the benchmark
duration by up to 4 seconds.

- Kernel-Threads set to 32 and plugin configuration cleanup

Some plugin configurations existed solely to work around the old
benchmarking bug and can now be removed. For example,
'OPTS_TYPE_MAXIMUM_THREADS' is no longer required and has been removed
from all plugins, although the parameter itself remains to avoid
breaking custom plugins.

Because increasing threads beyond 32 no longer offers meaningful
performance gains, the default is now capped at 32 (unless overridden
with '-T'). This simplifies GPU memory management. Currently, work-item
counts are indirectly limited by buffer sizes (e.g., 'pws_buf[]'), which
must not exceed 4 GiB (a hard-coded limit). This buffer size depends on
the product of 'kernel-accel', 'kernel-threads', and the device’s
compute units. By reducing the default threads from 1024 to 32, there is
now more space available for base words.
2025-06-22 20:17:52 +02:00
Jens Steube
ceb5ff5641 The Assimilation Bridge (Framework) 2025-05-29 15:38:13 +02:00
Gabriele Gristina
003579d21b Modules: Updated module_unstable_warning 2025-05-11 15:40:52 +02:00
Gabriele Gristina
2adf735e51 Fixed bug in input_tokenizer when TOKEN_ATTR_FIXED_LENGTH is used and refactor modules 2023-04-11 19:34:01 +02:00
Jens Steube
072f467d6a Remove unroll for AMD GPU for -m 19000 and -m 21000 2022-12-05 08:51:39 +01:00
Jens Steube
8a82c75a99 macOS 13.0 fixed many issues in the OpenCL API. The module_unstable_warning() functions in many hash modes can then be removed 2022-11-20 12:21:41 +01:00
Jens Steube
653f34e9a2 Mark some hash-modes for Apple Metal as unstable 2022-11-12 19:16:31 +01:00
philsmd
d9749e8799
change interface, add module_benchmark_charset () 2022-07-15 17:17:57 +02:00
Jens Steube
6fce6fb3ff Update all existing modules to use the stock module marker 2022-04-08 14:11:50 +02:00
Jens Steube
5015bc0d2e Module Parser: Renamed struct token_t to hc_token_t to avoid naming conflict with token_t on MacOS 2021-12-20 13:19:40 +01:00
Jens Steube
5b4ac09e91 User Options: Add new module function module_hash_decode_postprocess() to override hash specific configurations from command line 2021-11-28 13:58:27 +01:00
Jens Steube
93ba57f183 Update more module with OPTS_TYPE_MAXIMUM_THREADS 2021-11-14 10:11:53 +01:00
Jens Steube
01738fafa0 Deprecated Plugins: Add new module function module_deprecated_notice() to mark a plugin as deprecated and to return a free text user notice
Added option --deprecated-check-disable to enable deprecated plugins
2021-08-10 17:59:52 +02:00
Jens Steube
20a7b9f992 Tuning-Database: Add new module function module_extra_tuningdb_block() to extend hashcat.hctune content from a plugin
See src/modules/module_08900.c as an example
2021-08-01 16:25:37 +02:00
Jens Steube
7faf6859d6 Backport hand-optimized compiler settings in modules from ROCM to HIP
Backport DECLSPEC settings from ROCM to HIP
2021-07-13 20:45:01 +02:00
Jens Steube
72d1937fe7 Modules: Added hash categories HASH_CATEGORY_IMS and HASH_CATEGORY_CRYPTOCURRENCY_WALLET 2021-06-05 15:32:28 +02:00
Jens Steube
0b52409590 Modules: Recategorized HASH_CATEGORY option in various modules 2021-05-28 20:06:01 +02:00
Jens Steube
98aef2ae92 Module Structure: Add 3rd party library hook management functions. This also requires an update to all existing module_init() 2020-08-29 16:12:15 +02:00
Jens Steube
b9f6777f1b OpenCL Runtime: Add some unstable warnings for some SHA512 based algorithms on AMD GPU on macOS 2020-07-15 11:27:46 +02:00
Jens Steube
193aa77cdf Update unroll and unstable configuration for ROCM OpenCL runtime after unroll whitelisting change 2020-02-15 16:09:37 +01:00
Jens Steube
e72bd958ba Fix some formating 2020-01-15 20:27:08 +01:00
Gabriele Gristina
ca0ef1b70e update hash-name 2019-07-31 15:30:39 +02:00
Gabriele Gristina
bba2ee65a2 switch hash-mode from 1770 to 21000 2019-07-30 15:15:49 +02:00