format_speed_display (hashes_dev_ms[device_id] * 1000, display_dev_cur, sizeof (display_dev_cur));
- log_info ("Speed.Dev.#%d.: %9sH/s (%0.2fms)", device_id + 1, display_dev_cur, exec_all_ms[device_id]);
+ if (data.devices_active >= 10)
+ {
+ log_info ("Speed.Dev.#%d: %9sH/s (%0.2fms)", device_id + 1, display_dev_cur, exec_all_ms[device_id]);
+ }
+ else
+ {
+ log_info ("Speed.Dev.#%d.: %9sH/s (%0.2fms)", device_id + 1, display_dev_cur, exec_all_ms[device_id]);
+ }
}
char display_all_cur[16] = { 0 };
uint cpt_cracked = 0;
+ hc_thread_mutex_lock (mux_display);
+
for (uint i = 0; i < num_cracked; i++)
{
const uint hash_pos = cracked[i].hash_pos;
if (data.digests_shown[hash_pos] == 1) continue;
- hc_thread_mutex_lock (mux_display);
-
if ((data.opts_type & OPTS_TYPE_PT_NEVERCRACK) == 0)
{
data.digests_shown[hash_pos] = 1;
if (data.salts_done == data.salts_cnt) data.devices_status = STATUS_CRACKED;
- hc_thread_mutex_unlock (mux_display);
-
check_hash (device_param, &cracked[i]);
}
+ hc_thread_mutex_unlock (mux_display);
+
myfree (cracked);
if (cpt_cracked > 0)
{
log_info ("%s (%s) starting in benchmark-mode...", PROGNAME, VERSION_TAG);
log_info ("");
- log_info ("Note: Reported benchmark cracking speed = real cracking speed");
- log_info ("To verify, run hashcat like this: only_one_hash.txt -a 3 -w 3 ?b?b?b?b?b?b?b");
- log_info ("");
}
else
{
{
if (force == 0)
{
- log_info ("The manual use of the option -n (or --kernel-accel) is outdated");
- log_info ("Please consider using the option -w instead");
+ log_info ("The manual use of the -n option (or --kernel-accel) is outdated");
+ log_info ("Please consider using the -w option instead");
log_info ("You can use --force to override this but do not post error reports if you do so");
log_info ("");
{
if (force == 0)
{
- log_info ("The manual use of the option -u (or --kernel-loops) is outdated");
- log_info ("Please consider using the option -w instead");
+ log_info ("The manual use of the -u option (or --kernel-loops) is outdated");
+ log_info ("Please consider using the -w option instead");
log_info ("You can use --force to override this but do not post error reports if you do so");
log_info ("");
dgst_pos3 = 1;
break;
- case 190: hash_type = HASH_TYPE_SHA1;
- salt_type = SALT_TYPE_NONE;
- attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
- opts_type = OPTS_TYPE_PT_GENERATE_BE
- | OPTS_TYPE_PT_ADD80
- | OPTS_TYPE_PT_ADDBITS15;
- kern_type = KERN_TYPE_SHA1_LINKEDIN;
- dgst_size = DGST_SIZE_4_5;
- parse_func = sha1linkedin_parse_hash;
- sort_by_digest = sort_by_digest_4_5;
- opti_type = OPTI_TYPE_ZERO_BYTE
- | OPTI_TYPE_PRECOMPUTE_INIT
- | OPTI_TYPE_EARLY_SKIP
- | OPTI_TYPE_NOT_ITERATED
- | OPTI_TYPE_NOT_SALTED;
- dgst_pos0 = 0;
- dgst_pos1 = 4;
- dgst_pos2 = 3;
- dgst_pos3 = 2;
- break;
-
case 200: hash_type = HASH_TYPE_MYSQL;
salt_type = SALT_TYPE_NONE;
attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
if (hash_fmt_error)
{
- log_info ("WARNING: failed to parse hashes using the '%s' format", strhlfmt (hashlist_format));
+ log_info ("WARNING: Failed to parse hashes using the '%s' format", strhlfmt (hashlist_format));
}
else
{
if (parser_status < PARSER_GLOBAL_ZERO)
{
- log_info ("WARNING: Hashfile '%s' in line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
+ log_info ("WARNING: Hashfile '%s' on line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
continue;
}
if (parser_status < PARSER_GLOBAL_ZERO)
{
- log_info ("WARNING: Hashfile '%s' in line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
+ log_info ("WARNING: Hashfile '%s' on line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
continue;
}
if (parser_status < PARSER_GLOBAL_ZERO)
{
- log_info ("WARNING: Hashfile '%s' in line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
+ log_info ("WARNING: Hashfile '%s' on line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
continue;
}
if (parser_status < PARSER_GLOBAL_ZERO)
{
- log_info ("WARNING: Hashfile '%s' in line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
+ log_info ("WARNING: Hashfile '%s' on line %u (%s): %s", data.hashfile, line_num, line_buf, strparser (parser_status));
continue;
}
if (result == -1)
{
- log_info ("WARNING: Skipping invalid or unsupported rule in file %s in line %u: %s", rp_file, rule_line, rule_buf);
+ log_info ("WARNING: Skipping invalid or unsupported rule in file %s on line %u: %s", rp_file, rule_line, rule_buf);
continue;
}
if (cpu_rule_to_kernel_rule (rule_buf, rule_len, &kernel_rules_buf[kernel_rules_cnt]) == -1)
{
- log_info ("WARNING: Cannot convert rule for use on device in file %s in line %u: %s", rp_file, rule_line, rule_buf);
+ log_info ("WARNING: Cannot convert rule for use on device in file %s on line %u: %s", rp_file, rule_line, rule_buf);
memset (&kernel_rules_buf[kernel_rules_cnt], 0, sizeof (kernel_rule_t)); // needs to be cleared otherwise we could have some remaining data
if (device_endian_little == CL_FALSE)
{
- log_info ("- Device #%u: WARNING: not little endian device", device_id + 1);
+ log_info ("- Device #%u: WARNING: Not a little endian device", device_id + 1);
device_param->skipped = 1;
}
if (device_available == CL_FALSE)
{
- log_info ("- Device #%u: WARNING: device not available", device_id + 1);
+ log_info ("- Device #%u: WARNING: Device not available", device_id + 1);
device_param->skipped = 1;
}
if (device_compiler_available == CL_FALSE)
{
- log_info ("- Device #%u: WARNING: device no compiler available", device_id + 1);
+ log_info ("- Device #%u: WARNING: No compiler available for device", device_id + 1);
device_param->skipped = 1;
}
if ((device_execution_capabilities & CL_EXEC_KERNEL) == 0)
{
- log_info ("- Device #%u: WARNING: device does not support executing kernels", device_id + 1);
+ log_info ("- Device #%u: WARNING: Device does not support executing kernels", device_id + 1);
device_param->skipped = 1;
}
if (strstr (device_extensions, "base_atomics") == 0)
{
- log_info ("- Device #%u: WARNING: device does not support base atomics", device_id + 1);
+ log_info ("- Device #%u: WARNING: Device does not support base atomics", device_id + 1);
device_param->skipped = 1;
}
if (strstr (device_extensions, "byte_addressable_store") == 0)
{
- log_info ("- Device #%u: WARNING: device does not support byte addressable store", device_id + 1);
+ log_info ("- Device #%u: WARNING: Device does not support byte addressable store", device_id + 1);
device_param->skipped = 1;
}
if (device_local_mem_size < 32768)
{
- log_info ("- Device #%u: WARNING: device local mem size is too small", device_id + 1);
+ log_info ("- Device #%u: WARNING: Device local mem size is too small", device_id + 1);
device_param->skipped = 1;
}
{
if (algorithm_pos == 0)
{
- log_info ("- Device #%u: WARNING: not native intel opencl runtime, expect massive speed loss", device_id + 1);
+ log_info ("- Device #%u: WARNING: Not a native Intel OpenCL runtime, expect massive speed loss", device_id + 1);
log_info (" You can use --force to override this but do not post error reports if you do so");
}
if (catalyst_broken == 1)
{
log_info ("");
- log_info ("ATTENTION! The installed catalyst driver in your system is known to be broken!");
- log_info ("It will pass over cracked hashes and does not report them as cracked");
+ log_info ("ATTENTION! The Catalyst driver installed on your system is known to be broken!");
+ log_info ("It passes over cracked hashes and will not report them as cracked");
log_info ("You are STRONGLY encouraged not to use it");
log_info ("You can use --force to override this but do not post error reports if you do so");
log_info ("");
if (catalyst_warn == 1)
{
log_info ("");
- log_info ("ATTENTION! Unsupported or incorrect installed catalyst driver detected!");
- log_info ("You are STRONGLY encouraged to use the official supported catalyst driver for good reasons");
+ log_info ("ATTENTION! Unsupported or incorrectly installed Catalyst driver detected!");
+ log_info ("You are STRONGLY encouraged to use the official supported catalyst driver");
log_info ("See hashcat's homepage for official supported catalyst drivers");
#ifdef _WIN
log_info ("Also see: http://hashcat.net/wiki/doku.php?id=upgrading_amd_drivers_how_to");
// now check if all device-memory sizes which depend on the kernel_accel_max amplifier are within its boundaries
// if not, decrease amplifier and try again
- int skip = 0;
+ int memory_limit_hit = 0;
+
+ if (size_pws > device_param->device_maxmem_alloc) memory_limit_hit = 1;
+ if (size_tmps > device_param->device_maxmem_alloc) memory_limit_hit = 1;
+ if (size_hooks > device_param->device_maxmem_alloc) memory_limit_hit = 1;
const u64 size_total
= bitmap_size
+ size_tm
+ size_tmps;
- // Don't ask me, ask AMD!
-
- if (size_total > device_param->device_maxmem_alloc) skip = 1;
- if (size_total > device_param->device_global_mem) skip = 1;
+ if (size_total > device_param->device_global_mem) memory_limit_hit = 1;
- if (skip == 1)
+ if (memory_limit_hit == 1)
{
kernel_accel_max--;
break;
}
- /*
- if (kernel_accel_max == 0)
+ if (kernel_accel_max < kernel_accel_min)
{
- log_error ("- Device #%u: Device does not provide enough allocatable device-memory to handle hash-type %u", device_id + 1, data.hash_mode);
+ log_error ("- Device #%u: Device does not provide enough allocatable device-memory to handle this attack", device_id + 1);
return -1;
}
- */
device_param->kernel_accel_min = kernel_accel_min;
device_param->kernel_accel_max = kernel_accel_max;
* default building options
*/
- char build_opts[1024] = { 0 };
-
- // we don't have sm_* on vendors not NV but it doesn't matter
+ char cpath[1024] = { 0 };
#if _WIN
- snprintf (build_opts, sizeof (build_opts) - 1, "-I \"%s\\OpenCL\\\" -I '%s\\OpenCL\\' -I %s\\OpenCL\\ -I\"%s\\OpenCL\\\" -I'%s\\OpenCL\\' -I%s\\OpenCL\\", shared_dir, shared_dir, shared_dir, shared_dir, shared_dir, shared_dir);
+
+ snprintf (cpath, sizeof (cpath) - 1, "%s\\OpenCL\\", shared_dir);
+
+ char cpath_real[MAX_PATH] = { 0 };
+
+ GetFullPathName (cpath, MAX_PATH, cpath_real, NULL);
+
#else
- snprintf (build_opts, sizeof (build_opts) - 1, "-I \"%s/OpenCL/\" -I '%s/OpenCL/' -I %s/OpenCL/ -I\"%s/OpenCL/\" -I'%s/OpenCL/' -I%s/OpenCL/", shared_dir, shared_dir, shared_dir, shared_dir, shared_dir, shared_dir);
- #endif
- char build_opts_new[1024] = { 0 };
+ snprintf (cpath, sizeof (cpath) - 1, "%s/OpenCL/", shared_dir);
- snprintf (build_opts_new, sizeof (build_opts_new) - 1, "%s -DVENDOR_ID=%u -DCUDA_ARCH=%d -DVECT_SIZE=%u -DDEVICE_TYPE=%u -DKERN_TYPE=%u -D_unroll -cl-std=CL1.1", build_opts, device_param->device_vendor_id, (device_param->sm_major * 100) + device_param->sm_minor, device_param->vector_width, (u32) device_param->device_type, kern_type);
+ char *cpath_real = realpath (cpath, NULL);
- strncpy (build_opts, build_opts_new, sizeof (build_opts) - 1);
+ #endif
- /*
- if (device_param->device_vendor_id == VENDOR_ID_INTEL_SDK)
- {
- // we do vectorizing much better than the auto-vectorizer
+ char cpath_escaped[1024] = { 0 };
- snprintf (build_opts_new, sizeof (build_opts_new) - 1, "%s -cl-opt-disable", build_opts);
+ naive_escape (cpath_real, cpath_escaped);
- strncpy (build_opts, build_opts_new, sizeof (build_opts) - 1);
- }
- */
+ // we don't have sm_* on vendors not NV but it doesn't matter
+
+ char build_opts[1024] = { 0 };
+
+ snprintf (build_opts, sizeof (build_opts) - 1, "-I %s -D VENDOR_ID=%u -D CUDA_ARCH=%d -D VECT_SIZE=%u -D DEVICE_TYPE=%u -D KERN_TYPE=%u -D _unroll -cl-std=CL1.1", cpath_escaped, device_param->device_vendor_id, (device_param->sm_major * 100) + device_param->sm_minor, device_param->vector_width, (u32) device_param->device_type, kern_type);
#ifdef DEBUG
log_info ("- Device #%u: build_opts '%s'\n", device_id + 1, build_opts);
{
if (quiet == 0)
{
+ clear_prompt ();
+
log_info ("ATTENTION!");
log_info (" The wordlist or mask you are using is too small.");
log_info (" Therefore, hashcat is unable to utilize the full parallelization power of your device(s).");