1
0
mirror of https://github.com/hashcat/hashcat.git synced 2025-07-22 06:28:16 +00:00
Commit Graph

149 Commits

Author SHA1 Message Date
Jens Steube
c87a87f992 Improvements to SCRYPT autotuning strategy
General:

The logic for calculating the SCRYPT workload has been moved
from module_extra_buffer_size() to module_extra_tuningdb_block().
Previously, this function just returned values from a static
tuning file. Now, it actually computes tuning values on the fly
based on the device's resources and SCRYPT parameters. This
was always possible, it just wasn't used that way until now.

After running the calculation, the calculated kernel_accel value
is injected into the tuning database as if it had come from a
file. The tmto value is stored internally.

Users can still override kernel-threads, kernel-accel, and
scrypt-tmto via the command line or via tuningdb file.

module_extra_tuningdb_block():

This is now where kernel_accel and tmto are automatically
calculated.

The logic for accel and tmto is now separated and more
flexible. Whether the user is using defaults, tuningdb entries, or
manual command line overrides, the code logic will try to make
smart choices based on what's actually available on the device.

First, it tries to find a kernel_accel value that fits into
available memory. It starts with a base value and simulates
tmto=1 or 2 (which is typical good on GPU).

It also leaves room for other buffers (like pws[], tmps[], etc.).
If the result is close to the actual processor count,
it gets clamped.

This value is then added to the tuning database, so hashcat can pick
it up during startup.

Once that's set, it derives tmto using available memory, thread
count, and the actual SCRYPT parameters.

module_extra_buffer_size():

This function now just returns the size of the SCRYPT B[] buffer,
based on the tmto that was already calculated.

kernel_threads:

Defaults are now set to 32 threads in most cases. On AMD GPUs,
64 threads might give a slight performance bump, but 32 is more
consistent and reliable.

For very memory-heavy algorithms (like Ethereum Wallet), it
scales down the thread count.

Here's a rough reference for other SCRYPT-based modes:

- 64 MiB: 16 threads
- 256 MiB: 4 threads

Tuning files:

All built-in tuningdb entries have been removed, because they
shouldn’t be needed anymore. But you can still add custom entries
if needed. There’s even a commented-out example in the tuningdb
file for mode 22700.

Free memory handling:

Getting the actual amount of free GPU memory is critical for
this to work right. Unfortunately, none of the common GPGPU APIs
give reliable numbers. We now query low-level interfaces like
SYSFS (AMD) and NVML (NVIDIA). Support for those APIs is in
place already, except for ADL, which still needs to be added.

