1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-12-23 15:18:16 +00:00

Memory: Reduced default maximum bitmap size from 24 to 18 and give a notice to use --bitmap-max to restore

This commit is contained in:
Jens Steube 2018-11-04 10:07:45 +01:00
parent 399bd2562a
commit 344ea5b36d
4 changed files with 26 additions and 2 deletions

View File

@ -20,8 +20,10 @@
## Improvements ## Improvements
## ##
- Memory: Reduced default maximum bitmap size from 24 to 18 and give a notice to use --bitmap-max to restore
- Memory: Limit maximum host memory to allocate depending on bitness - Memory: Limit maximum host memory to allocate depending on bitness
- Tests: Added hash-modes 11700 (Streebog-256) and 11800 (Streebog-512) - Tests: Added hash-mode 11700 (Streebog-256)
- Tests: Added hash-mode 11800 (Streebog-512)
- Tests: Added hash-mode 11850 (HMAC-Streebog-512 (key = $pass), big-endian) - Tests: Added hash-mode 11850 (HMAC-Streebog-512 (key = $pass), big-endian)
## ##

View File

@ -92,6 +92,7 @@ typedef enum event_identifier
EVENT_AUTOTUNE_STARTING = 0x00000001, EVENT_AUTOTUNE_STARTING = 0x00000001,
EVENT_BITMAP_INIT_POST = 0x00000010, EVENT_BITMAP_INIT_POST = 0x00000010,
EVENT_BITMAP_INIT_PRE = 0x00000011, EVENT_BITMAP_INIT_PRE = 0x00000011,
EVENT_BITMAP_FINAL_OVERFLOW = 0x00000012,
EVENT_CALCULATED_WORDS_BASE = 0x00000020, EVENT_CALCULATED_WORDS_BASE = 0x00000020,
EVENT_CRACKER_FINISHED = 0x00000030, EVENT_CRACKER_FINISHED = 0x00000030,
EVENT_CRACKER_HASH_CRACKED = 0x00000031, EVENT_CRACKER_HASH_CRACKED = 0x00000031,
@ -534,7 +535,7 @@ typedef enum user_options_defaults
ATTACK_MODE = ATTACK_MODE_STRAIGHT, ATTACK_MODE = ATTACK_MODE_STRAIGHT,
BENCHMARK_ALL = false, BENCHMARK_ALL = false,
BENCHMARK = false, BENCHMARK = false,
BITMAP_MAX = 24, BITMAP_MAX = 18,
BITMAP_MIN = 16, BITMAP_MIN = 16,
#ifdef WITH_BRAIN #ifdef WITH_BRAIN
BRAIN_CLIENT = false, BRAIN_CLIENT = false,

View File

@ -7,6 +7,7 @@
#include "types.h" #include "types.h"
#include "memory.h" #include "memory.h"
#include "bitmap.h" #include "bitmap.h"
#include "event.h"
static void selftest_to_bitmap (const u32 dgst_shifts, char *digests_buf_ptr, const u32 dgst_pos0, const u32 dgst_pos1, const u32 dgst_pos2, const u32 dgst_pos3, const u32 bitmap_mask, u32 *bitmap_a, u32 *bitmap_b, u32 *bitmap_c, u32 *bitmap_d) static void selftest_to_bitmap (const u32 dgst_shifts, char *digests_buf_ptr, const u32 dgst_pos0, const u32 dgst_pos1, const u32 dgst_pos2, const u32 dgst_pos3, const u32 bitmap_mask, u32 *bitmap_a, u32 *bitmap_b, u32 *bitmap_c, u32 *bitmap_d)
{ {
@ -128,6 +129,11 @@ int bitmap_ctx_init (hashcat_ctx_t *hashcat_ctx)
break; break;
} }
if (bitmap_bits == bitmap_max)
{
EVENT_DATA (EVENT_BITMAP_FINAL_OVERFLOW, NULL, 0);
}
bitmap_nums = 1u << bitmap_bits; bitmap_nums = 1u << bitmap_bits;
bitmap_mask = bitmap_nums - 1; bitmap_mask = bitmap_nums - 1;

View File

@ -580,6 +580,20 @@ static void main_bitmap_init_post (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYB
event_log_info_nn (hashcat_ctx, "Generated bitmap tables..."); event_log_info_nn (hashcat_ctx, "Generated bitmap tables...");
} }
static void main_bitmap_final_overflow (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len)
{
const user_options_t *user_options = hashcat_ctx->user_options;
if (user_options->quiet == true) return;
event_log_advice (hashcat_ctx, "Bitmap table overflowed at %d bits.", user_options->bitmap_max);
event_log_advice (hashcat_ctx, "This typically happens with too many hashes and reduces your performance.");
event_log_advice (hashcat_ctx, "You can increase the bitmap table size with --bitmap-max, but");
event_log_advice (hashcat_ctx, "this creates a trade-off between L2-cache and bitmap efficiency.");
event_log_advice (hashcat_ctx, "It is therefore not guaranteed to restore full performance.");
event_log_advice (hashcat_ctx, NULL);
}
static void main_set_kernel_power_final (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len) static void main_set_kernel_power_final (MAYBE_UNUSED hashcat_ctx_t *hashcat_ctx, MAYBE_UNUSED const void *buf, MAYBE_UNUSED const size_t len)
{ {
const user_options_t *user_options = hashcat_ctx->user_options; const user_options_t *user_options = hashcat_ctx->user_options;
@ -954,6 +968,7 @@ static void event (const u32 id, hashcat_ctx_t *hashcat_ctx, const void *buf, co
{ {
case EVENT_BITMAP_INIT_POST: main_bitmap_init_post (hashcat_ctx, buf, len); break; case EVENT_BITMAP_INIT_POST: main_bitmap_init_post (hashcat_ctx, buf, len); break;
case EVENT_BITMAP_INIT_PRE: main_bitmap_init_pre (hashcat_ctx, buf, len); break; case EVENT_BITMAP_INIT_PRE: main_bitmap_init_pre (hashcat_ctx, buf, len); break;
case EVENT_BITMAP_FINAL_OVERFLOW: main_bitmap_final_overflow (hashcat_ctx, buf, len); break;
case EVENT_CALCULATED_WORDS_BASE: main_calculated_words_base (hashcat_ctx, buf, len); break; case EVENT_CALCULATED_WORDS_BASE: main_calculated_words_base (hashcat_ctx, buf, len); break;
case EVENT_CRACKER_FINISHED: main_cracker_finished (hashcat_ctx, buf, len); break; case EVENT_CRACKER_FINISHED: main_cracker_finished (hashcat_ctx, buf, len); break;
case EVENT_CRACKER_HASH_CRACKED: main_cracker_hash_cracked (hashcat_ctx, buf, len); break; case EVENT_CRACKER_HASH_CRACKED: main_cracker_hash_cracked (hashcat_ctx, buf, len); break;