mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-24 00:51:05 +00:00
Move keyspress detecting thread to outer loop
This commit is contained in:
parent
e7df9b112a
commit
a5a38620d4
@ -7332,6 +7332,35 @@ int main (int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* status, monitor and outfile remove threads
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint wordlist_mode = ((optind + 1) < myargc) ? WL_MODE_FILE : WL_MODE_STDIN;
|
||||||
|
|
||||||
|
data.wordlist_mode = wordlist_mode;
|
||||||
|
|
||||||
|
if (wordlist_mode == WL_MODE_STDIN)
|
||||||
|
{
|
||||||
|
status = 1;
|
||||||
|
|
||||||
|
data.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint i_threads_cnt = 0;
|
||||||
|
|
||||||
|
hc_thread_t *i_threads = (hc_thread_t *) mycalloc (10, sizeof (hc_thread_t));
|
||||||
|
|
||||||
|
if (keyspace == 0 && benchmark == 0 && stdout_flag == 0)
|
||||||
|
{
|
||||||
|
if ((data.wordlist_mode == WL_MODE_FILE) || (data.wordlist_mode == WL_MODE_MASK))
|
||||||
|
{
|
||||||
|
hc_thread_create (i_threads[i_threads_cnt], thread_keypress, NULL);
|
||||||
|
|
||||||
|
i_threads_cnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* config
|
* config
|
||||||
*/
|
*/
|
||||||
@ -16395,10 +16424,6 @@ int main (int argc, char **argv)
|
|||||||
wl_data->cnt = 0;
|
wl_data->cnt = 0;
|
||||||
wl_data->pos = 0;
|
wl_data->pos = 0;
|
||||||
|
|
||||||
uint wordlist_mode = ((optind + 1) < myargc) ? WL_MODE_FILE : WL_MODE_STDIN;
|
|
||||||
|
|
||||||
data.wordlist_mode = wordlist_mode;
|
|
||||||
|
|
||||||
cs_t *css_buf = NULL;
|
cs_t *css_buf = NULL;
|
||||||
uint css_cnt = 0;
|
uint css_cnt = 0;
|
||||||
uint dictcnt = 0;
|
uint dictcnt = 0;
|
||||||
@ -17191,29 +17216,17 @@ int main (int argc, char **argv)
|
|||||||
* status and monitor threads
|
* status and monitor threads
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (data.devices_status != STATUS_CRACKED) data.devices_status = STATUS_STARTING;
|
if (data.devices_status == STATUS_CRACKED) break;
|
||||||
|
if (data.devices_status == STATUS_ABORTED) break;
|
||||||
|
if (data.devices_status == STATUS_QUIT) break;
|
||||||
|
|
||||||
uint i_threads_cnt = 0;
|
data.devices_status = STATUS_STARTING;
|
||||||
|
|
||||||
hc_thread_t *i_threads = (hc_thread_t *) mycalloc (10, sizeof (hc_thread_t));
|
|
||||||
|
|
||||||
if ((data.wordlist_mode == WL_MODE_FILE) || (data.wordlist_mode == WL_MODE_MASK))
|
|
||||||
{
|
|
||||||
if (stdout_flag == 0)
|
|
||||||
{
|
|
||||||
hc_thread_create (i_threads[i_threads_cnt], thread_keypress, &benchmark);
|
|
||||||
|
|
||||||
i_threads_cnt++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wordlist_mode == WL_MODE_STDIN) data.status = 1;
|
|
||||||
|
|
||||||
uint ni_threads_cnt = 0;
|
uint ni_threads_cnt = 0;
|
||||||
|
|
||||||
hc_thread_t *ni_threads = (hc_thread_t *) mycalloc (10, sizeof (hc_thread_t));
|
hc_thread_t *ni_threads = (hc_thread_t *) mycalloc (10, sizeof (hc_thread_t));
|
||||||
|
|
||||||
if (stdout_flag == 0)
|
if (keyspace == 0 && benchmark == 0 && stdout_flag == 0)
|
||||||
{
|
{
|
||||||
hc_thread_create (ni_threads[ni_threads_cnt], thread_monitor, NULL);
|
hc_thread_create (ni_threads[ni_threads_cnt], thread_monitor, NULL);
|
||||||
|
|
||||||
@ -17224,7 +17237,7 @@ int main (int argc, char **argv)
|
|||||||
* Outfile remove
|
* Outfile remove
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (keyspace == 0)
|
if (keyspace == 0 && benchmark == 0 && stdout_flag == 0)
|
||||||
{
|
{
|
||||||
if (outfile_check_timer != 0)
|
if (outfile_check_timer != 0)
|
||||||
{
|
{
|
||||||
@ -17284,6 +17297,8 @@ int main (int argc, char **argv)
|
|||||||
for (uint maskpos = rd->maskpos; maskpos < maskcnt; maskpos++)
|
for (uint maskpos = rd->maskpos; maskpos < maskcnt; maskpos++)
|
||||||
{
|
{
|
||||||
if (data.devices_status == STATUS_CRACKED) break;
|
if (data.devices_status == STATUS_CRACKED) break;
|
||||||
|
if (data.devices_status == STATUS_ABORTED) break;
|
||||||
|
if (data.devices_status == STATUS_QUIT) break;
|
||||||
|
|
||||||
data.devices_status = STATUS_INIT;
|
data.devices_status = STATUS_INIT;
|
||||||
|
|
||||||
@ -17532,6 +17547,10 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
logfile_sub_msg ("START");
|
logfile_sub_msg ("START");
|
||||||
|
|
||||||
|
if (data.devices_status == STATUS_CRACKED) break;
|
||||||
|
if (data.devices_status == STATUS_ABORTED) break;
|
||||||
|
if (data.devices_status == STATUS_QUIT) break;
|
||||||
|
|
||||||
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_done, 0, data.salts_cnt * sizeof (u64));
|
||||||
@ -18073,6 +18092,10 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
hc_thread_t *c_threads = (hc_thread_t *) mycalloc (data.devices_cnt, sizeof (hc_thread_t));
|
hc_thread_t *c_threads = (hc_thread_t *) mycalloc (data.devices_cnt, sizeof (hc_thread_t));
|
||||||
|
|
||||||
|
if (data.devices_status == STATUS_CRACKED) break;
|
||||||
|
if (data.devices_status == STATUS_ABORTED) break;
|
||||||
|
if (data.devices_status == STATUS_QUIT) break;
|
||||||
|
|
||||||
data.devices_status = STATUS_AUTOTUNE;
|
data.devices_status = STATUS_AUTOTUNE;
|
||||||
|
|
||||||
for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
|
for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
|
||||||
@ -18129,6 +18152,7 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint ();
|
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_ABORTED) break;
|
||||||
if (data.devices_status == STATUS_QUIT) break;
|
if (data.devices_status == STATUS_QUIT) break;
|
||||||
|
|
||||||
@ -18344,15 +18368,6 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
local_free (ni_threads);
|
local_free (ni_threads);
|
||||||
|
|
||||||
// wait for interactive threads
|
|
||||||
|
|
||||||
for (uint thread_idx = 0; thread_idx < i_threads_cnt; thread_idx++)
|
|
||||||
{
|
|
||||||
hc_thread_wait (1, &i_threads[thread_idx]);
|
|
||||||
}
|
|
||||||
|
|
||||||
local_free (i_threads);
|
|
||||||
|
|
||||||
// we dont need restore file anymore
|
// we dont need restore file anymore
|
||||||
if (data.restore_disable == 0)
|
if (data.restore_disable == 0)
|
||||||
{
|
{
|
||||||
@ -18393,7 +18408,7 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
if (quiet == 0) log_info ("");
|
if (quiet == 0) log_info ("");
|
||||||
|
|
||||||
if (status == 1)
|
if (status == 1 && stdout_flag == 0)
|
||||||
{
|
{
|
||||||
status_display ();
|
status_display ();
|
||||||
}
|
}
|
||||||
@ -18705,6 +18720,15 @@ int main (int argc, char **argv)
|
|||||||
if (data.devices_status == STATUS_QUIT) break;
|
if (data.devices_status == STATUS_QUIT) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wait for interactive threads
|
||||||
|
|
||||||
|
for (uint thread_idx = 0; thread_idx < i_threads_cnt; thread_idx++)
|
||||||
|
{
|
||||||
|
hc_thread_wait (1, &i_threads[thread_idx]);
|
||||||
|
}
|
||||||
|
|
||||||
|
local_free (i_threads);
|
||||||
|
|
||||||
// destroy others mutex
|
// destroy others mutex
|
||||||
|
|
||||||
hc_thread_mutex_delete (mux_dispatcher);
|
hc_thread_mutex_delete (mux_dispatcher);
|
||||||
|
13
src/shared.c
13
src/shared.c
@ -20769,8 +20769,6 @@ void status_display ();
|
|||||||
|
|
||||||
void *thread_keypress (void *p)
|
void *thread_keypress (void *p)
|
||||||
{
|
{
|
||||||
int benchmark = *((int *) p);
|
|
||||||
|
|
||||||
uint quiet = data.quiet;
|
uint quiet = data.quiet;
|
||||||
|
|
||||||
tty_break();
|
tty_break();
|
||||||
@ -20852,8 +20850,6 @@ void *thread_keypress (void *p)
|
|||||||
|
|
||||||
log_info ("");
|
log_info ("");
|
||||||
|
|
||||||
if (benchmark == 1) break;
|
|
||||||
|
|
||||||
stop_at_checkpoint ();
|
stop_at_checkpoint ();
|
||||||
|
|
||||||
log_info ("");
|
log_info ("");
|
||||||
@ -20867,14 +20863,7 @@ void *thread_keypress (void *p)
|
|||||||
|
|
||||||
log_info ("");
|
log_info ("");
|
||||||
|
|
||||||
if (benchmark == 1)
|
myabort ();
|
||||||
{
|
|
||||||
myquit ();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
myabort ();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user