void status_progress_machine_readable (hashcat_ctx_t *hashcat_ctx) { hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "%d:%" PRIu64 ":%0.2f", device_id + 1, device_info->progress_dev, device_info->runtime_msec_dev); } status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }
void status_speed_machine_readable (hashcat_ctx_t *hashcat_ctx) { hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "%d:%" PRIu64, device_id + 1, (u64) (device_info->hashes_msec_dev_benchmark * 1000)); } status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }
void status_benchmark (hashcat_ctx_t *hashcat_ctx) { const user_options_t *user_options = hashcat_ctx->user_options; if (user_options->machine_readable == true) { status_benchmark_machine_readable (hashcat_ctx); return; } hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "Speed.#%d.........: %9sH/s (%0.2fms) @ Accel:%d Loops:%d Thr:%d Vec:%d", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev, device_info->kernel_accel_dev, device_info->kernel_loops_dev, device_info->kernel_threads_dev, device_info->vector_width_dev); } if (hashcat_status->device_info_active > 1) { event_log_info (hashcat_ctx, "Speed.#*.........: %9sH/s", hashcat_status->speed_sec_all); } status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }
void status_progress (hashcat_ctx_t *hashcat_ctx) { const user_options_t *user_options = hashcat_ctx->user_options; if (user_options->machine_readable == true) { status_progress_machine_readable (hashcat_ctx); return; } hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "Progress.#%d......: %" PRIu64, device_id + 1, device_info->progress_dev); } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "Runtime.#%d.......: %0.2fms", device_id + 1, device_info->runtime_msec_dev); } status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }
void status_speed (hashcat_ctx_t *hashcat_ctx) { const user_options_t *user_options = hashcat_ctx->user_options; if (user_options->machine_readable == true) { status_speed_machine_readable (hashcat_ctx); return; } hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "Speed.Dev.#%d.....: %9sH/s (%0.2fms)", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev); } if (hashcat_status->device_info_active > 1) { event_log_info (hashcat_ctx, "Speed.Dev.#*.....: %9sH/s", hashcat_status->speed_sec_all); } status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }
void status_display (hashcat_ctx_t *hashcat_ctx) { const hashconfig_t *hashconfig = hashcat_ctx->hashconfig; const hwmon_ctx_t *hwmon_ctx = hashcat_ctx->hwmon_ctx; const user_options_t *user_options = hashcat_ctx->user_options; if (user_options->machine_readable == true) { status_display_machine_readable (hashcat_ctx); return; } hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } /** * show something */ event_log_info (hashcat_ctx, "Session..........: %s", hashcat_status->session); event_log_info (hashcat_ctx, "Status...........: %s", hashcat_status->status_string); event_log_info (hashcat_ctx, "Hash.Type........: %s", hashcat_status->hash_type); event_log_info (hashcat_ctx, "Hash.Target......: %s", hashcat_status->hash_target); event_log_info (hashcat_ctx, "Time.Started.....: %s (%s)", hashcat_status->time_started_absolute, hashcat_status->time_started_relative); event_log_info (hashcat_ctx, "Time.Estimated...: %s (%s)", hashcat_status->time_estimated_absolute, hashcat_status->time_estimated_relative); switch (hashcat_status->guess_mode) { case GUESS_MODE_STRAIGHT_FILE: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s)", hashcat_status->guess_base); break; case GUESS_MODE_STRAIGHT_FILE_RULES_FILE: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s)", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: Rules (%s)", hashcat_status->guess_mod); break; case GUESS_MODE_STRAIGHT_FILE_RULES_GEN: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s)", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: Rules (Generated)"); break; case GUESS_MODE_STRAIGHT_STDIN: event_log_info (hashcat_ctx, "Guess.Base.......: Pipe"); break; case GUESS_MODE_STRAIGHT_STDIN_RULES_FILE: event_log_info (hashcat_ctx, "Guess.Base.......: Pipe"); event_log_info (hashcat_ctx, "Guess.Mod........: Rules (%s)", hashcat_status->guess_mod); break; case GUESS_MODE_STRAIGHT_STDIN_RULES_GEN: event_log_info (hashcat_ctx, "Guess.Base.......: Pipe"); event_log_info (hashcat_ctx, "Guess.Mod........: Rules (Generated)"); break; case GUESS_MODE_COMBINATOR_BASE_LEFT: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s), Left Side", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: File (%s), Right Side", hashcat_status->guess_mod); break; case GUESS_MODE_COMBINATOR_BASE_RIGHT: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s), Right Side", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: File (%s), Left Side", hashcat_status->guess_mod); break; case GUESS_MODE_MASK: event_log_info (hashcat_ctx, "Guess.Mask.......: %s [%d]", hashcat_status->guess_base, hashcat_status->guess_mask_length); break; case GUESS_MODE_MASK_CS: event_log_info (hashcat_ctx, "Guess.Mask.......: %s [%d]", hashcat_status->guess_base, hashcat_status->guess_mask_length); event_log_info (hashcat_ctx, "Guess.Charset....: %s ", hashcat_status->guess_charset); break; case GUESS_MODE_HYBRID1: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s), Left Side", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: Mask (%s) [%d], Right Side", hashcat_status->guess_mod, hashcat_status->guess_mask_length); break; case GUESS_MODE_HYBRID1_CS: event_log_info (hashcat_ctx, "Guess.Base.......: File (%s), Left Side", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: Mask (%s) [%d], Right Side", hashcat_status->guess_mod, hashcat_status->guess_mask_length); event_log_info (hashcat_ctx, "Guess.Charset....: %s", hashcat_status->guess_charset); break; case GUESS_MODE_HYBRID2: if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) { event_log_info (hashcat_ctx, "Guess.Base.......: Mask (%s) [%d], Left Side", hashcat_status->guess_base, hashcat_status->guess_mask_length); event_log_info (hashcat_ctx, "Guess.Mod........: File (%s), Right Side", hashcat_status->guess_mod); } else { event_log_info (hashcat_ctx, "Guess.Base.......: File (%s), Right Side", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: Mask (%s) [%d], Left Side", hashcat_status->guess_mod, hashcat_status->guess_mask_length); } break; case GUESS_MODE_HYBRID2_CS: if (hashconfig->opti_type & OPTI_TYPE_OPTIMIZED_KERNEL) { event_log_info (hashcat_ctx, "Guess.Base.......: Mask (%s) [%d], Left Side", hashcat_status->guess_base, hashcat_status->guess_mask_length); event_log_info (hashcat_ctx, "Guess.Mod........: File (%s), Right Side", hashcat_status->guess_mod); event_log_info (hashcat_ctx, "Guess.Charset....: %s", hashcat_status->guess_charset); } else { event_log_info (hashcat_ctx, "Guess.Base.......: File (%s), Right Side", hashcat_status->guess_base); event_log_info (hashcat_ctx, "Guess.Mod........: Mask (%s) [%d], Left Side", hashcat_status->guess_mod, hashcat_status->guess_mask_length); event_log_info (hashcat_ctx, "Guess.Charset....: %s", hashcat_status->guess_charset); } break; } switch (hashcat_status->guess_mode) { case GUESS_MODE_STRAIGHT_FILE: event_log_info (hashcat_ctx, "Guess.Queue......: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); break; case GUESS_MODE_STRAIGHT_FILE_RULES_FILE: event_log_info (hashcat_ctx, "Guess.Queue......: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); break; case GUESS_MODE_STRAIGHT_FILE_RULES_GEN: event_log_info (hashcat_ctx, "Guess.Queue......: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); break; case GUESS_MODE_MASK: event_log_info (hashcat_ctx, "Guess.Queue......: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); break; case GUESS_MODE_MASK_CS: event_log_info (hashcat_ctx, "Guess.Queue......: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); break; case GUESS_MODE_HYBRID1: event_log_info (hashcat_ctx, "Guess.Queue.Base.: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); event_log_info (hashcat_ctx, "Guess.Queue.Mod..: %d/%d (%.02f%%)", hashcat_status->guess_mod_offset, hashcat_status->guess_mod_count, hashcat_status->guess_mod_percent); break; case GUESS_MODE_HYBRID2: event_log_info (hashcat_ctx, "Guess.Queue.Base.: %d/%d (%.02f%%)", hashcat_status->guess_base_offset, hashcat_status->guess_base_count, hashcat_status->guess_base_percent); event_log_info (hashcat_ctx, "Guess.Queue.Mod..: %d/%d (%.02f%%)", hashcat_status->guess_mod_offset, hashcat_status->guess_mod_count, hashcat_status->guess_mod_percent); break; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "Speed.#%d.........: %9sH/s (%0.2fms) @ Accel:%d Loops:%d Thr:%d Vec:%d", device_id + 1, device_info->speed_sec_dev, device_info->exec_msec_dev, device_info->kernel_accel_dev, device_info->kernel_loops_dev, device_info->kernel_threads_dev, device_info->vector_width_dev); } if (hashcat_status->device_info_active > 1) { event_log_info (hashcat_ctx, "Speed.#*.........: %9sH/s", hashcat_status->speed_sec_all); } event_log_info (hashcat_ctx, "Recovered........: %d/%d (%.2f%%) Digests, %d/%d (%.2f%%) Salts", hashcat_status->digests_done, hashcat_status->digests_cnt, hashcat_status->digests_percent, hashcat_status->salts_done, hashcat_status->salts_cnt, hashcat_status->salts_percent); if (hashcat_status->digests_cnt > 1000) { event_log_info (hashcat_ctx, "Recovered/Time...: %s", hashcat_status->cpt); } switch (hashcat_status->progress_mode) { case PROGRESS_MODE_KEYSPACE_KNOWN: event_log_info (hashcat_ctx, "Progress.........: %" PRIu64 "/%" PRIu64 " (%.02f%%)", hashcat_status->progress_cur_relative_skip, hashcat_status->progress_end_relative_skip, hashcat_status->progress_finished_percent); event_log_info (hashcat_ctx, "Rejected.........: %" PRIu64 "/%" PRIu64 " (%.02f%%)", hashcat_status->progress_rejected, hashcat_status->progress_cur_relative_skip, hashcat_status->progress_rejected_percent); break; case PROGRESS_MODE_KEYSPACE_UNKNOWN: event_log_info (hashcat_ctx, "Progress.........: %" PRIu64, hashcat_status->progress_cur_relative_skip); event_log_info (hashcat_ctx, "Rejected.........: %" PRIu64, hashcat_status->progress_rejected); break; } switch (hashcat_status->progress_mode) { case PROGRESS_MODE_KEYSPACE_KNOWN: event_log_info (hashcat_ctx, "Restore.Point....: %" PRIu64 "/%" PRIu64 " (%.02f%%)", hashcat_status->restore_point, hashcat_status->restore_total, hashcat_status->restore_percent); break; case PROGRESS_MODE_KEYSPACE_UNKNOWN: event_log_info (hashcat_ctx, "Restore.Point....: %" PRIu64, hashcat_status->restore_point); break; } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; event_log_info (hashcat_ctx, "Restore.Sub.#%d...: Salt:%d Amplifier:%d-%d Iteration:%d-%d", device_id + 1, device_info->salt_pos_dev, device_info->innerloop_pos_dev, device_info->innerloop_pos_dev + device_info->innerloop_left_dev, device_info->iteration_pos_dev, device_info->iteration_pos_dev + device_info->iteration_left_dev); } for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; if (device_info->guess_candidates_dev == NULL) continue; event_log_info (hashcat_ctx, "Candidates.#%d....: %s", device_id + 1, device_info->guess_candidates_dev); } if (hwmon_ctx->enabled == true) { for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; if (device_info->hwmon_dev == NULL) continue; event_log_info (hashcat_ctx, "Hardware.Mon.#%d..: %s", device_id + 1, device_info->hwmon_dev); } } status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }
void status_display_machine_readable (hashcat_ctx_t *hashcat_ctx) { const hwmon_ctx_t *hwmon_ctx = hashcat_ctx->hwmon_ctx; hashcat_status_t *hashcat_status = (hashcat_status_t *) hcmalloc (sizeof (hashcat_status_t)); const int rc_status = hashcat_get_status (hashcat_ctx, hashcat_status); if (rc_status == -1) { hcfree (hashcat_status); return; } printf ("STATUS\t%d\t", hashcat_status->status_number); printf ("SPEED\t"); for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; printf ("%" PRIu64 "\t", (u64) (device_info->hashes_msec_dev * 1000)); // that 1\t is for backward compatibility printf ("1000\t"); } printf ("EXEC_RUNTIME\t"); for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; printf ("%f\t", device_info->exec_msec_dev); } printf ("CURKU\t%" PRIu64 "\t", hashcat_status->restore_point); printf ("PROGRESS\t%" PRIu64 "\t%" PRIu64 "\t", hashcat_status->progress_cur_relative_skip, hashcat_status->progress_end_relative_skip); printf ("RECHASH\t%d\t%d\t", hashcat_status->digests_done, hashcat_status->digests_cnt); printf ("RECSALT\t%d\t%d\t", hashcat_status->salts_done, hashcat_status->salts_cnt); if (hwmon_ctx->enabled == true) { printf ("TEMP\t"); for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; const int temp = hm_get_temperature_with_device_id (hashcat_ctx, device_id); printf ("%d\t", temp); } } printf ("REJECTED\t%" PRIu64 "\t", hashcat_status->progress_rejected); printf ("UTIL\t"); for (int device_id = 0; device_id < hashcat_status->device_info_cnt; device_id++) { const device_info_t *device_info = hashcat_status->device_info_buf + device_id; if (device_info->skipped_dev == true) continue; // ok, little cheat here again... const int util = hm_get_utilization_with_device_id (hashcat_ctx, device_id); printf ("%d\t", util); } hc_fwrite (EOL, strlen (EOL), 1, stdout); fflush (stdout); status_status_destroy (hashcat_ctx, hashcat_status); hcfree (hashcat_status); }