Because of this, hwmon support (which handles those low-level
queries) can no longer be disabled.
2025-06-09 11:02:34 +02:00
Jens Steube
e8052a004b - Replace naive 32 bit rotate with funnelshift on CUDA/HIP
- Replace V_ALIGNBIT_B32 with funnelshift on HIP
- Improve RC4 performance by preventing inlineing
- Fix leftover code in yescrypt-platform.c
- Update docs/hashcat-assimilation-bridge-development.md
- Only initialize hwmon on host for virtualized backends
- Improve SCRYPT tunings on AMD RX6900XT
2025-06-02 11:50:08 +02:00
jsteube
31240cf91a Fix hwmon_disable issue in hwmon.c 2023-10-15 18:43:36 +00:00
Gabriele Gristina
36606addac Help: show supported hash-modes only with -hh 2023-05-01 17:38:42 +02:00
philsmd
a24d723d66
minor code style fixes 2022-03-31 19:19:16 +02:00
Gabriele Gristina
7eb66e9936 Hardware Monitor: Add support for GPU device utilization readings using iokit on Apple Silicon (OpenCL and Metal) 2022-02-15 22:20:03 +01:00
Gabriele Gristina
3064c63c71 User Options: Change --backend-info/-I option type, from bool to int 2022-02-13 12:33:11 +01:00
Jens Steube
532a154542 ADL: Updated support for AMD Display Library to 15.0, updated datatypes and added support for OverDrive 7 and 8 based GPUs 2021-07-27 12:02:27 +02:00
Jens Steube
b53691c8f5 ADL: Updated support for AMD Display Library to 14.0, updated datatypes and added support for OverDrive 7 and 8 based GPUs 2021-07-26 07:48:56 +02:00
Jens Steube
f3bd936971 Add hardware monitor mapping for HIP devices 2021-07-14 08:23:39 +02:00
Jens Steube
9fc6c26f8c Added temperature watchdog and utilization for CPU on linux using sysfs and procfs 2021-07-10 14:24:51 +02:00
Jens Steube
bfe83ec138 Added temperature watchdog for CPU on linux using sysfs 2021-07-10 08:43:15 +02:00
Jens Steube
979f9e9868 Rename hardware monitor interface sysfs to sysfs_amdgpu 2021-07-09 20:48:10 +02:00
Jens Steube
71c0ea44b7 Update hwmon to easier distinguish between CPU and GPU for OpenCL backend 2021-07-08 09:04:14 +02:00
Gabriele Gristina
1703d24c1a hide fan speed from hwmon output if not detected 2021-06-19 20:46:09 +02:00
Gabriele Gristina
3a6481da4e show all fans in hwmon output 2021-06-19 20:32:07 +02:00
Gabriele Gristina
bc4ce4cbeb Add support for CPU/GPU device temperature and fanspeed using iokit (Apple) 2021-06-12 20:13:31 +02:00
Jens Steube
7fc0ac4ef1 Do not initialize backend devices in case --id is used and some bug fixes 2021-06-12 10:47:48 +02:00
Gabriele Gristina
2bc68f32db remove unused rc vars 2021-06-10 20:26:24 +02:00
Gabriele Gristina
e5de44c80d Restyling hwmon (2021)(2) 2021-06-10 20:13:12 +02:00
Jens Steube
e8ad343153 Hardware Monitor: Add support for GPU device utilization readings from sysfs (AMD on Linux) 2021-06-07 09:34:34 +02:00
Jens Steube
bb1460d851 Fixed hardware management sysfs readings in status screen (typically ROCm controlled GPUs) 2021-05-08 12:14:07 +02:00
epixoip
6ff51e1070 Workaround for NVML and WSL2 shim 2021-04-24 22:17:05 -05:00
Gabriele Gristina
77e328d659 Removed option --example-hashes, now is an alias of --hash-info 2020-12-29 07:56:20 +01:00
Gabriele Gristina
3ed1f0d840 Added new option: --hash-info 2020-12-29 04:58:58 +01:00
philsmd
e59f61e8cf
cosmetic: minor code style fixes 2020-06-13 11:19:00 +02:00
Rosen Penev
a6edb84157
Fix extra semicolon warnings
These macros don't need a ; but since ; is used, make the macros more
robust by enclosing them in a do while loop.
2019-11-09 16:42:50 -08:00
Jens Steube
ce0257dd84
Merge pull request #2189 from neheb/fgfggdf
bools
2019-11-05 12:29:02 +01:00
Rosen Penev
bd6c0e57e4 Change 0/1 to true/false
Found with clang-tidy
2019-09-11 18:36:52 -07:00
Rosen Penev
fd8150769d Add casts where needed in C++ mode
Otherwise, -fpermissive must be passed.
2019-09-11 18:05:01 -07:00
Rosen Penev
98e17d5774
Run through clang-tidy's readability-uppercase-literal-suffix
1 and l are visually similar and can be confused. This also changes u to U
for consistency.
2019-08-03 19:59:17 -07:00
Gabriele Gristina
3161aec3da fix the comments :) 2019-07-01 17:27:08 +02:00
Gabriele Gristina
5679ca3344 Rewrite hc_fopen to better handling file descriptor locking/unlocking functions, saving kernels binary from plain to gzip format 2019-07-01 01:30:24 +02:00
Gabriele Gristina
5d3ed3e754 Remove union from HCFILE, using std file ops in ocl_check_dri, remove debug comments 2019-06-28 17:58:08 +02:00
Gabriele Gristina
481c752456 No more compress functions, update example.dict.gz, remove some comments 2019-06-27 20:18:47 +02:00
Gabriele Gristina
398c89c75c switch almost all FILE ops, potfile is the only missing 2019-06-26 19:06:46 +02:00
Gabriele Gristina
084ea69b3b Fix missing hc_fread switch to new format 2019-06-22 16:56:14 +02:00
Jens Steube
3c4f4df771 Rename some more variables 2019-05-01 15:52:56 +02:00
Jens Steube
e3500ff4aa Add CUDA device attributes to -I 2019-04-30 13:38:44 +02:00
Jens Steube
d862458ab5 Begin renaming API specific variables in backend section 2019-04-29 10:21:59 +02:00
Jens Steube
4b986de5fb Prepare native CUDA hybrid integration 2019-04-25 14:45:17 +02:00
jsteube
4028bae578 Use dynloader.c instead of dlopen() directly 2018-12-19 16:09:28 +01:00
R. Yushaev
074fad9fef Correct buffer size parameter in snprintf calls
There are approx. 240 snprintf calls that set the target buffer size to
out_len - 1 or similar. This "mind the null character" subtraction is
unnecessary since snprintf already includes the string termination into
the given buffer size.
2018-12-07 10:37:56 +01:00
jsteube
1156cf7207 Fixed invalid hardware monitor detection in benchmark mode
Fixes https://github.com/hashcat/hashcat/issues/1787
2018-11-17 14:40:30 +01:00
Jens Steube
2aff01b20e Hardware Monitor: Renamed --gpu-temp-abort to --hwmon-temp-abort
Hardware Monitor: Renamed --gpu-temp-disable to --hwmon-disable
Fixed invalid warnings about throttling in case --hwmon-disable was used
Fixes https://github.com/hashcat/hashcat/issues/1757
2018-11-09 12:48:27 +01:00
RAN1
40cc9b948f hwmon_ctx_init: return on speed_only and progress_only 2018-08-29 22:38:03 -04:00
RAN1
ec1b6442b1 Allow hwmon when temp abort is disabled by refactoring guards when hwmon is not present 2018-08-28 16:28:44 -04:00
jsteube
b864fa5ba7 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
2017-12-01 15:19:10 +01:00
Rosen Penev
6b0ee145c4 Fix missing stuff 2017-11-10 20:54:48 -08:00
Rosen Penev
3ba84f17f1 More clang tidy fixes 2017-11-05 01:52:29 -07:00