void hashes_logger (hashcat_ctx_t *hashcat_ctx) { hashes_t *hashes = hashcat_ctx->hashes; logfile_ctx_t *logfile_ctx = hashcat_ctx->logfile_ctx; logfile_top_string (hashes->hashfile); logfile_top_uint (hashes->hashlist_mode); logfile_top_uint (hashes->hashlist_format); logfile_top_uint (hashes->hashes_cnt); logfile_top_uint (hashes->digests_cnt); logfile_top_uint (hashes->digests_done); logfile_top_uint (hashes->salts_cnt); logfile_top_uint (hashes->salts_done); }
int hashcat_session_execute (hashcat_ctx_t *hashcat_ctx) { logfile_ctx_t *logfile_ctx = hashcat_ctx->logfile_ctx; status_ctx_t *status_ctx = hashcat_ctx->status_ctx; user_options_t *user_options = hashcat_ctx->user_options; // start logfile entry const hc_time_t proc_start = hc_time (NULL); logfile_generate_topid (hashcat_ctx); logfile_top_msg ("START"); // add all user options to logfile in case we want to debug some user session user_options_logger (hashcat_ctx); // read dictionary cache dictstat_read (hashcat_ctx); /** * outer loop */ EVENT (EVENT_OUTERLOOP_STARTING); int rc_final = -1; if (user_options->benchmark == true) { user_options->quiet = true; if (user_options->hash_mode_chgd == true) { rc_final = outer_loop (hashcat_ctx); if (rc_final == -1) myabort (hashcat_ctx); } else { for (u32 algorithm_pos = 0; algorithm_pos < DEFAULT_BENCHMARK_ALGORITHMS_CNT; algorithm_pos++) { user_options->hash_mode = DEFAULT_BENCHMARK_ALGORITHMS_BUF[algorithm_pos]; rc_final = outer_loop (hashcat_ctx); if (rc_final == -1) myabort (hashcat_ctx); if (status_ctx->run_main_level1 == false) break; } } user_options->quiet = false; } else { if (user_options->speed_only == true) user_options->quiet = true; rc_final = outer_loop (hashcat_ctx); if (rc_final == -1) myabort (hashcat_ctx); if (user_options->speed_only == true) user_options->quiet = false; } EVENT (EVENT_OUTERLOOP_FINISHED); // if exhausted or cracked, unlink the restore file unlink_restore (hashcat_ctx); // final update dictionary cache dictstat_write (hashcat_ctx); // final logfile entry const hc_time_t proc_stop = hc_time (NULL); logfile_top_uint (proc_start); logfile_top_uint (proc_stop); logfile_top_msg ("STOP"); // free memory if (rc_final == 0) { if (status_ctx->devices_status == STATUS_ABORTED_RUNTIME) rc_final = 4; if (status_ctx->devices_status == STATUS_ABORTED_CHECKPOINT) rc_final = 3; if (status_ctx->devices_status == STATUS_ABORTED) rc_final = 2; if (status_ctx->devices_status == STATUS_QUIT) rc_final = 2; if (status_ctx->devices_status == STATUS_EXHAUSTED) rc_final = 1; if (status_ctx->devices_status == STATUS_CRACKED) rc_final = 0; } // done return rc_final; }