{
if (data.devices_status == STATUS_INIT) return;
if (data.devices_status == STATUS_STARTING) return;
- if (data.devices_status == STATUS_BYPASS) return;
if (data.machine_readable == 1)
{
{
if (data.devices_status == STATUS_INIT) return;
if (data.devices_status == STATUS_STARTING) return;
- if (data.devices_status == STATUS_BYPASS) return;
if (data.machine_readable == 1)
{
for (uint maskpos = rd->maskpos; maskpos < maskcnt; maskpos++)
{
+ if (data.devices_status == STATUS_CRACKED) continue;
+ if (data.devices_status == STATUS_ABORTED) continue;
+ if (data.devices_status == STATUS_QUIT) continue;
+
if (maskpos > rd->maskpos)
{
rd->dictpos = 0;
}
}
- for (uint dictpos = rd->dictpos; dictpos < dictcnt; )
+ for (uint dictpos = rd->dictpos; dictpos < dictcnt; dictpos++)
{
+ if (data.devices_status == STATUS_CRACKED) continue;
+ if (data.devices_status == STATUS_ABORTED) continue;
+ if (data.devices_status == STATUS_QUIT) continue;
+
+ rd->dictpos = dictpos;
+
char *subid = logfile_generate_subid ();
data.subid = subid;
logfile_sub_msg ("START");
- if (data.devices_status == STATUS_STARTING)
- {
- data.devices_status = STATUS_INIT;
- }
+ data.devices_status = STATUS_INIT;
memset (data.words_progress_done, 0, data.salts_cnt * sizeof (u64));
memset (data.words_progress_rejected, 0, data.salts_cnt * sizeof (u64));
if (data.words_cnt == 0)
{
- dictpos++;
+ logfile_sub_msg ("STOP");
continue;
}
if (data.words_cnt == 0)
{
- dictpos++;
+ logfile_sub_msg ("STOP");
continue;
}
if (data.words_cnt == 0)
{
- dictpos++;
+ logfile_sub_msg ("STOP");
continue;
}
// skip to next mask
- dictpos++;
-
- rd->dictpos = dictpos;
-
logfile_sub_msg ("STOP");
continue;
hc_thread_t *c_threads = (hc_thread_t *) mycalloc (data.devices_cnt, sizeof (hc_thread_t));
- if (data.devices_status == STATUS_INIT)
- {
- data.devices_status = STATUS_AUTOTUNE;
+ data.devices_status = STATUS_AUTOTUNE;
- for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
- {
- hc_device_param_t *device_param = &devices_param[device_id];
+ for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
+ {
+ hc_device_param_t *device_param = &devices_param[device_id];
- hc_thread_create (c_threads[device_id], thread_autotune, device_param);
- }
+ hc_thread_create (c_threads[device_id], thread_autotune, device_param);
}
hc_thread_wait (data.devices_cnt, c_threads);
* create cracker threads
*/
- if (data.devices_status == STATUS_AUTOTUNE)
- {
- data.devices_status = STATUS_RUNNING;
- }
+ data.devices_status = STATUS_RUNNING;
if (initial_restore_done == 0)
{
data.runtime_start = runtime_start;
- if (data.devices_status == STATUS_RUNNING)
+ for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
{
- for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
- {
- hc_device_param_t *device_param = &devices_param[device_id];
+ hc_device_param_t *device_param = &devices_param[device_id];
- if (wordlist_mode == WL_MODE_STDIN)
- {
- hc_thread_create (c_threads[device_id], thread_calc_stdin, device_param);
- }
- else
- {
- hc_thread_create (c_threads[device_id], thread_calc, device_param);
- }
+ if (wordlist_mode == WL_MODE_STDIN)
+ {
+ hc_thread_create (c_threads[device_id], thread_calc_stdin, device_param);
+ }
+ else
+ {
+ hc_thread_create (c_threads[device_id], thread_calc, device_param);
}
}
local_free (c_threads);
+ if ((data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT) && (data.devices_status != STATUS_BYPASS))
+ {
+ data.devices_status = STATUS_EXHAUSTED;
+ }
+
logfile_sub_var_uint ("status-after-work", data.devices_status);
data.restore = 0;
induction_dictionaries_cnt = count_dictionaries (induction_dictionaries);
}
- if (benchmark == 0)
+ if (benchmark == 1)
{
- if (((dictpos + 1) < dictcnt) || ((maskpos + 1) < maskcnt) || induction_dictionaries_cnt)
- {
- if (quiet == 0) clear_prompt ();
+ status_benchmark ();
- if (quiet == 0) log_info ("");
-
- if (status == 1)
- {
- status_display ();
- }
- else
- {
- if (quiet == 0) status_display ();
- }
-
- if (quiet == 0) log_info ("");
+ if (machine_readable == 0)
+ {
+ log_info ("");
}
}
-
- if (attack_mode == ATTACK_MODE_BF)
- {
- dictpos++;
-
- rd->dictpos = dictpos;
- }
else
{
- if (induction_dictionaries_cnt)
- {
- qsort (induction_dictionaries, induction_dictionaries_cnt, sizeof (char *), sort_by_mtime);
- }
- else
+ if (quiet == 0)
{
- dictpos++;
+ clear_prompt ();
- rd->dictpos = dictpos;
+ log_info ("");
+
+ if (stdout_flag == 0) status_display ();
+
+ log_info ("");
}
}
+ if (induction_dictionaries_cnt)
+ {
+ qsort (induction_dictionaries, induction_dictionaries_cnt, sizeof (char *), sort_by_mtime);
+ }
+
time_t runtime_stop;
time (&runtime_stop);
global_free (subid);
- // finalize task
+ // from this point we handle bypass as exhausted
- if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint ();
+ if (data.devices_status == STATUS_BYPASS)
+ {
+ data.devices_status = STATUS_EXHAUSTED;
+ }
+
+ // finalize task
if (data.devices_status == STATUS_CRACKED) break;
if (data.devices_status == STATUS_ABORTED) break;
if (data.devices_status == STATUS_QUIT) break;
-
- if (data.devices_status == STATUS_BYPASS)
- {
- data.devices_status = STATUS_RUNNING;
- }
}
- if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint ();
-
if (data.devices_status == STATUS_CRACKED) break;
if (data.devices_status == STATUS_ABORTED) break;
if (data.devices_status == STATUS_QUIT) break;
-
- if (data.devices_status == STATUS_BYPASS)
- {
- data.devices_status = STATUS_RUNNING;
- }
}
// problems could occur if already at startup everything was cracked (because of .pot file reading etc), we must set some variables here to avoid NULL pointers
-
if (attack_mode == ATTACK_MODE_STRAIGHT)
{
if (data.wordlist_mode == WL_MODE_FILE)
}
}
- if ((data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT))
- {
- data.devices_status = STATUS_EXHAUSTED;
- }
-
// if cracked / aborted remove last induction dictionary
for (int file_pos = 0; file_pos < induction_dictionaries_cnt; file_pos++)
* Clean up
*/
- if (benchmark == 1)
- {
- status_benchmark ();
-
- if (machine_readable == 0)
- {
- log_info ("");
- }
- }
- else
- {
- if (quiet == 0)
- {
- clear_prompt ();
-
- log_info ("");
-
- if (stdout_flag == 0) status_display ();
-
- log_info ("");
- }
- }
-
for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
{
hc_device_param_t *device_param = &data.devices_param[device_id];
if (device_param->skipped) continue;
local_free (device_param->combs_buf);
-
local_free (device_param->hooks_buf);
-
local_free (device_param->device_name);
-
local_free (device_param->device_name_chksum);
-
local_free (device_param->device_version);
-
local_free (device_param->driver_version);
if (device_param->pws_buf) myfree (device_param->pws_buf);