mirror of
https://github.com/hashcat/hashcat.git
synced 2025-07-02 04:42:36 +00:00
Added temperature watchdog for CPU on linux using sysfs
This commit is contained in:
parent
72d7048b7e
commit
bfe83ec138
@ -18,6 +18,8 @@
|
|||||||
##
|
##
|
||||||
|
|
||||||
- Added option --markov-inverse to inverse markov statistics, with the idea of reversing the order of the password candidates
|
- 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 for CPU on linux using sysfs
|
||||||
|
|
||||||
##
|
##
|
||||||
## Bugs
|
## Bugs
|
||||||
@ -32,12 +34,6 @@
|
|||||||
- Fixed missing option to automatically disable kernel cache in -m 25600 and -m 25800
|
- Fixed missing option to automatically disable kernel cache in -m 25600 and -m 25800
|
||||||
- Fixed out-of-boundary write in slow candidates mode in combinator attack
|
- Fixed out-of-boundary write in slow candidates mode in combinator attack
|
||||||
|
|
||||||
##
|
|
||||||
## Features
|
|
||||||
##
|
|
||||||
|
|
||||||
- Added temperature watchdog and fanspeed readings for CPU and GPU on macOS using iokit
|
|
||||||
|
|
||||||
##
|
##
|
||||||
## Improvements
|
## Improvements
|
||||||
##
|
##
|
||||||
|
37
include/ext_sysfs_cpu.h
Normal file
37
include/ext_sysfs_cpu.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/**
|
||||||
|
* Author......: See docs/credits.txt
|
||||||
|
* License.....: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _EXT_SYSFS_CPU_H
|
||||||
|
#define _EXT_SYSFS_CPU_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
static const char SYSFS_HWMON[] = "/sys/class/hwmon";
|
||||||
|
|
||||||
|
static const char SENSOR_CORETEMP[] = "coretemp";
|
||||||
|
static const char SENSOR_K10TEMP[] = "k10temp";
|
||||||
|
static const char SENSOR_K8TEMP[] = "k8temp";
|
||||||
|
static const char SENSOR_ACPITZ[] = "acpitz";
|
||||||
|
|
||||||
|
typedef int HM_ADAPTER_SYSFS_CPU;
|
||||||
|
|
||||||
|
typedef void *SYSFS_CPU_LIB;
|
||||||
|
|
||||||
|
typedef struct hm_sysfs_cpu_lib
|
||||||
|
{
|
||||||
|
// currently not using libudev, because it can only read values, not set them, so using /sys instead
|
||||||
|
|
||||||
|
SYSFS_CPU_LIB lib;
|
||||||
|
|
||||||
|
} hm_sysfs_cpu_lib_t;
|
||||||
|
|
||||||
|
typedef hm_sysfs_cpu_lib_t SYSFS_CPU_PTR;
|
||||||
|
|
||||||
|
bool sysfs_cpu_init (void *hashcat_ctx);
|
||||||
|
void sysfs_cpu_close (void *hashcat_ctx);
|
||||||
|
char *hm_SYSFS_CPU_get_syspath_hwmon ();
|
||||||
|
int hm_SYSFS_CPU_get_temperature_current (void *hashcat_ctx, int *val);
|
||||||
|
|
||||||
|
#endif // _EXT_SYSFS_CPU_H
|
@ -1599,6 +1599,7 @@ typedef struct backend_ctx
|
|||||||
bool need_nvml;
|
bool need_nvml;
|
||||||
bool need_nvapi;
|
bool need_nvapi;
|
||||||
bool need_sysfs_amdgpu;
|
bool need_sysfs_amdgpu;
|
||||||
|
bool need_sysfs_cpu;
|
||||||
bool need_iokit;
|
bool need_iokit;
|
||||||
|
|
||||||
int comptime;
|
int comptime;
|
||||||
@ -1643,6 +1644,7 @@ typedef enum kernel_workload
|
|||||||
#include "ext_nvapi.h"
|
#include "ext_nvapi.h"
|
||||||
#include "ext_nvml.h"
|
#include "ext_nvml.h"
|
||||||
#include "ext_sysfs_amdgpu.h"
|
#include "ext_sysfs_amdgpu.h"
|
||||||
|
#include "ext_sysfs_cpu.h"
|
||||||
#include "ext_iokit.h"
|
#include "ext_iokit.h"
|
||||||
|
|
||||||
typedef struct hm_attrs
|
typedef struct hm_attrs
|
||||||
@ -1651,6 +1653,7 @@ typedef struct hm_attrs
|
|||||||
HM_ADAPTER_NVML nvml;
|
HM_ADAPTER_NVML nvml;
|
||||||
HM_ADAPTER_NVAPI nvapi;
|
HM_ADAPTER_NVAPI nvapi;
|
||||||
HM_ADAPTER_SYSFS_AMDGPU sysfs_amdgpu;
|
HM_ADAPTER_SYSFS_AMDGPU sysfs_amdgpu;
|
||||||
|
HM_ADAPTER_SYSFS_CPU sysfs_cpu;
|
||||||
HM_ADAPTER_IOKIT iokit;
|
HM_ADAPTER_IOKIT iokit;
|
||||||
|
|
||||||
int od_version;
|
int od_version;
|
||||||
@ -1676,6 +1679,7 @@ typedef struct hwmon_ctx
|
|||||||
void *hm_nvml;
|
void *hm_nvml;
|
||||||
void *hm_nvapi;
|
void *hm_nvapi;
|
||||||
void *hm_sysfs_amdgpu;
|
void *hm_sysfs_amdgpu;
|
||||||
|
void *hm_sysfs_cpu;
|
||||||
void *hm_iokit;
|
void *hm_iokit;
|
||||||
|
|
||||||
hm_attrs_t *hm_device;
|
hm_attrs_t *hm_device;
|
||||||
|
@ -360,7 +360,7 @@ EMU_OBJS_ALL += emu_inc_rp emu_inc_rp_optimized
|
|||||||
EMU_OBJS_ALL += emu_inc_hash_md4 emu_inc_hash_md5 emu_inc_hash_ripemd160 emu_inc_hash_sha1 emu_inc_hash_sha256 emu_inc_hash_sha384 emu_inc_hash_sha512 emu_inc_hash_streebog256 emu_inc_hash_streebog512 emu_inc_ecc_secp256k1
|
EMU_OBJS_ALL += emu_inc_hash_md4 emu_inc_hash_md5 emu_inc_hash_ripemd160 emu_inc_hash_sha1 emu_inc_hash_sha256 emu_inc_hash_sha384 emu_inc_hash_sha512 emu_inc_hash_streebog256 emu_inc_hash_streebog512 emu_inc_ecc_secp256k1
|
||||||
EMU_OBJS_ALL += emu_inc_cipher_aes emu_inc_cipher_camellia emu_inc_cipher_des emu_inc_cipher_kuznyechik emu_inc_cipher_serpent emu_inc_cipher_twofish
|
EMU_OBJS_ALL += emu_inc_cipher_aes emu_inc_cipher_camellia emu_inc_cipher_des emu_inc_cipher_kuznyechik emu_inc_cipher_serpent emu_inc_cipher_twofish
|
||||||
|
|
||||||
OBJS_ALL := affinity autotune backend benchmark bitmap bitops combinator common convert cpt cpu_crc32 debugfile dictstat dispatch dynloader event ext_ADL ext_cuda ext_nvapi ext_nvml ext_nvrtc ext_OpenCL ext_sysfs_amdgpu ext_iokit ext_lzma filehandling folder hashcat hashes hlfmt hwmon induct interface keyboard_layout locking logfile loopback memory monitor mpsp outfile_check outfile pidfile potfile restore rp rp_cpu selftest slow_candidates shared status stdout straight terminal thread timer tuningdb usage user_options wordlist $(EMU_OBJS_ALL)
|
OBJS_ALL := affinity autotune backend benchmark bitmap bitops combinator common convert cpt cpu_crc32 debugfile dictstat dispatch dynloader event ext_ADL ext_cuda ext_nvapi ext_nvml ext_nvrtc ext_OpenCL ext_sysfs_amdgpu ext_sysfs_cpu ext_iokit ext_lzma filehandling folder hashcat hashes hlfmt hwmon induct interface keyboard_layout locking logfile loopback memory monitor mpsp outfile_check outfile pidfile potfile restore rp rp_cpu selftest slow_candidates shared status stdout straight terminal thread timer tuningdb usage user_options wordlist $(EMU_OBJS_ALL)
|
||||||
|
|
||||||
ifeq ($(ENABLE_BRAIN),1)
|
ifeq ($(ENABLE_BRAIN),1)
|
||||||
OBJS_ALL += brain
|
OBJS_ALL += brain
|
||||||
|
@ -5684,6 +5684,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
bool need_nvml = false;
|
bool need_nvml = false;
|
||||||
bool need_nvapi = false;
|
bool need_nvapi = false;
|
||||||
bool need_sysfs_amdgpu = false;
|
bool need_sysfs_amdgpu = false;
|
||||||
|
bool need_sysfs_cpu = false;
|
||||||
bool need_iokit = false;
|
bool need_iokit = false;
|
||||||
|
|
||||||
int backend_devices_idx = 0;
|
int backend_devices_idx = 0;
|
||||||
@ -6727,6 +6728,10 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (__linux__)
|
||||||
|
need_sysfs_cpu = true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)
|
if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)
|
||||||
@ -7403,6 +7408,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
backend_ctx->need_nvml = need_nvml;
|
backend_ctx->need_nvml = need_nvml;
|
||||||
backend_ctx->need_nvapi = need_nvapi;
|
backend_ctx->need_nvapi = need_nvapi;
|
||||||
backend_ctx->need_sysfs_amdgpu = need_sysfs_amdgpu;
|
backend_ctx->need_sysfs_amdgpu = need_sysfs_amdgpu;
|
||||||
|
backend_ctx->need_sysfs_cpu = need_sysfs_cpu;
|
||||||
backend_ctx->need_iokit = need_iokit;
|
backend_ctx->need_iokit = need_iokit;
|
||||||
|
|
||||||
backend_ctx->comptime = comptime;
|
backend_ctx->comptime = comptime;
|
||||||
@ -7450,6 +7456,7 @@ void backend_ctx_devices_destroy (hashcat_ctx_t *hashcat_ctx)
|
|||||||
backend_ctx->need_nvml = false;
|
backend_ctx->need_nvml = false;
|
||||||
backend_ctx->need_nvapi = false;
|
backend_ctx->need_nvapi = false;
|
||||||
backend_ctx->need_sysfs_amdgpu = false;
|
backend_ctx->need_sysfs_amdgpu = false;
|
||||||
|
backend_ctx->need_sysfs_cpu = false;
|
||||||
backend_ctx->need_iokit = false;
|
backend_ctx->need_iokit = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
134
src/ext_sysfs_cpu.c
Normal file
134
src/ext_sysfs_cpu.c
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/**
|
||||||
|
* Author......: See docs/credits.txt
|
||||||
|
* License.....: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "types.h"
|
||||||
|
#include "memory.h"
|
||||||
|
#include "shared.h"
|
||||||
|
#include "event.h"
|
||||||
|
#include "folder.h"
|
||||||
|
#include "ext_sysfs_cpu.h"
|
||||||
|
|
||||||
|
bool sysfs_cpu_init (void *hashcat_ctx)
|
||||||
|
{
|
||||||
|
hwmon_ctx_t *hwmon_ctx = ((hashcat_ctx_t *) hashcat_ctx)->hwmon_ctx;
|
||||||
|
|
||||||
|
SYSFS_CPU_PTR *sysfs_cpu = (SYSFS_CPU_PTR *) hwmon_ctx->hm_sysfs_cpu;
|
||||||
|
|
||||||
|
memset (sysfs_cpu, 0, sizeof (SYSFS_CPU_PTR));
|
||||||
|
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
hc_asprintf (&path, "%s/hwmon0", SYSFS_HWMON);
|
||||||
|
|
||||||
|
const bool r = hc_path_read (path);
|
||||||
|
|
||||||
|
hcfree (path);
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sysfs_cpu_close (void *hashcat_ctx)
|
||||||
|
{
|
||||||
|
hwmon_ctx_t *hwmon_ctx = ((hashcat_ctx_t *) hashcat_ctx)->hwmon_ctx;
|
||||||
|
|
||||||
|
SYSFS_CPU_PTR *sysfs_cpu = (SYSFS_CPU_PTR *) hwmon_ctx->hm_sysfs_cpu;
|
||||||
|
|
||||||
|
if (sysfs_cpu)
|
||||||
|
{
|
||||||
|
hcfree (sysfs_cpu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *hm_SYSFS_CPU_get_syspath_hwmon ()
|
||||||
|
{
|
||||||
|
char *found[4];
|
||||||
|
|
||||||
|
found[0] = NULL;
|
||||||
|
found[1] = NULL;
|
||||||
|
found[2] = NULL;
|
||||||
|
found[3] = NULL;
|
||||||
|
|
||||||
|
// 16 ok?
|
||||||
|
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
char *path = NULL;
|
||||||
|
|
||||||
|
hc_asprintf (&path, "%s/hwmon%d/name", SYSFS_HWMON, i);
|
||||||
|
|
||||||
|
HCFILE fp;
|
||||||
|
|
||||||
|
if (hc_fopen_raw (&fp, path, "rb") == false) continue;
|
||||||
|
|
||||||
|
char buf[16];
|
||||||
|
|
||||||
|
const size_t line_len = fgetl (&fp, buf, sizeof (buf));
|
||||||
|
|
||||||
|
if (line_len)
|
||||||
|
{
|
||||||
|
if (strcmp (buf, SENSOR_CORETEMP) == 0) hc_asprintf (&found[0], "%s/hwmon%d", SYSFS_HWMON, i);
|
||||||
|
if (strcmp (buf, SENSOR_K10TEMP) == 0) hc_asprintf (&found[1], "%s/hwmon%d", SYSFS_HWMON, i);
|
||||||
|
if (strcmp (buf, SENSOR_K8TEMP) == 0) hc_asprintf (&found[2], "%s/hwmon%d", SYSFS_HWMON, i);
|
||||||
|
if (strcmp (buf, SENSOR_ACPITZ) == 0) hc_asprintf (&found[3], "%s/hwmon%d", SYSFS_HWMON, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
hc_fclose (&fp);
|
||||||
|
|
||||||
|
hcfree (path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found[0]) return found[0];
|
||||||
|
if (found[1]) return found[1];
|
||||||
|
if (found[2]) return found[2];
|
||||||
|
if (found[3]) return found[3];
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int hm_SYSFS_CPU_get_temperature_current (void *hashcat_ctx, int *val)
|
||||||
|
{
|
||||||
|
char *syspath = hm_SYSFS_CPU_get_syspath_hwmon ();
|
||||||
|
|
||||||
|
if (syspath == NULL) return -1;
|
||||||
|
|
||||||
|
char *path = NULL;
|
||||||
|
|
||||||
|
hc_asprintf (&path, "%s/temp1_input", syspath);
|
||||||
|
|
||||||
|
hcfree (syspath);
|
||||||
|
|
||||||
|
HCFILE fp;
|
||||||
|
|
||||||
|
if (hc_fopen_raw (&fp, path, "r") == false)
|
||||||
|
{
|
||||||
|
event_log_error (hashcat_ctx, "%s: %s", path, strerror (errno));
|
||||||
|
|
||||||
|
hcfree (path);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int temperature = 0;
|
||||||
|
|
||||||
|
if (hc_fscanf (&fp, "%d", &temperature) != 1)
|
||||||
|
{
|
||||||
|
hc_fclose (&fp);
|
||||||
|
|
||||||
|
event_log_error (hashcat_ctx, "%s: unexpected data.", path);
|
||||||
|
|
||||||
|
hcfree (path);
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hc_fclose (&fp);
|
||||||
|
|
||||||
|
*val = temperature / 1000;
|
||||||
|
|
||||||
|
hcfree (path);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
87
src/hwmon.c
87
src/hwmon.c
@ -269,6 +269,20 @@ int hm_get_temperature_with_devices_idx (hashcat_ctx_t *hashcat_ctx, const int b
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (hwmon_ctx->hm_sysfs_cpu)
|
||||||
|
{
|
||||||
|
int temperature = 0;
|
||||||
|
|
||||||
|
if (hm_SYSFS_CPU_get_temperature_current (hashcat_ctx, &temperature) == -1)
|
||||||
|
{
|
||||||
|
hwmon_ctx->hm_device[backend_device_idx].temperature_get_supported = false;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return temperature;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (backend_ctx->devices_param[backend_device_idx].opencl_device_type & CL_DEVICE_TYPE_GPU)
|
if (backend_ctx->devices_param[backend_device_idx].opencl_device_type & CL_DEVICE_TYPE_GPU)
|
||||||
@ -1066,6 +1080,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
hm_attrs_t *hm_adapters_nvapi = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
hm_attrs_t *hm_adapters_nvapi = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
||||||
hm_attrs_t *hm_adapters_nvml = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
hm_attrs_t *hm_adapters_nvml = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
||||||
hm_attrs_t *hm_adapters_sysfs_amdgpu = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
hm_attrs_t *hm_adapters_sysfs_amdgpu = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
||||||
|
hm_attrs_t *hm_adapters_sysfs_cpu = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
||||||
hm_attrs_t *hm_adapters_iokit = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
hm_attrs_t *hm_adapters_iokit = (hm_attrs_t *) hccalloc (DEVICES_MAX, sizeof (hm_attrs_t));
|
||||||
|
|
||||||
#define FREE_ADAPTERS \
|
#define FREE_ADAPTERS \
|
||||||
@ -1074,6 +1089,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
hcfree (hm_adapters_nvapi); \
|
hcfree (hm_adapters_nvapi); \
|
||||||
hcfree (hm_adapters_nvml); \
|
hcfree (hm_adapters_nvml); \
|
||||||
hcfree (hm_adapters_sysfs_amdgpu); \
|
hcfree (hm_adapters_sysfs_amdgpu); \
|
||||||
|
hcfree (hm_adapters_sysfs_cpu); \
|
||||||
hcfree (hm_adapters_iokit); \
|
hcfree (hm_adapters_iokit); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@ -1134,6 +1150,18 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (backend_ctx->need_sysfs_cpu == true)
|
||||||
|
{
|
||||||
|
hwmon_ctx->hm_sysfs_cpu = (SYSFS_CPU_PTR *) hcmalloc (sizeof (SYSFS_CPU_PTR));
|
||||||
|
|
||||||
|
if (sysfs_cpu_init (hashcat_ctx) == false)
|
||||||
|
{
|
||||||
|
hcfree (hwmon_ctx->hm_sysfs_cpu);
|
||||||
|
|
||||||
|
hwmon_ctx->hm_sysfs_cpu = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
if (backend_ctx->need_iokit == true)
|
if (backend_ctx->need_iokit == true)
|
||||||
{
|
{
|
||||||
@ -1425,6 +1453,42 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hwmon_ctx->hm_sysfs_cpu)
|
||||||
|
{
|
||||||
|
if (true)
|
||||||
|
{
|
||||||
|
for (int backend_devices_idx = 0; backend_devices_idx < backend_ctx->backend_devices_cnt; backend_devices_idx++)
|
||||||
|
{
|
||||||
|
hc_device_param_t *device_param = &backend_ctx->devices_param[backend_devices_idx];
|
||||||
|
|
||||||
|
if (device_param->skipped == true) continue;
|
||||||
|
|
||||||
|
if (device_param->is_cuda == true)
|
||||||
|
{
|
||||||
|
// nothing to do
|
||||||
|
}
|
||||||
|
|
||||||
|
if (device_param->is_opencl == true)
|
||||||
|
{
|
||||||
|
const u32 device_id = device_param->device_id;
|
||||||
|
|
||||||
|
if ((device_param->opencl_device_type & CL_DEVICE_TYPE_CPU) == 0) continue;
|
||||||
|
|
||||||
|
if (hwmon_ctx->hm_sysfs_cpu)
|
||||||
|
{
|
||||||
|
hm_adapters_sysfs_cpu[device_id].buslanes_get_supported = false;
|
||||||
|
hm_adapters_sysfs_cpu[device_id].corespeed_get_supported = false;
|
||||||
|
hm_adapters_sysfs_cpu[device_id].fanspeed_get_supported = false;
|
||||||
|
hm_adapters_sysfs_cpu[device_id].fanpolicy_get_supported = false;
|
||||||
|
hm_adapters_sysfs_cpu[device_id].memoryspeed_get_supported = false;
|
||||||
|
hm_adapters_sysfs_cpu[device_id].temperature_get_supported = true;
|
||||||
|
hm_adapters_sysfs_cpu[device_id].utilization_get_supported = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(__APPLE__)
|
#if defined(__APPLE__)
|
||||||
if (backend_ctx->need_iokit == true)
|
if (backend_ctx->need_iokit == true)
|
||||||
{
|
{
|
||||||
@ -1440,7 +1504,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (hwmon_ctx->hm_adl == NULL && hwmon_ctx->hm_nvml == NULL && hwmon_ctx->hm_sysfs_amdgpu == NULL && hwmon_ctx->hm_iokit == NULL)
|
if (hwmon_ctx->hm_adl == NULL && hwmon_ctx->hm_nvml == NULL && hwmon_ctx->hm_sysfs_amdgpu == NULL && hwmon_ctx->hm_sysfs_cpu == NULL && hwmon_ctx->hm_iokit == NULL)
|
||||||
{
|
{
|
||||||
FREE_ADAPTERS;
|
FREE_ADAPTERS;
|
||||||
|
|
||||||
@ -1473,6 +1537,7 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
|
|
||||||
hwmon_ctx->hm_device[backend_devices_idx].adl = 0;
|
hwmon_ctx->hm_device[backend_devices_idx].adl = 0;
|
||||||
hwmon_ctx->hm_device[backend_devices_idx].sysfs_amdgpu = 0;
|
hwmon_ctx->hm_device[backend_devices_idx].sysfs_amdgpu = 0;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].sysfs_cpu = 0;
|
||||||
hwmon_ctx->hm_device[backend_devices_idx].iokit = 0;
|
hwmon_ctx->hm_device[backend_devices_idx].iokit = 0;
|
||||||
hwmon_ctx->hm_device[backend_devices_idx].nvapi = 0;
|
hwmon_ctx->hm_device[backend_devices_idx].nvapi = 0;
|
||||||
hwmon_ctx->hm_device[backend_devices_idx].nvml = 0;
|
hwmon_ctx->hm_device[backend_devices_idx].nvml = 0;
|
||||||
@ -1535,8 +1600,21 @@ int hwmon_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
|
if (hwmon_ctx->hm_sysfs_cpu)
|
||||||
|
{
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].buslanes_get_supported |= hm_adapters_sysfs_cpu[device_id].buslanes_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].corespeed_get_supported |= hm_adapters_sysfs_cpu[device_id].corespeed_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].fanspeed_get_supported |= hm_adapters_sysfs_cpu[device_id].fanspeed_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].fanpolicy_get_supported |= hm_adapters_sysfs_cpu[device_id].fanpolicy_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].memoryspeed_get_supported |= hm_adapters_sysfs_cpu[device_id].memoryspeed_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].temperature_get_supported |= hm_adapters_sysfs_cpu[device_id].temperature_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].threshold_shutdown_get_supported |= hm_adapters_sysfs_cpu[device_id].threshold_shutdown_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].threshold_slowdown_get_supported |= hm_adapters_sysfs_cpu[device_id].threshold_slowdown_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].throttle_get_supported |= hm_adapters_sysfs_cpu[device_id].throttle_get_supported;
|
||||||
|
hwmon_ctx->hm_device[backend_devices_idx].utilization_get_supported |= hm_adapters_sysfs_cpu[device_id].utilization_get_supported;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)
|
if (device_param->opencl_device_type & CL_DEVICE_TYPE_GPU)
|
||||||
{
|
{
|
||||||
@ -1686,6 +1764,11 @@ void hwmon_ctx_destroy (hashcat_ctx_t *hashcat_ctx)
|
|||||||
sysfs_amdgpu_close (hashcat_ctx);
|
sysfs_amdgpu_close (hashcat_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hwmon_ctx->hm_sysfs_cpu)
|
||||||
|
{
|
||||||
|
sysfs_cpu_close (hashcat_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
#if defined (__APPLE__)
|
#if defined (__APPLE__)
|
||||||
if (hwmon_ctx->hm_iokit)
|
if (hwmon_ctx->hm_iokit)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user