X-Git-Url: https://www.flypig.org.uk/git/?a=blobdiff_plain;f=src%2Fshared.c;h=2cc6d9f887258c4a8048a8d6387ab060fdf29c91;hb=3370820109dd9c9dd46d29253c12a1e584556948;hp=9e16c02c6470703b401ca5f4675f27643fd4003c;hpb=d8bb00cf773b839aeb50845f51fb28484f2a1221;p=hashcat.git diff --git a/src/shared.c b/src/shared.c index 9e16c02..2cc6d9f 100644 --- a/src/shared.c +++ b/src/shared.c @@ -3402,11 +3402,17 @@ int hm_get_throttle_with_device_id (const uint device_id) if (hm_NVML_nvmlDeviceGetCurrentClocksThrottleReasons (data.hm_nvml, 1, data.hm_device[device_id].nvml, &clocksThrottleReasons) != NVML_SUCCESS) return -1; if (hm_NVML_nvmlDeviceGetSupportedClocksThrottleReasons (data.hm_nvml, 1, data.hm_device[device_id].nvml, &supportedThrottleReasons) != NVML_SUCCESS) return -1; - clocksThrottleReasons &= supportedThrottleReasons; - + clocksThrottleReasons &= supportedThrottleReasons; + clocksThrottleReasons &= ~nvmlClocksThrottleReasonGpuIdle; + clocksThrottleReasons &= ~nvmlClocksThrottleReasonApplicationsClocksSetting; clocksThrottleReasons &= ~nvmlClocksThrottleReasonUnknown; - return (clocksThrottleReasons > 0); + if (data.kernel_power_final) + { + clocksThrottleReasons &= ~nvmlClocksThrottleReasonHwSlowdown; + } + + return (clocksThrottleReasons != nvmlClocksThrottleReasonNone); } return -1; @@ -3418,33 +3424,51 @@ int hm_set_fanspeed_with_device_id_adl (const uint device_id, const int fanspeed { if (data.hm_adl) { - if (data.hm_device[device_id].od_version == 5) + if (fanpolicy == 1) { - ADLFanSpeedValue lpFanSpeedValue; + if (data.hm_device[device_id].od_version == 5) + { + ADLFanSpeedValue lpFanSpeedValue; - memset (&lpFanSpeedValue, 0, sizeof (lpFanSpeedValue)); + memset (&lpFanSpeedValue, 0, sizeof (lpFanSpeedValue)); - lpFanSpeedValue.iSize = sizeof (lpFanSpeedValue); - lpFanSpeedValue.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_PERCENT; - lpFanSpeedValue.iFlags = (fanpolicy == 1) ? ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED : 0; - lpFanSpeedValue.iFanSpeed = fanspeed; + lpFanSpeedValue.iSize = sizeof (lpFanSpeedValue); + lpFanSpeedValue.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_PERCENT; + lpFanSpeedValue.iFlags = ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED; + lpFanSpeedValue.iFanSpeed = fanspeed; - if (hm_ADL_Overdrive5_FanSpeed_Set (data.hm_adl, data.hm_device[device_id].adl, 0, &lpFanSpeedValue) != ADL_OK) return -1; + if (hm_ADL_Overdrive5_FanSpeed_Set (data.hm_adl, data.hm_device[device_id].adl, 0, &lpFanSpeedValue) != ADL_OK) return -1; - return 0; - } - else // od_version == 6 - { - ADLOD6FanSpeedValue fan_speed_value; + return 0; + } + else // od_version == 6 + { + ADLOD6FanSpeedValue fan_speed_value; - memset (&fan_speed_value, 0, sizeof (fan_speed_value)); + memset (&fan_speed_value, 0, sizeof (fan_speed_value)); - fan_speed_value.iSpeedType = ADL_OD6_FANSPEED_TYPE_PERCENT; - fan_speed_value.iFanSpeed = fanspeed; + fan_speed_value.iSpeedType = ADL_OD6_FANSPEED_TYPE_PERCENT; + fan_speed_value.iFanSpeed = fanspeed; - if (hm_ADL_Overdrive6_FanSpeed_Set (data.hm_adl, data.hm_device[device_id].adl, &fan_speed_value) != ADL_OK) return -1; + if (hm_ADL_Overdrive6_FanSpeed_Set (data.hm_adl, data.hm_device[device_id].adl, &fan_speed_value) != ADL_OK) return -1; - return 0; + return 0; + } + } + else + { + if (data.hm_device[device_id].od_version == 5) + { + if (hm_ADL_Overdrive5_FanSpeedToDefault_Set (data.hm_adl, data.hm_device[device_id].adl, 0) != ADL_OK) return -1; + + return 0; + } + else // od_version == 6 + { + if (hm_ADL_Overdrive6_FanSpeed_Reset (data.hm_adl, data.hm_device[device_id].adl) != ADL_OK) return -1; + + return 0; + } } } } @@ -3458,16 +3482,25 @@ int hm_set_fanspeed_with_device_id_nvapi (const uint device_id, const int fanspe { if (data.hm_nvapi) { - NV_GPU_COOLER_LEVELS CoolerLevels = { 0 }; + if (fanpolicy == 1) + { + NV_GPU_COOLER_LEVELS CoolerLevels = { 0 }; - CoolerLevels.Version = GPU_COOLER_LEVELS_VER | sizeof (NV_GPU_COOLER_LEVELS); + CoolerLevels.Version = GPU_COOLER_LEVELS_VER | sizeof (NV_GPU_COOLER_LEVELS); - CoolerLevels.Levels[0].Level = fanspeed; - CoolerLevels.Levels[0].Policy = fanpolicy; + CoolerLevels.Levels[0].Level = fanspeed; + CoolerLevels.Levels[0].Policy = 1; - if (hm_NvAPI_GPU_SetCoolerLevels (data.hm_nvapi, data.hm_device[device_id].nvapi, 0, &CoolerLevels) != NVAPI_OK) return -1; + if (hm_NvAPI_GPU_SetCoolerLevels (data.hm_nvapi, data.hm_device[device_id].nvapi, 0, &CoolerLevels) != NVAPI_OK) return -1; - return 0; + return 0; + } + else + { + if (hm_NvAPI_GPU_RestoreCoolerSettings (data.hm_nvapi, data.hm_device[device_id].nvapi, 0) != NVAPI_OK) return -1; + + return 0; + } } } @@ -9129,36 +9162,32 @@ void to_hccap_t (hccap_t *hccap, uint salt_pos, uint digest_pos) void SuspendThreads () { - if (data.devices_status == STATUS_RUNNING) - { - hc_timer_set (&data.timer_paused); + if (data.devices_status != STATUS_RUNNING) return; - data.devices_status = STATUS_PAUSED; + hc_timer_set (&data.timer_paused); - log_info ("Paused"); - } + data.devices_status = STATUS_PAUSED; + + log_info ("Paused"); } void ResumeThreads () { - if (data.devices_status == STATUS_PAUSED) - { - double ms_paused; + if (data.devices_status != STATUS_PAUSED) return; - hc_timer_get (data.timer_paused, ms_paused); + double ms_paused; - data.ms_paused += ms_paused; + hc_timer_get (data.timer_paused, ms_paused); - data.devices_status = STATUS_RUNNING; + data.ms_paused += ms_paused; - log_info ("Resumed"); - } + data.devices_status = STATUS_RUNNING; + + log_info ("Resumed"); } void bypass () { - if (data.devices_status != STATUS_RUNNING) return; - data.devices_status = STATUS_BYPASS; log_info ("Next dictionary / mask in queue selected, bypassing current one"); @@ -9206,39 +9235,54 @@ void stop_at_checkpoint () void myabort () { - if (data.devices_status == STATUS_INIT) return; - if (data.devices_status == STATUS_STARTING) return; - data.devices_status = STATUS_ABORTED; } void myquit () { - if (data.devices_status == STATUS_INIT) return; - if (data.devices_status == STATUS_STARTING) return; - data.devices_status = STATUS_QUIT; } -void naive_escape (const char *cpath_real, char *cpath_escaped, const size_t cpath_escaped_len) +void naive_replace (char *s, const u8 key_char, const u8 replace_char) { - const size_t len = strlen (cpath_real); + const size_t len = strlen (s); + + for (size_t in = 0; in < len; in++) + { + const u8 c = s[in]; + + if (c == key_char) + { + s[in] = replace_char; + } + } +} + +void naive_escape (char *s, size_t s_max, const u8 key_char, const u8 escape_char) +{ + char s_escaped[1024] = { 0 }; + + size_t s_escaped_max = sizeof (s_escaped); + + const size_t len = strlen (s); for (size_t in = 0, out = 0; in < len; in++, out++) { - const u8 c = cpath_real[in]; + const u8 c = s[in]; - if (c == ' ') + if (c == key_char) { - cpath_escaped[out] = '\\'; + s_escaped[out] = escape_char; out++; } - if (out == cpath_escaped_len) break; + if (out == s_escaped_max - 2) break; - cpath_escaped[out] = c; + s_escaped[out] = c; } + + strncpy (s, s_escaped, s_max - 1); } void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const u8 **kernel_sources) @@ -20683,7 +20727,7 @@ BOOL WINAPI sigHandler_benchmark (DWORD sig) { case CTRL_CLOSE_EVENT: - myabort (); + myquit (); SetConsoleCtrlHandler (NULL, TRUE); @@ -20748,13 +20792,11 @@ void status_display (); void *thread_keypress (void *p) { - int benchmark = *((int *) p); - uint quiet = data.quiet; tty_break(); - while ((data.devices_status != STATUS_EXHAUSTED) && (data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT)) + while (data.shutdown_outer == 0) { int ch = tty_getchar(); @@ -20831,8 +20873,6 @@ void *thread_keypress (void *p) log_info (""); - if (benchmark == 1) break; - stop_at_checkpoint (); log_info (""); @@ -20846,14 +20886,7 @@ void *thread_keypress (void *p) log_info (""); - if (benchmark == 1) - { - myquit (); - } - else - { - myabort (); - } + myabort (); break; }