mirror of
https://github.com/hashcat/hashcat.git
synced 2025-06-05 15:48:48 +00:00
Merge remote-tracking branch 'origin/master' into blake
This commit is contained in:
commit
c80ac0b73f
@ -52,6 +52,18 @@ KERNEL_FQ void m01000_mxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
w[0] = w0;
|
w[0] = w0;
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
|
||||||
|
md4_ctx_t ctx;
|
||||||
|
|
||||||
|
md4_init (&ctx);
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx, w, pw_len);
|
||||||
|
|
||||||
|
md4_final (&ctx);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
md4_ctx_vector_t ctx;
|
md4_ctx_vector_t ctx;
|
||||||
|
|
||||||
md4_init_vector (&ctx);
|
md4_init_vector (&ctx);
|
||||||
@ -60,6 +72,8 @@ KERNEL_FQ void m01000_mxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
md4_final_vector (&ctx);
|
md4_final_vector (&ctx);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
const u32x r0 = ctx.h[DGST_R0];
|
const u32x r0 = ctx.h[DGST_R0];
|
||||||
const u32x r1 = ctx.h[DGST_R1];
|
const u32x r1 = ctx.h[DGST_R1];
|
||||||
const u32x r2 = ctx.h[DGST_R2];
|
const u32x r2 = ctx.h[DGST_R2];
|
||||||
@ -119,6 +133,18 @@ KERNEL_FQ void m01000_sxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
w[0] = w0;
|
w[0] = w0;
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
|
||||||
|
md4_ctx_t ctx;
|
||||||
|
|
||||||
|
md4_init (&ctx);
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx, w, pw_len);
|
||||||
|
|
||||||
|
md4_final (&ctx);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
md4_ctx_vector_t ctx;
|
md4_ctx_vector_t ctx;
|
||||||
|
|
||||||
md4_init_vector (&ctx);
|
md4_init_vector (&ctx);
|
||||||
@ -127,6 +153,8 @@ KERNEL_FQ void m01000_sxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
md4_final_vector (&ctx);
|
md4_final_vector (&ctx);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
const u32x r0 = ctx.h[DGST_R0];
|
const u32x r0 = ctx.h[DGST_R0];
|
||||||
const u32x r1 = ctx.h[DGST_R1];
|
const u32x r1 = ctx.h[DGST_R1];
|
||||||
const u32x r2 = ctx.h[DGST_R2];
|
const u32x r2 = ctx.h[DGST_R2];
|
||||||
|
@ -61,6 +61,33 @@ KERNEL_FQ void m01100_mxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
w[0] = w0;
|
w[0] = w0;
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
|
||||||
|
md4_ctx_t ctx0;
|
||||||
|
|
||||||
|
md4_init (&ctx0);
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx0, w, pw_len);
|
||||||
|
|
||||||
|
md4_final (&ctx0);
|
||||||
|
|
||||||
|
md4_ctx_t ctx;
|
||||||
|
|
||||||
|
md4_init (&ctx);
|
||||||
|
|
||||||
|
ctx.w0[0] = ctx0.h[0];
|
||||||
|
ctx.w0[1] = ctx0.h[1];
|
||||||
|
ctx.w0[2] = ctx0.h[2];
|
||||||
|
ctx.w0[3] = ctx0.h[3];
|
||||||
|
|
||||||
|
ctx.len = 16;
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx, s, salt_len);
|
||||||
|
|
||||||
|
md4_final (&ctx);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
md4_ctx_vector_t ctx0;
|
md4_ctx_vector_t ctx0;
|
||||||
|
|
||||||
md4_init_vector (&ctx0);
|
md4_init_vector (&ctx0);
|
||||||
@ -84,6 +111,8 @@ KERNEL_FQ void m01100_mxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
md4_final_vector (&ctx);
|
md4_final_vector (&ctx);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
const u32x r0 = ctx.h[DGST_R0];
|
const u32x r0 = ctx.h[DGST_R0];
|
||||||
const u32x r1 = ctx.h[DGST_R1];
|
const u32x r1 = ctx.h[DGST_R1];
|
||||||
const u32x r2 = ctx.h[DGST_R2];
|
const u32x r2 = ctx.h[DGST_R2];
|
||||||
@ -152,6 +181,33 @@ KERNEL_FQ void m01100_sxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
w[0] = w0;
|
w[0] = w0;
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
|
||||||
|
md4_ctx_t ctx0;
|
||||||
|
|
||||||
|
md4_init (&ctx0);
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx0, w, pw_len);
|
||||||
|
|
||||||
|
md4_final (&ctx0);
|
||||||
|
|
||||||
|
md4_ctx_t ctx;
|
||||||
|
|
||||||
|
md4_init (&ctx);
|
||||||
|
|
||||||
|
ctx.w0[0] = ctx0.h[0];
|
||||||
|
ctx.w0[1] = ctx0.h[1];
|
||||||
|
ctx.w0[2] = ctx0.h[2];
|
||||||
|
ctx.w0[3] = ctx0.h[3];
|
||||||
|
|
||||||
|
ctx.len = 16;
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx, s, salt_len);
|
||||||
|
|
||||||
|
md4_final (&ctx);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
md4_ctx_vector_t ctx0;
|
md4_ctx_vector_t ctx0;
|
||||||
|
|
||||||
md4_init_vector (&ctx0);
|
md4_init_vector (&ctx0);
|
||||||
@ -175,6 +231,8 @@ KERNEL_FQ void m01100_sxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
md4_final_vector (&ctx);
|
md4_final_vector (&ctx);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
const u32x r0 = ctx.h[DGST_R0];
|
const u32x r0 = ctx.h[DGST_R0];
|
||||||
const u32x r1 = ctx.h[DGST_R1];
|
const u32x r1 = ctx.h[DGST_R1];
|
||||||
const u32x r2 = ctx.h[DGST_R2];
|
const u32x r2 = ctx.h[DGST_R2];
|
||||||
|
@ -586,6 +586,18 @@ KERNEL_FQ void m05500_mxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
w[0] = w0;
|
w[0] = w0;
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
|
||||||
|
md4_ctx_t ctx;
|
||||||
|
|
||||||
|
md4_init (&ctx);
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx, w, pw_len);
|
||||||
|
|
||||||
|
md4_final (&ctx);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
md4_ctx_vector_t ctx;
|
md4_ctx_vector_t ctx;
|
||||||
|
|
||||||
md4_init_vector (&ctx);
|
md4_init_vector (&ctx);
|
||||||
@ -594,6 +606,8 @@ KERNEL_FQ void m05500_mxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
md4_final_vector (&ctx);
|
md4_final_vector (&ctx);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
const u32x a = ctx.h[0];
|
const u32x a = ctx.h[0];
|
||||||
const u32x b = ctx.h[1];
|
const u32x b = ctx.h[1];
|
||||||
const u32x c = ctx.h[2];
|
const u32x c = ctx.h[2];
|
||||||
@ -742,6 +756,18 @@ KERNEL_FQ void m05500_sxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
w[0] = w0;
|
w[0] = w0;
|
||||||
|
|
||||||
|
#if VECT_SIZE == 1
|
||||||
|
|
||||||
|
md4_ctx_t ctx;
|
||||||
|
|
||||||
|
md4_init (&ctx);
|
||||||
|
|
||||||
|
md4_update_utf16le (&ctx, w, pw_len);
|
||||||
|
|
||||||
|
md4_final (&ctx);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
md4_ctx_vector_t ctx;
|
md4_ctx_vector_t ctx;
|
||||||
|
|
||||||
md4_init_vector (&ctx);
|
md4_init_vector (&ctx);
|
||||||
@ -750,6 +776,8 @@ KERNEL_FQ void m05500_sxx (KERN_ATTR_VECTOR ())
|
|||||||
|
|
||||||
md4_final_vector (&ctx);
|
md4_final_vector (&ctx);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
const u32x a = ctx.h[0];
|
const u32x a = ctx.h[0];
|
||||||
const u32x b = ctx.h[1];
|
const u32x b = ctx.h[1];
|
||||||
const u32x c = ctx.h[2];
|
const u32x c = ctx.h[2];
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
- Fixed keys extraction in luks2hashcat - now extracts all active keys
|
- Fixed keys extraction in luks2hashcat - now extracts all active keys
|
||||||
- Prevent Hashcat from hanging by checking during startup that the output file is a named pipe
|
- Prevent Hashcat from hanging by checking during startup that the output file is a named pipe
|
||||||
- Fixed debug mode 5 by adding the missing colon between original-word and finding-rule
|
- Fixed debug mode 5 by adding the missing colon between original-word and finding-rule
|
||||||
|
- Skip generated rule that was the result of chaining rule operation and caused this generated rule to exceed the maximum number of function calls
|
||||||
|
|
||||||
##
|
##
|
||||||
## Technical
|
## Technical
|
||||||
|
@ -35,6 +35,10 @@ because we basically add a zero byte every second byte within the kernel convers
|
|||||||
|
|
||||||
Since hashcat v6.2.1 there is true UTF-16 support for pure kernels. UTF-16 is fully supported.
|
Since hashcat v6.2.1 there is true UTF-16 support for pure kernels. UTF-16 is fully supported.
|
||||||
|
|
||||||
|
There is an exception for mask attacks combined with compute devices that require vector data-types
|
||||||
|
to achieve full performance. For example a modern CPU. For these devices, the recommendation is to use a
|
||||||
|
combination of mask processor piped to hashcat. For modern GPUs it works as expected.
|
||||||
|
|
||||||
##
|
##
|
||||||
## The use of --keep-guessing eventually skips reporting duplicate passwords
|
## The use of --keep-guessing eventually skips reporting duplicate passwords
|
||||||
##
|
##
|
||||||
|
@ -6233,7 +6233,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
if (user_options->backend_info == 0)
|
if (user_options->backend_info == 0)
|
||||||
{
|
{
|
||||||
event_log_warning (hashcat_ctx, "The device #%d has been disabled as it most likely also exists as an OpenCL device, but it is not possible to automatically map it.", device_id + 1);
|
event_log_warning (hashcat_ctx, "The device #%d has been disabled as it most likely also exists as an OpenCL device, but it is not possible to automatically map it.", device_id + 1);
|
||||||
event_log_warning (hashcat_ctx, "You can use -d #%d to use Metal API instead of OpenCL API. In some rare cases this is more stable.", device_id + 1);
|
event_log_warning (hashcat_ctx, "You can use -d %d to use Metal API instead of OpenCL API. In some rare cases this is more stable.", device_id + 1);
|
||||||
event_log_warning (hashcat_ctx, NULL);
|
event_log_warning (hashcat_ctx, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,12 +364,12 @@ static int inner2_loop (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (status_ctx->devices_status == STATUS_EXHAUSTED)
|
if (status_ctx->devices_status == STATUS_EXHAUSTED)
|
||||||
{
|
{
|
||||||
// the options speed-only and progress-only cause hashcat to abort quickly.
|
// the options speed-only and progress-only cause hashcat to abort quickly.
|
||||||
// therefore, they will end up (if no other error occured) as STATUS_EXHAUSTED.
|
// therefore, they will end up (if no other error occurred) as STATUS_EXHAUSTED.
|
||||||
// however, that can create confusion in hashcats RC, because exhausted translates to RC = 1.
|
// however, that can create confusion in hashcats RC, because exhausted translates to RC = 1.
|
||||||
// but then having RC = 1 does not match our expection if we use for speed-only and progress-only.
|
// but then having RC = 1 does not match our exception if we use for speed-only and progress-only.
|
||||||
// to get hashcat to return RC = 0 we have to set it to CRACKED or BYPASS
|
// to get hashcat to return RC = 0 we have to set it to CRACKED or BYPASS
|
||||||
// note: other options like --show, --left, --benchmark, --keyspace, --backend-info, etc.
|
// note: other options like --show, --left, --benchmark, --keyspace, --backend-info, etc.
|
||||||
// not not reach this section of the code, they've returned already with rc 0.
|
// do not reach this section of the code, they've returned already with rc 0.
|
||||||
|
|
||||||
if ((user_options->speed_only == true) || (user_options->progress_only == true))
|
if ((user_options->speed_only == true) || (user_options->progress_only == true))
|
||||||
{
|
{
|
||||||
@ -774,7 +774,7 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (combinator_ctx_init (hashcat_ctx) == -1) return -1;
|
if (combinator_ctx_init (hashcat_ctx) == -1) return -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* charsets : keep them together for more easy maintainnce
|
* charsets : keep them together for more easy maintenance
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (mask_ctx_init (hashcat_ctx) == -1) return -1;
|
if (mask_ctx_init (hashcat_ctx) == -1) return -1;
|
||||||
@ -787,7 +787,7 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
|
|||||||
{
|
{
|
||||||
if ((mask_ctx->masks_cnt > 1) || (straight_ctx->dicts_cnt > 1))
|
if ((mask_ctx->masks_cnt > 1) || (straight_ctx->dicts_cnt > 1))
|
||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "Use of --skip/--limit is not supported with --increment or mask files.");
|
event_log_error (hashcat_ctx, "Use of --skip/--limit is not supported with --increment, mask files, or --stdout.");
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -807,6 +807,17 @@ static int outer_loop (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prevent the user from using -m/--hash-type together with --stdout
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (user_options->hash_mode_chgd == true && user_options->stdout_flag == true)
|
||||||
|
{
|
||||||
|
event_log_error (hashcat_ctx, "Use of -m/--hash-type is not supported with --stdout.");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* status progress init; needs hashes that's why we have to do it here and separate from status_ctx_init
|
* status progress init; needs hashes that's why we have to do it here and separate from status_ctx_init
|
||||||
*/
|
*/
|
||||||
@ -1818,7 +1829,7 @@ int hashcat_session_execute (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
else if (rc_final == -1)
|
else if (rc_final == -1)
|
||||||
{
|
{
|
||||||
// setup the new negative status code, usefull in test.sh
|
// set up the new negative status code, useful in test.sh
|
||||||
// -2 is marked as used in status_codes.txt
|
// -2 is marked as used in status_codes.txt
|
||||||
if (backend_ctx->runtime_skip_warning == true) rc_final = -3;
|
if (backend_ctx->runtime_skip_warning == true) rc_final = -3;
|
||||||
if (backend_ctx->memory_hit_warning == true) rc_final = -4;
|
if (backend_ctx->memory_hit_warning == true) rc_final = -4;
|
||||||
|
10
src/rp.c
10
src/rp.c
@ -905,11 +905,13 @@ int kernel_rules_load (hashcat_ctx_t *hashcat_ctx, kernel_rule_t **out_buf, u32
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 invalid_cnt = 0;
|
||||||
|
|
||||||
for (u32 i = 0; i < kernel_rules_cnt; i++)
|
for (u32 i = 0; i < kernel_rules_cnt; i++)
|
||||||
{
|
{
|
||||||
u32 out_pos = 0;
|
u32 out_pos = 0;
|
||||||
|
|
||||||
kernel_rule_t *out = &kernel_rules_buf[i];
|
kernel_rule_t *out = &kernel_rules_buf[i - invalid_cnt];
|
||||||
|
|
||||||
for (u32 j = 0; j < user_options->rp_files_cnt; j++)
|
for (u32 j = 0; j < user_options->rp_files_cnt; j++)
|
||||||
{
|
{
|
||||||
@ -922,7 +924,9 @@ int kernel_rules_load (hashcat_ctx_t *hashcat_ctx, kernel_rule_t **out_buf, u32
|
|||||||
{
|
{
|
||||||
if (out_pos == RULES_MAX - 1)
|
if (out_pos == RULES_MAX - 1)
|
||||||
{
|
{
|
||||||
// event_log_warning (hashcat_ctx, "Truncated chaining of rules %d and %d - maximum functions per rule exceeded.", i, in_off);
|
event_log_warning (hashcat_ctx, "Maximum functions per rule exceeded during chaining of rules, skipping...");
|
||||||
|
|
||||||
|
invalid_cnt++;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -934,6 +938,8 @@ int kernel_rules_load (hashcat_ctx_t *hashcat_ctx, kernel_rule_t **out_buf, u32
|
|||||||
|
|
||||||
hcfree (repeats);
|
hcfree (repeats);
|
||||||
|
|
||||||
|
kernel_rules_cnt -= invalid_cnt;
|
||||||
|
|
||||||
hcfree (all_kernel_rules_cnt);
|
hcfree (all_kernel_rules_cnt);
|
||||||
hcfree (all_kernel_rules_buf);
|
hcfree (all_kernel_rules_buf);
|
||||||
|
|
||||||
|
@ -211,9 +211,9 @@ GeForce_MX110 ALIAS_nv_sm50_or_higher
|
|||||||
GeForce_MX130 ALIAS_nv_sm50_or_higher
|
GeForce_MX130 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_MX150 ALIAS_nv_sm50_or_higher
|
GeForce_MX150 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
|
GeForce_GTX_1630 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_GTX_1650 ALIAS_nv_sm50_or_higher
|
GeForce_GTX_1650 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_GTX_1650_SUPER ALIAS_nv_sm50_or_higher
|
GeForce_GTX_1650_SUPER ALIAS_nv_sm50_or_higher
|
||||||
GeForce_GTX_1650_Ti ALIAS_nv_sm50_or_higher
|
|
||||||
GeForce_GTX_1660 ALIAS_nv_sm50_or_higher
|
GeForce_GTX_1660 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_GTX_1660_SUPER ALIAS_nv_sm50_or_higher
|
GeForce_GTX_1660_SUPER ALIAS_nv_sm50_or_higher
|
||||||
GeForce_GTX_1660_Ti ALIAS_nv_sm50_or_higher
|
GeForce_GTX_1660_Ti ALIAS_nv_sm50_or_higher
|
||||||
@ -227,7 +227,6 @@ GeForce_RTX_2080_SUPER ALIAS_nv_sm50_or_higher
|
|||||||
GeForce_RTX_2080_Ti ALIAS_nv_sm50_or_higher
|
GeForce_RTX_2080_Ti ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
GeForce_RTX_3050 ALIAS_nv_sm50_or_higher
|
GeForce_RTX_3050 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_RTX_3050_Ti ALIAS_nv_sm50_or_higher
|
|
||||||
GeForce_RTX_3060 ALIAS_nv_sm50_or_higher
|
GeForce_RTX_3060 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_RTX_3060_Ti ALIAS_nv_sm50_or_higher
|
GeForce_RTX_3060_Ti ALIAS_nv_sm50_or_higher
|
||||||
GeForce_RTX_3070 ALIAS_nv_sm50_or_higher
|
GeForce_RTX_3070 ALIAS_nv_sm50_or_higher
|
||||||
|
Loading…
Reference in New Issue
Block a user