mirror of
https://github.com/hashcat/hashcat.git
synced 2025-01-22 05:31:11 +00:00
Merge branch 'master' into fix_31700_vec
This commit is contained in:
commit
529b933302
@ -26,7 +26,7 @@ DECLSPEC u32 blake2s_rot16_S (const u32 a)
|
|||||||
DECLSPEC u32x blake2s_rot16 (const u32x a)
|
DECLSPEC u32x blake2s_rot16 (const u32x a)
|
||||||
{
|
{
|
||||||
u32x r;
|
u32x r;
|
||||||
|
|
||||||
#if VECT_SIZE == 1
|
#if VECT_SIZE == 1
|
||||||
r = blake2s_rot16_S (a);
|
r = blake2s_rot16_S (a);
|
||||||
#endif
|
#endif
|
||||||
@ -346,7 +346,7 @@ DECLSPEC void blake2s_update (PRIVATE_AS blake2s_ctx_t *ctx, PRIVATE_AS const u3
|
|||||||
w3[1] = w[pos4 + 13];
|
w3[1] = w[pos4 + 13];
|
||||||
w3[2] = w[pos4 + 14];
|
w3[2] = w[pos4 + 14];
|
||||||
w3[3] = w[pos4 + 15];
|
w3[3] = w[pos4 + 15];
|
||||||
|
|
||||||
blake2s_update_64 (ctx, w0, w1, w2, w3, 64);
|
blake2s_update_64 (ctx, w0, w1, w2, w3, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -451,7 +451,7 @@ DECLSPEC void blake2s_transform_vector (PRIVATE_AS u32x *h, PRIVATE_AS const u32
|
|||||||
v[13] = BLAKE2S_IV_05; // ^ t1;
|
v[13] = BLAKE2S_IV_05; // ^ t1;
|
||||||
v[14] = BLAKE2S_IV_06 ^ f0;
|
v[14] = BLAKE2S_IV_06 ^ f0;
|
||||||
v[15] = BLAKE2S_IV_07; // ^ f1;
|
v[15] = BLAKE2S_IV_07; // ^ f1;
|
||||||
|
|
||||||
BLAKE2S_ROUND_VECTOR ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
BLAKE2S_ROUND_VECTOR ( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
||||||
BLAKE2S_ROUND_VECTOR (14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3);
|
BLAKE2S_ROUND_VECTOR (14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3);
|
||||||
BLAKE2S_ROUND_VECTOR (11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4);
|
BLAKE2S_ROUND_VECTOR (11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4);
|
||||||
|
@ -41,7 +41,7 @@ DECLSPEC void sm3_transform (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1,
|
|||||||
u32 wd_t = w3[1];
|
u32 wd_t = w3[1];
|
||||||
u32 we_t = w3[2];
|
u32 we_t = w3[2];
|
||||||
u32 wf_t = w3[3];
|
u32 wf_t = w3[3];
|
||||||
|
|
||||||
// SM3 main loop, composed of 64 rounds (0 to 63).
|
// SM3 main loop, composed of 64 rounds (0 to 63).
|
||||||
// The Compression Function (CF) and Message Expansion (ME) are executed step-by-step.
|
// The Compression Function (CF) and Message Expansion (ME) are executed step-by-step.
|
||||||
// SM3_ROUND1_S use SM3_FF0 and SM3_GG0 functions for index 0 to 15 and SM3_ROUND2_S use SM3_FF1 and SM3_GG1 functions for index 16 to 63.
|
// SM3_ROUND1_S use SM3_FF0 and SM3_GG0 functions for index 0 to 15 and SM3_ROUND2_S use SM3_FF1 and SM3_GG1 functions for index 16 to 63.
|
||||||
@ -93,7 +93,7 @@ DECLSPEC void sm3_transform (PRIVATE_AS const u32 *w0, PRIVATE_AS const u32 *w1,
|
|||||||
wc_t = SM3_EXPAND_S(wc_t, w3_t, w9_t, wf_t, w6_t); SM3_ROUND2_S(a, b, c, d, e, f, g, h, SM3_T40, w8_t, w8_t ^ wc_t);
|
wc_t = SM3_EXPAND_S(wc_t, w3_t, w9_t, wf_t, w6_t); SM3_ROUND2_S(a, b, c, d, e, f, g, h, SM3_T40, w8_t, w8_t ^ wc_t);
|
||||||
wd_t = SM3_EXPAND_S(wd_t, w4_t, wa_t, w0_t, w7_t); SM3_ROUND2_S(d, a, b, c, h, e, f, g, SM3_T41, w9_t, w9_t ^ wd_t);
|
wd_t = SM3_EXPAND_S(wd_t, w4_t, wa_t, w0_t, w7_t); SM3_ROUND2_S(d, a, b, c, h, e, f, g, SM3_T41, w9_t, w9_t ^ wd_t);
|
||||||
we_t = SM3_EXPAND_S(we_t, w5_t, wb_t, w1_t, w8_t); SM3_ROUND2_S(c, d, a, b, g, h, e, f, SM3_T42, wa_t, wa_t ^ we_t);
|
we_t = SM3_EXPAND_S(we_t, w5_t, wb_t, w1_t, w8_t); SM3_ROUND2_S(c, d, a, b, g, h, e, f, SM3_T42, wa_t, wa_t ^ we_t);
|
||||||
wf_t = SM3_EXPAND_S(wf_t, w6_t, wc_t, w2_t, w9_t); SM3_ROUND2_S(b, c, d, a, f, g, h, e, SM3_T43, wb_t, wb_t ^ wf_t);
|
wf_t = SM3_EXPAND_S(wf_t, w6_t, wc_t, w2_t, w9_t); SM3_ROUND2_S(b, c, d, a, f, g, h, e, SM3_T43, wb_t, wb_t ^ wf_t);
|
||||||
w0_t = SM3_EXPAND_S(w0_t, w7_t, wd_t, w3_t, wa_t); SM3_ROUND2_S(a, b, c, d, e, f, g, h, SM3_T44, wc_t, wc_t ^ w0_t);
|
w0_t = SM3_EXPAND_S(w0_t, w7_t, wd_t, w3_t, wa_t); SM3_ROUND2_S(a, b, c, d, e, f, g, h, SM3_T44, wc_t, wc_t ^ w0_t);
|
||||||
w1_t = SM3_EXPAND_S(w1_t, w8_t, we_t, w4_t, wb_t); SM3_ROUND2_S(d, a, b, c, h, e, f, g, SM3_T45, wd_t, wd_t ^ w1_t);
|
w1_t = SM3_EXPAND_S(w1_t, w8_t, we_t, w4_t, wb_t); SM3_ROUND2_S(d, a, b, c, h, e, f, g, SM3_T45, wd_t, wd_t ^ w1_t);
|
||||||
w2_t = SM3_EXPAND_S(w2_t, w9_t, wf_t, w5_t, wc_t); SM3_ROUND2_S(c, d, a, b, g, h, e, f, SM3_T46, we_t, we_t ^ w2_t);
|
w2_t = SM3_EXPAND_S(w2_t, w9_t, wf_t, w5_t, wc_t); SM3_ROUND2_S(c, d, a, b, g, h, e, f, SM3_T46, we_t, we_t ^ w2_t);
|
||||||
@ -928,7 +928,7 @@ DECLSPEC void sm3_final (PRIVATE_AS sm3_ctx_t *ctx)
|
|||||||
const int pos = ctx->len & 63;
|
const int pos = ctx->len & 63;
|
||||||
|
|
||||||
append_0x80_4x4_S (ctx->w0, ctx->w1, ctx->w2, ctx->w3, pos ^ 3);
|
append_0x80_4x4_S (ctx->w0, ctx->w1, ctx->w2, ctx->w3, pos ^ 3);
|
||||||
|
|
||||||
if (pos >= 56)
|
if (pos >= 56)
|
||||||
{
|
{
|
||||||
sm3_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h);
|
sm3_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h);
|
||||||
@ -986,7 +986,7 @@ DECLSPEC void sm3_transform_vector (PRIVATE_AS const u32x *w0, PRIVATE_AS const
|
|||||||
u32x wd_t = w3[1];
|
u32x wd_t = w3[1];
|
||||||
u32x we_t = w3[2];
|
u32x we_t = w3[2];
|
||||||
u32x wf_t = w3[3];
|
u32x wf_t = w3[3];
|
||||||
|
|
||||||
// SM3 main loop, composed of 64 rounds (0 to 63).
|
// SM3 main loop, composed of 64 rounds (0 to 63).
|
||||||
// The Compression Function (CF) and Message Expansion (ME) are executed step-by-step.
|
// The Compression Function (CF) and Message Expansion (ME) are executed step-by-step.
|
||||||
// SM3_ROUND1 use SM3_FF0 and SM3_GG0 functions for index 0 to 15 and SM3_ROUND2 use SM3_FF1 and SM3_GG1 functions for index 16 to 63.
|
// SM3_ROUND1 use SM3_FF0 and SM3_GG0 functions for index 0 to 15 and SM3_ROUND2 use SM3_FF1 and SM3_GG1 functions for index 16 to 63.
|
||||||
@ -1038,7 +1038,7 @@ DECLSPEC void sm3_transform_vector (PRIVATE_AS const u32x *w0, PRIVATE_AS const
|
|||||||
wc_t = SM3_EXPAND(wc_t, w3_t, w9_t, wf_t, w6_t); SM3_ROUND2(a, b, c, d, e, f, g, h, SM3_T40, w8_t, w8_t ^ wc_t);
|
wc_t = SM3_EXPAND(wc_t, w3_t, w9_t, wf_t, w6_t); SM3_ROUND2(a, b, c, d, e, f, g, h, SM3_T40, w8_t, w8_t ^ wc_t);
|
||||||
wd_t = SM3_EXPAND(wd_t, w4_t, wa_t, w0_t, w7_t); SM3_ROUND2(d, a, b, c, h, e, f, g, SM3_T41, w9_t, w9_t ^ wd_t);
|
wd_t = SM3_EXPAND(wd_t, w4_t, wa_t, w0_t, w7_t); SM3_ROUND2(d, a, b, c, h, e, f, g, SM3_T41, w9_t, w9_t ^ wd_t);
|
||||||
we_t = SM3_EXPAND(we_t, w5_t, wb_t, w1_t, w8_t); SM3_ROUND2(c, d, a, b, g, h, e, f, SM3_T42, wa_t, wa_t ^ we_t);
|
we_t = SM3_EXPAND(we_t, w5_t, wb_t, w1_t, w8_t); SM3_ROUND2(c, d, a, b, g, h, e, f, SM3_T42, wa_t, wa_t ^ we_t);
|
||||||
wf_t = SM3_EXPAND(wf_t, w6_t, wc_t, w2_t, w9_t); SM3_ROUND2(b, c, d, a, f, g, h, e, SM3_T43, wb_t, wb_t ^ wf_t);
|
wf_t = SM3_EXPAND(wf_t, w6_t, wc_t, w2_t, w9_t); SM3_ROUND2(b, c, d, a, f, g, h, e, SM3_T43, wb_t, wb_t ^ wf_t);
|
||||||
w0_t = SM3_EXPAND(w0_t, w7_t, wd_t, w3_t, wa_t); SM3_ROUND2(a, b, c, d, e, f, g, h, SM3_T44, wc_t, wc_t ^ w0_t);
|
w0_t = SM3_EXPAND(w0_t, w7_t, wd_t, w3_t, wa_t); SM3_ROUND2(a, b, c, d, e, f, g, h, SM3_T44, wc_t, wc_t ^ w0_t);
|
||||||
w1_t = SM3_EXPAND(w1_t, w8_t, we_t, w4_t, wb_t); SM3_ROUND2(d, a, b, c, h, e, f, g, SM3_T45, wd_t, wd_t ^ w1_t);
|
w1_t = SM3_EXPAND(w1_t, w8_t, we_t, w4_t, wb_t); SM3_ROUND2(d, a, b, c, h, e, f, g, SM3_T45, wd_t, wd_t ^ w1_t);
|
||||||
w2_t = SM3_EXPAND(w2_t, w9_t, wf_t, w5_t, wc_t); SM3_ROUND2(c, d, a, b, g, h, e, f, SM3_T46, we_t, we_t ^ w2_t);
|
w2_t = SM3_EXPAND(w2_t, w9_t, wf_t, w5_t, wc_t); SM3_ROUND2(c, d, a, b, g, h, e, f, SM3_T46, we_t, we_t ^ w2_t);
|
||||||
|
@ -20,22 +20,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -18,22 +18,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -18,22 +18,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -20,22 +20,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -18,22 +18,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -18,22 +18,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -30,22 +30,24 @@ CONSTANT_VK u32a padding[8] =
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -28,22 +28,24 @@ CONSTANT_VK u32a padding[8] =
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -28,22 +28,24 @@ CONSTANT_VK u32a padding[8] =
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -17,22 +17,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -19,22 +19,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -25,22 +25,24 @@
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -38,6 +38,8 @@ typedef struct pdf
|
|||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
typedef struct pdf14_tmp
|
typedef struct pdf14_tmp
|
||||||
|
@ -185,7 +185,7 @@ KERNEL_FQ void m31000_s04 (KERN_ATTR_RULES ())
|
|||||||
const u32x r1 = h[DGST_R1];
|
const u32x r1 = h[DGST_R1];
|
||||||
const u32x r2 = h[DGST_R2];
|
const u32x r2 = h[DGST_R2];
|
||||||
const u32x r3 = h[DGST_R3];
|
const u32x r3 = h[DGST_R3];
|
||||||
|
|
||||||
COMPARE_S_SIMD (r0, r1, r2, r3);
|
COMPARE_S_SIMD (r0, r1, r2, r3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ KERNEL_FQ void m31000_mxx (KERN_ATTR_RULES ())
|
|||||||
blake2s_init (&ctx);
|
blake2s_init (&ctx);
|
||||||
blake2s_update (&ctx, tmp.i, tmp.pw_len);
|
blake2s_update (&ctx, tmp.i, tmp.pw_len);
|
||||||
blake2s_final (&ctx);
|
blake2s_final (&ctx);
|
||||||
|
|
||||||
const u32 r0 = ctx.h[DGST_R0];
|
const u32 r0 = ctx.h[DGST_R0];
|
||||||
const u32 r1 = ctx.h[DGST_R1];
|
const u32 r1 = ctx.h[DGST_R1];
|
||||||
const u32 r2 = ctx.h[DGST_R2];
|
const u32 r2 = ctx.h[DGST_R2];
|
||||||
|
@ -29,6 +29,12 @@
|
|||||||
- Added hash-mode: md5(md5($salt).md5(md5($pass)))
|
- Added hash-mode: md5(md5($salt).md5(md5($pass)))
|
||||||
- Added hash-mode: md5(md5(md5($pass).$salt1).$salt2)
|
- Added hash-mode: md5(md5(md5($pass).$salt1).$salt2)
|
||||||
|
|
||||||
|
##
|
||||||
|
## Features
|
||||||
|
##
|
||||||
|
|
||||||
|
- Added new feature (-Y) that creates N virtual instances for each device in your system at the cost of N times the device memory consumption
|
||||||
|
|
||||||
##
|
##
|
||||||
## Performance
|
## Performance
|
||||||
##
|
##
|
||||||
@ -46,6 +52,7 @@
|
|||||||
- Fixed incorrect plaintext check for 25400 and 26610. Increased plaintext check to 32 bytes to prevent false positives.
|
- Fixed incorrect plaintext check for 25400 and 26610. Increased plaintext check to 32 bytes to prevent false positives.
|
||||||
- Fixed bug in --stdout that caused certain rules to malfunction
|
- Fixed bug in --stdout that caused certain rules to malfunction
|
||||||
- Fixed incompatible pointer types (salt1 and salt2 buf) in 31700 a3 kernel
|
- Fixed incompatible pointer types (salt1 and salt2 buf) in 31700 a3 kernel
|
||||||
|
- Handle signed/unsigned PDF permission P value for all PDF hash-modes
|
||||||
|
|
||||||
##
|
##
|
||||||
## Technical
|
## Technical
|
||||||
|
@ -425,9 +425,9 @@ _hashcat ()
|
|||||||
local HIDDEN_FILES_AGGRESSIVE="${HIDDEN_FILES}|hcmask|hcchr"
|
local HIDDEN_FILES_AGGRESSIVE="${HIDDEN_FILES}|hcmask|hcchr"
|
||||||
local BUILD_IN_CHARSETS='?l ?u ?d ?a ?b ?s ?h ?H'
|
local BUILD_IN_CHARSETS='?l ?u ?d ?a ?b ?s ?h ?H'
|
||||||
|
|
||||||
local SHORT_OPTS="-m -a -V -h -b -t -T -o -p -c -d -D -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O -S -z -M"
|
local SHORT_OPTS="-m -a -V -h -b -t -T -o -p -c -d -D -w -n -u -j -k -r -g -1 -2 -3 -4 -i -I -s -l -O -S -z -M -Y"
|
||||||
local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --benchmark-all --hex-salt --hex-wordlist --hex-charset --force --status --status-json --status-timer --stdin-timeout-abort --machine-readable --loopback --markov-hcstat2 --markov-disable --markov-inverse --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --deprecated-check-disable --left --username --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --example-hashes --hash-info --backend-ignore-cuda --backend-ignore-opencl --backend-ignore-hip --backend-ignore-metal --backend-info --backend-devices --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-disable --hwmon-temp-abort --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --multiply-accel-disable --self-test-disable --slow-candidates --brain-server --brain-server-timer --brain-client --brain-client-features --brain-host --brain-port --brain-session --brain-session-whitelist --brain-password --identify"
|
local LONG_OPTS="--hash-type --attack-mode --version --help --quiet --benchmark --benchmark-all --hex-salt --hex-wordlist --hex-charset --force --status --status-json --status-timer --stdin-timeout-abort --machine-readable --loopback --markov-hcstat2 --markov-disable --markov-inverse --markov-classic --markov-threshold --runtime --session --speed-only --progress-only --restore --restore-file-path --restore-disable --outfile --outfile-format --outfile-autohex-disable --outfile-check-timer --outfile-check-dir --wordlist-autohex-disable --separator --show --deprecated-check-disable --left --username --remove --remove-timer --potfile-disable --potfile-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --example-hashes --hash-info --backend-ignore-cuda --backend-ignore-opencl --backend-ignore-hip --backend-ignore-metal --backend-info --backend-devices --backend-devices-virtual --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-disable --hwmon-temp-abort --skip --limit --keyspace --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment --increment-min --increment-max --logfile-disable --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --stdout --keep-guessing --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --optimized-kernel-enable --multiply-accel-disable --self-test-disable --slow-candidates --brain-server --brain-server-timer --brain-client --brain-client-features --brain-host --brain-port --brain-session --brain-session-whitelist --brain-password --identify"
|
||||||
local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --stdin-timeout-abort --markov-hcstat2 --markov-threshold --runtime --session --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --backend-devices --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-temp-abort --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment-min --increment-max --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --brain-server-timer --brain-client-features --brain-host --brain-password --brain-port --brain-session --brain-session-whitelist"
|
local OPTIONS="-m -a -t -o -p -c -d -w -n -u -j -k -r -g -1 -2 -3 -4 -s -l --hash-type --attack-mode --status-timer --stdin-timeout-abort --markov-hcstat2 --markov-threshold --runtime --session --outfile --outfile-format --outfile-check-timer --outfile-check-dir --separator --remove-timer --potfile-path --restore-file-path --debug-mode --debug-file --induction-dir --segment-size --bitmap-min --bitmap-max --cpu-affinity --backend-devices --backend-devices-virtual --opencl-device-types --backend-vector-width --workload-profile --kernel-accel --kernel-loops --kernel-threads --spin-damp --hwmon-temp-abort --skip --limit --rule-left --rule-right --rules-file --generate-rules --generate-rules-func-min --generate-rules-func-max --generate-rules-func-sel --generate-rules-seed --custom-charset1 --custom-charset2 --custom-charset3 --custom-charset4 --hook-threads --increment-min --increment-max --scrypt-tmto --keyboard-layout-mapping --truecrypt-keyfiles --veracrypt-keyfiles --veracrypt-pim-start --veracrypt-pim-stop --hccapx-message-pair --nonce-error-corrections --encoding-from --encoding-to --brain-server-timer --brain-client-features --brain-host --brain-password --brain-port --brain-session --brain-session-whitelist"
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
local cur="${COMP_WORDS[COMP_CWORD]}"
|
local cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
@ -39,6 +39,8 @@ int backend_session_update_combinator (hashcat_ctx_t *hashcat_ctx);
|
|||||||
int backend_session_update_mp (hashcat_ctx_t *hashcat_ctx);
|
int backend_session_update_mp (hashcat_ctx_t *hashcat_ctx);
|
||||||
int backend_session_update_mp_rl (hashcat_ctx_t *hashcat_ctx, const u32 css_cnt_l, const u32 css_cnt_r);
|
int backend_session_update_mp_rl (hashcat_ctx_t *hashcat_ctx, const u32 css_cnt_l, const u32 css_cnt_r);
|
||||||
|
|
||||||
|
u32 backend_device_idx_real_from_virtual (const u32 device_idx, const u32 backend_devices_virtual);
|
||||||
|
|
||||||
void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file);
|
void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file);
|
||||||
void generate_cached_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *cache_dir, const char *device_name_chksum, char *cached_file, bool is_metal);
|
void generate_cached_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *cache_dir, const char *device_name_chksum, char *cached_file, bool is_metal);
|
||||||
void generate_source_kernel_shared_filename (char *shared_dir, char *source_file);
|
void generate_source_kernel_shared_filename (char *shared_dir, char *source_file);
|
||||||
|
@ -628,6 +628,7 @@ typedef enum user_options_defaults
|
|||||||
ADVICE_DISABLE = false,
|
ADVICE_DISABLE = false,
|
||||||
ATTACK_MODE = ATTACK_MODE_STRAIGHT,
|
ATTACK_MODE = ATTACK_MODE_STRAIGHT,
|
||||||
AUTODETECT = false,
|
AUTODETECT = false,
|
||||||
|
BACKEND_DEVICES_VIRTUAL = 1,
|
||||||
BENCHMARK_ALL = false,
|
BENCHMARK_ALL = false,
|
||||||
BENCHMARK = false,
|
BENCHMARK = false,
|
||||||
BITMAP_MAX = 18,
|
BITMAP_MAX = 18,
|
||||||
@ -728,6 +729,7 @@ typedef enum user_options_map
|
|||||||
IDX_ADVICE_DISABLE = 0xff00,
|
IDX_ADVICE_DISABLE = 0xff00,
|
||||||
IDX_ATTACK_MODE = 'a',
|
IDX_ATTACK_MODE = 'a',
|
||||||
IDX_BACKEND_DEVICES = 'd',
|
IDX_BACKEND_DEVICES = 'd',
|
||||||
|
IDX_BACKEND_DEVICES_VIRTUAL = 'Y',
|
||||||
IDX_BACKEND_IGNORE_CUDA = 0xff01,
|
IDX_BACKEND_IGNORE_CUDA = 0xff01,
|
||||||
IDX_BACKEND_IGNORE_HIP = 0xff02,
|
IDX_BACKEND_IGNORE_HIP = 0xff02,
|
||||||
IDX_BACKEND_IGNORE_METAL = 0xff03,
|
IDX_BACKEND_IGNORE_METAL = 0xff03,
|
||||||
@ -1073,6 +1075,7 @@ typedef struct hashconfig
|
|||||||
bool forced_jit_compile;
|
bool forced_jit_compile;
|
||||||
|
|
||||||
u32 pwdump_column;
|
u32 pwdump_column;
|
||||||
|
|
||||||
} hashconfig_t;
|
} hashconfig_t;
|
||||||
|
|
||||||
typedef struct pw_pre
|
typedef struct pw_pre
|
||||||
@ -1876,6 +1879,7 @@ typedef struct backend_ctx
|
|||||||
int backend_device_from_opencl_platform[CL_PLATFORMS_MAX][DEVICES_MAX]; // from opencl device index to backend device index (by platform)
|
int backend_device_from_opencl_platform[CL_PLATFORMS_MAX][DEVICES_MAX]; // from opencl device index to backend device index (by platform)
|
||||||
|
|
||||||
int backend_devices_cnt;
|
int backend_devices_cnt;
|
||||||
|
int backend_devices_virtual;
|
||||||
int backend_devices_active;
|
int backend_devices_active;
|
||||||
|
|
||||||
int cuda_devices_cnt;
|
int cuda_devices_cnt;
|
||||||
@ -2396,6 +2400,7 @@ typedef struct user_options
|
|||||||
const char *rule_buf_r;
|
const char *rule_buf_r;
|
||||||
const char *session;
|
const char *session;
|
||||||
u32 attack_mode;
|
u32 attack_mode;
|
||||||
|
u32 backend_devices_virtual;
|
||||||
u32 backend_info;
|
u32 backend_info;
|
||||||
u32 bitmap_max;
|
u32 bitmap_max;
|
||||||
u32 bitmap_min;
|
u32 bitmap_min;
|
||||||
|
81
rules/stacking58.rule
Normal file
81
rules/stacking58.rule
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
## This rule file is designed to act as a base for usage in a rule stacking runs.
|
||||||
|
##
|
||||||
|
## For instance: $ hashcat hash.txt word.txt -r stacking58.rule -r stacking58.rule -r stacking58.rule
|
||||||
|
##
|
||||||
|
## This automatically produces a rule set of 195112 rules. These include well known efficient rules like:
|
||||||
|
##
|
||||||
|
## :
|
||||||
|
## $1
|
||||||
|
## $1 $3
|
||||||
|
## $1 $2 $3
|
||||||
|
## $!
|
||||||
|
## c $!
|
||||||
|
## ...
|
||||||
|
##
|
||||||
|
|
||||||
|
:
|
||||||
|
|
||||||
|
c
|
||||||
|
u
|
||||||
|
|
||||||
|
d
|
||||||
|
|
||||||
|
r
|
||||||
|
|
||||||
|
[
|
||||||
|
]
|
||||||
|
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
^0
|
||||||
|
^1
|
||||||
|
^2
|
||||||
|
^3
|
||||||
|
^4
|
||||||
|
^5
|
||||||
|
^6
|
||||||
|
^7
|
||||||
|
^8
|
||||||
|
^9
|
||||||
|
^
|
||||||
|
^!
|
||||||
|
^#
|
||||||
|
^%
|
||||||
|
^&
|
||||||
|
^*
|
||||||
|
^-
|
||||||
|
^.
|
||||||
|
^@
|
||||||
|
^^
|
||||||
|
^_
|
||||||
|
|
||||||
|
$0
|
||||||
|
$1
|
||||||
|
$2
|
||||||
|
$3
|
||||||
|
$4
|
||||||
|
$5
|
||||||
|
$6
|
||||||
|
$7
|
||||||
|
$8
|
||||||
|
$9
|
||||||
|
$
|
||||||
|
$!
|
||||||
|
$#
|
||||||
|
$%
|
||||||
|
$&
|
||||||
|
$*
|
||||||
|
$-
|
||||||
|
$.
|
||||||
|
$@
|
||||||
|
$^
|
||||||
|
$_
|
||||||
|
$$
|
||||||
|
|
||||||
|
sa@
|
||||||
|
se3
|
||||||
|
si!
|
||||||
|
si1
|
||||||
|
so0
|
||||||
|
ss$
|
10
rules/top10_2023.rule
Normal file
10
rules/top10_2023.rule
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
:
|
||||||
|
$1
|
||||||
|
$1 $2
|
||||||
|
$1 $2 $3
|
||||||
|
c
|
||||||
|
u
|
||||||
|
$!
|
||||||
|
d
|
||||||
|
so0 si1 se3 ss$ sa@
|
||||||
|
$2 $0 $2 $3
|
@ -617,6 +617,11 @@ static bool write_kernel_binary (hashcat_ctx_t *hashcat_ctx, const char *kernel_
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 backend_device_idx_real_from_virtual (const u32 device_idx, const u32 backend_devices_virtual)
|
||||||
|
{
|
||||||
|
return device_idx / backend_devices_virtual;
|
||||||
|
}
|
||||||
|
|
||||||
void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file)
|
void generate_source_kernel_filename (const bool slow_candidates, const u32 attack_exec, const u32 attack_kern, const u32 kern_type, const u32 opti_type, char *shared_dir, char *source_file)
|
||||||
{
|
{
|
||||||
if (opti_type & OPTI_TYPE_OPTIMIZED_KERNEL)
|
if (opti_type & OPTI_TYPE_OPTIMIZED_KERNEL)
|
||||||
@ -4855,6 +4860,13 @@ int backend_ctx_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opencl_platform_devices_cnt *= user_options->backend_devices_virtual;
|
||||||
|
|
||||||
|
for (int i = opencl_platform_devices_cnt - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
opencl_platform_devices[i] = opencl_platform_devices[backend_device_idx_real_from_virtual (i, user_options->backend_devices_virtual)];
|
||||||
|
}
|
||||||
|
|
||||||
opencl_platforms_devices[opencl_platforms_idx] = opencl_platform_devices;
|
opencl_platforms_devices[opencl_platforms_idx] = opencl_platform_devices;
|
||||||
opencl_platforms_devices_cnt[opencl_platforms_idx] = opencl_platform_devices_cnt;
|
opencl_platforms_devices_cnt[opencl_platforms_idx] = opencl_platform_devices_cnt;
|
||||||
}
|
}
|
||||||
@ -5025,6 +5037,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
cuda_close (hashcat_ctx);
|
cuda_close (hashcat_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cuda_devices_cnt *= user_options->backend_devices_virtual;
|
||||||
|
|
||||||
backend_ctx->cuda_devices_cnt = cuda_devices_cnt;
|
backend_ctx->cuda_devices_cnt = cuda_devices_cnt;
|
||||||
|
|
||||||
// device specific
|
// device specific
|
||||||
@ -5033,6 +5047,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
{
|
{
|
||||||
const u32 device_id = backend_devices_idx;
|
const u32 device_id = backend_devices_idx;
|
||||||
|
|
||||||
|
const u32 cuda_devices_idx_real = backend_device_idx_real_from_virtual (cuda_devices_idx, user_options->backend_devices_virtual);
|
||||||
|
|
||||||
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
||||||
|
|
||||||
device_param->device_id = device_id;
|
device_param->device_id = device_id;
|
||||||
@ -5041,7 +5057,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
|
|
||||||
CUdevice cuda_device;
|
CUdevice cuda_device;
|
||||||
|
|
||||||
if (hc_cuDeviceGet (hashcat_ctx, &cuda_device, cuda_devices_idx) == -1)
|
if (hc_cuDeviceGet (hashcat_ctx, &cuda_device, cuda_devices_idx_real) == -1)
|
||||||
{
|
{
|
||||||
device_param->skipped = true;
|
device_param->skipped = true;
|
||||||
|
|
||||||
@ -5432,6 +5448,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
hip_close (hashcat_ctx);
|
hip_close (hashcat_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hip_devices_cnt *= user_options->backend_devices_virtual;
|
||||||
|
|
||||||
backend_ctx->hip_devices_cnt = hip_devices_cnt;
|
backend_ctx->hip_devices_cnt = hip_devices_cnt;
|
||||||
|
|
||||||
// device specific
|
// device specific
|
||||||
@ -5440,6 +5458,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
{
|
{
|
||||||
const u32 device_id = backend_devices_idx;
|
const u32 device_id = backend_devices_idx;
|
||||||
|
|
||||||
|
const u32 hip_devices_idx_real = backend_device_idx_real_from_virtual (hip_devices_idx, user_options->backend_devices_virtual);
|
||||||
|
|
||||||
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
||||||
|
|
||||||
device_param->device_id = device_id;
|
device_param->device_id = device_id;
|
||||||
@ -5448,7 +5468,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
|
|
||||||
hipDevice_t hip_device;
|
hipDevice_t hip_device;
|
||||||
|
|
||||||
if (hc_hipDeviceGet (hashcat_ctx, &hip_device, hip_devices_idx) == -1)
|
if (hc_hipDeviceGet (hashcat_ctx, &hip_device, hip_devices_idx_real) == -1)
|
||||||
{
|
{
|
||||||
device_param->skipped = true;
|
device_param->skipped = true;
|
||||||
|
|
||||||
@ -5860,6 +5880,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
mtl_close (hashcat_ctx);
|
mtl_close (hashcat_ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
metal_devices_cnt *= user_options->backend_devices_virtual;
|
||||||
|
|
||||||
backend_ctx->metal_devices_cnt = metal_devices_cnt;
|
backend_ctx->metal_devices_cnt = metal_devices_cnt;
|
||||||
|
|
||||||
// device specific
|
// device specific
|
||||||
@ -5868,6 +5890,8 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
{
|
{
|
||||||
const u32 device_id = backend_devices_idx;
|
const u32 device_id = backend_devices_idx;
|
||||||
|
|
||||||
|
const u32 metal_devices_idx_real = backend_device_idx_real_from_virtual (metal_devices_idx, user_options->backend_devices_virtual);
|
||||||
|
|
||||||
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
hc_device_param_t *device_param = &devices_param[backend_devices_idx];
|
||||||
|
|
||||||
device_param->device_id = device_id;
|
device_param->device_id = device_id;
|
||||||
@ -5876,7 +5900,7 @@ int backend_ctx_devices_init (hashcat_ctx_t *hashcat_ctx, const int comptime)
|
|||||||
|
|
||||||
mtl_device_id metal_device = NULL;
|
mtl_device_id metal_device = NULL;
|
||||||
|
|
||||||
if (hc_mtlDeviceGet (hashcat_ctx, &metal_device, metal_devices_idx) == -1)
|
if (hc_mtlDeviceGet (hashcat_ctx, &metal_device, metal_devices_idx_real) == -1)
|
||||||
{
|
{
|
||||||
device_param->skipped = true;
|
device_param->skipped = true;
|
||||||
|
|
||||||
|
@ -44,22 +44,24 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
@ -214,6 +216,10 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// validate data
|
// validate data
|
||||||
|
|
||||||
|
pdf->P_minus = 0;
|
||||||
|
|
||||||
|
if (P_pos[0] == 0x2d) pdf->P_minus = 1;
|
||||||
|
|
||||||
const int V = strtol ((const char *) V_pos, NULL, 10);
|
const int V = strtol ((const char *) V_pos, NULL, 10);
|
||||||
const int R = strtol ((const char *) R_pos, NULL, 10);
|
const int R = strtol ((const char *) R_pos, NULL, 10);
|
||||||
const int P = strtol ((const char *) P_pos, NULL, 10);
|
const int P = strtol ((const char *) P_pos, NULL, 10);
|
||||||
@ -291,7 +297,11 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
{
|
{
|
||||||
const pdf_t *pdf = (const pdf_t *) esalt_buf;
|
const pdf_t *pdf = (const pdf_t *) esalt_buf;
|
||||||
|
|
||||||
const int line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
const int line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
40,
|
40,
|
||||||
|
@ -46,22 +46,24 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
@ -235,6 +237,10 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// validate data
|
// validate data
|
||||||
|
|
||||||
|
pdf->P_minus = 0;
|
||||||
|
|
||||||
|
if (P_pos[0] == 0x2d) pdf->P_minus = 1;
|
||||||
|
|
||||||
const int V = strtol ((const char *) V_pos, NULL, 10);
|
const int V = strtol ((const char *) V_pos, NULL, 10);
|
||||||
const int R = strtol ((const char *) R_pos, NULL, 10);
|
const int R = strtol ((const char *) R_pos, NULL, 10);
|
||||||
const int P = strtol ((const char *) P_pos, NULL, 10);
|
const int P = strtol ((const char *) P_pos, NULL, 10);
|
||||||
@ -312,7 +318,11 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
{
|
{
|
||||||
const pdf_t *pdf = (const pdf_t *) esalt_buf;
|
const pdf_t *pdf = (const pdf_t *) esalt_buf;
|
||||||
|
|
||||||
const int line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
const int line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
40,
|
40,
|
||||||
|
@ -45,22 +45,24 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
@ -222,6 +224,10 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// validate data
|
// validate data
|
||||||
|
|
||||||
|
pdf->P_minus = 0;
|
||||||
|
|
||||||
|
if (P_pos[0] == 0x2d) pdf->P_minus = 1;
|
||||||
|
|
||||||
const int V = strtol ((const char *) V_pos, NULL, 10);
|
const int V = strtol ((const char *) V_pos, NULL, 10);
|
||||||
const int R = strtol ((const char *) R_pos, NULL, 10);
|
const int R = strtol ((const char *) R_pos, NULL, 10);
|
||||||
const int P = strtol ((const char *) P_pos, NULL, 10);
|
const int P = strtol ((const char *) P_pos, NULL, 10);
|
||||||
@ -322,7 +328,11 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *rc4key = (const u8 *) pdf->rc4key;
|
const u8 *rc4key = (const u8 *) pdf->rc4key;
|
||||||
|
|
||||||
const int line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x:%02x%02x%02x%02x%02x",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x:%02x%02x%02x%02x%02x";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x:%02x%02x%02x%02x%02x";
|
||||||
|
|
||||||
|
const int line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
40,
|
40,
|
||||||
|
@ -45,22 +45,24 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
@ -245,6 +247,10 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// validate data
|
// validate data
|
||||||
|
|
||||||
|
pdf->P_minus = 0;
|
||||||
|
|
||||||
|
if (P_pos[0] == 0x2d) pdf->P_minus = 1;
|
||||||
|
|
||||||
const int V = strtol ((const char *) V_pos, NULL, 10);
|
const int V = strtol ((const char *) V_pos, NULL, 10);
|
||||||
const int R = strtol ((const char *) R_pos, NULL, 10);
|
const int R = strtol ((const char *) R_pos, NULL, 10);
|
||||||
const int P = strtol ((const char *) P_pos, NULL, 10);
|
const int P = strtol ((const char *) P_pos, NULL, 10);
|
||||||
@ -379,7 +385,11 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
if (pdf->id_len == 32)
|
if (pdf->id_len == 32)
|
||||||
{
|
{
|
||||||
line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
128,
|
128,
|
||||||
@ -416,7 +426,11 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x";
|
||||||
|
|
||||||
|
line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
128,
|
128,
|
||||||
|
@ -51,22 +51,22 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
|
@ -47,22 +47,22 @@ const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
|
|
||||||
typedef struct pdf
|
typedef struct pdf
|
||||||
{
|
{
|
||||||
int V;
|
int V;
|
||||||
int R;
|
int R;
|
||||||
int P;
|
int P;
|
||||||
|
|
||||||
int enc_md;
|
int enc_md;
|
||||||
|
|
||||||
u32 id_buf[8];
|
u32 id_buf[8];
|
||||||
u32 u_buf[32];
|
u32 u_buf[32];
|
||||||
u32 o_buf[32];
|
u32 o_buf[32];
|
||||||
|
|
||||||
int id_len;
|
int id_len;
|
||||||
int o_len;
|
int o_len;
|
||||||
int u_len;
|
int u_len;
|
||||||
|
|
||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ typedef struct pdf17l8_tmp
|
|||||||
union
|
union
|
||||||
{
|
{
|
||||||
u32 dgst32[16];
|
u32 dgst32[16];
|
||||||
u64 dgst64[8];
|
u64 dgst64[8];
|
||||||
} d;
|
} d;
|
||||||
|
|
||||||
u32 dgst_len;
|
u32 dgst_len;
|
||||||
|
@ -69,6 +69,8 @@ typedef struct pdf
|
|||||||
u32 rc4key[2];
|
u32 rc4key[2];
|
||||||
u32 rc4data[2];
|
u32 rc4data[2];
|
||||||
|
|
||||||
|
int P_minus;
|
||||||
|
|
||||||
} pdf_t;
|
} pdf_t;
|
||||||
|
|
||||||
typedef struct pdf14_tmp
|
typedef struct pdf14_tmp
|
||||||
@ -354,6 +356,10 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// validate data
|
// validate data
|
||||||
|
|
||||||
|
pdf->P_minus = 0;
|
||||||
|
|
||||||
|
if (P_pos[0] == 0x2d) pdf->P_minus = 1;
|
||||||
|
|
||||||
const int V = strtol ((const char *) V_pos, NULL, 10);
|
const int V = strtol ((const char *) V_pos, NULL, 10);
|
||||||
const int R = strtol ((const char *) R_pos, NULL, 10);
|
const int R = strtol ((const char *) R_pos, NULL, 10);
|
||||||
const int P = strtol ((const char *) P_pos, NULL, 10);
|
const int P = strtol ((const char *) P_pos, NULL, 10);
|
||||||
@ -568,9 +574,14 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
int line_len = 0;
|
int line_len = 0;
|
||||||
|
|
||||||
pdf_t *pdf = (pdf_t *) esalt_buf;
|
pdf_t *pdf = (pdf_t *) esalt_buf;
|
||||||
|
|
||||||
if (pdf->id_len == 32)
|
if (pdf->id_len == 32)
|
||||||
{
|
{
|
||||||
line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x%s",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x%s";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x%s";
|
||||||
|
|
||||||
|
line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
128,
|
128,
|
||||||
@ -608,7 +619,11 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
line_len = snprintf (line_buf, line_size, "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x%s",
|
char *line_format = "$pdf$%d*%d*%d*%u*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x%s";
|
||||||
|
|
||||||
|
if (pdf->P_minus == 1) line_format = "$pdf$%d*%d*%d*%d*%d*%d*%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x*%d*%08x%08x%08x%08x%08x%08x%08x%08x%s";
|
||||||
|
|
||||||
|
line_len = snprintf (line_buf, line_size, line_format,
|
||||||
pdf->V,
|
pdf->V,
|
||||||
pdf->R,
|
pdf->R,
|
||||||
128,
|
128,
|
||||||
|
@ -99,6 +99,7 @@ static const char *const USAGE_BIG_PRE_HASHMODES[] =
|
|||||||
" --backend-ignore-opencl | | Do not try to open OpenCL interface on startup |",
|
" --backend-ignore-opencl | | Do not try to open OpenCL interface on startup |",
|
||||||
" -I, --backend-info | | Show system/evironment/backend API info | -I or -II",
|
" -I, --backend-info | | Show system/evironment/backend API info | -I or -II",
|
||||||
" -d, --backend-devices | Str | Backend devices to use, separated with commas | -d 1",
|
" -d, --backend-devices | Str | Backend devices to use, separated with commas | -d 1",
|
||||||
|
" -Y, --backend-devices-virtual | Num | Spawn X virtual instances for each real device | -Y 8",
|
||||||
" -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1",
|
" -D, --opencl-device-types | Str | OpenCL device-types to use, separated with commas | -D 1",
|
||||||
" -O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |",
|
" -O, --optimized-kernel-enable | | Enable optimized kernels (limits password length) |",
|
||||||
" -M, --multiply-accel-disable | | Disable multiply kernel-accel with processor count |",
|
" -M, --multiply-accel-disable | | Disable multiply kernel-accel with processor count |",
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_BRAIN
|
#ifdef WITH_BRAIN
|
||||||
static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSz";
|
static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSY:z";
|
||||||
#else
|
#else
|
||||||
static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMS";
|
static const char *const short_options = "hVvm:a:r:j:k:g:o:t:d:D:n:u:T:c:p:s:l:1:2:3:4:iIbw:OMSY:";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *const SEPARATOR = ":";
|
static char *const SEPARATOR = ":";
|
||||||
@ -33,6 +33,7 @@ static const struct option long_options[] =
|
|||||||
{"advice-disable", no_argument, NULL, IDX_ADVICE_DISABLE},
|
{"advice-disable", no_argument, NULL, IDX_ADVICE_DISABLE},
|
||||||
{"attack-mode", required_argument, NULL, IDX_ATTACK_MODE},
|
{"attack-mode", required_argument, NULL, IDX_ATTACK_MODE},
|
||||||
{"backend-devices", required_argument, NULL, IDX_BACKEND_DEVICES},
|
{"backend-devices", required_argument, NULL, IDX_BACKEND_DEVICES},
|
||||||
|
{"backend-devices-virtual", required_argument, NULL, IDX_BACKEND_DEVICES_VIRTUAL},
|
||||||
{"backend-ignore-cuda", no_argument, NULL, IDX_BACKEND_IGNORE_CUDA},
|
{"backend-ignore-cuda", no_argument, NULL, IDX_BACKEND_IGNORE_CUDA},
|
||||||
{"backend-ignore-hip", no_argument, NULL, IDX_BACKEND_IGNORE_HIP},
|
{"backend-ignore-hip", no_argument, NULL, IDX_BACKEND_IGNORE_HIP},
|
||||||
#if defined (__APPLE__)
|
#if defined (__APPLE__)
|
||||||
@ -171,6 +172,7 @@ int user_options_init (hashcat_ctx_t *hashcat_ctx)
|
|||||||
user_options->attack_mode = ATTACK_MODE;
|
user_options->attack_mode = ATTACK_MODE;
|
||||||
user_options->autodetect = AUTODETECT;
|
user_options->autodetect = AUTODETECT;
|
||||||
user_options->backend_devices = NULL;
|
user_options->backend_devices = NULL;
|
||||||
|
user_options->backend_devices_virtual = BACKEND_DEVICES_VIRTUAL;
|
||||||
user_options->backend_ignore_cuda = BACKEND_IGNORE_CUDA;
|
user_options->backend_ignore_cuda = BACKEND_IGNORE_CUDA;
|
||||||
user_options->backend_ignore_hip = BACKEND_IGNORE_HIP;
|
user_options->backend_ignore_hip = BACKEND_IGNORE_HIP;
|
||||||
#if defined (__APPLE__)
|
#if defined (__APPLE__)
|
||||||
@ -353,6 +355,7 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv)
|
|||||||
case IDX_INCREMENT_MIN:
|
case IDX_INCREMENT_MIN:
|
||||||
case IDX_INCREMENT_MAX:
|
case IDX_INCREMENT_MAX:
|
||||||
case IDX_HOOK_THREADS:
|
case IDX_HOOK_THREADS:
|
||||||
|
case IDX_BACKEND_DEVICES_VIRTUAL:
|
||||||
#ifdef WITH_BRAIN
|
#ifdef WITH_BRAIN
|
||||||
case IDX_BRAIN_PORT:
|
case IDX_BRAIN_PORT:
|
||||||
#endif
|
#endif
|
||||||
@ -467,6 +470,7 @@ int user_options_getopt (hashcat_ctx_t *hashcat_ctx, int argc, char **argv)
|
|||||||
case IDX_BACKEND_IGNORE_OPENCL: user_options->backend_ignore_opencl = true; break;
|
case IDX_BACKEND_IGNORE_OPENCL: user_options->backend_ignore_opencl = true; break;
|
||||||
case IDX_BACKEND_INFO: user_options->backend_info++; break;
|
case IDX_BACKEND_INFO: user_options->backend_info++; break;
|
||||||
case IDX_BACKEND_DEVICES: user_options->backend_devices = optarg; break;
|
case IDX_BACKEND_DEVICES: user_options->backend_devices = optarg; break;
|
||||||
|
case IDX_BACKEND_DEVICES_VIRTUAL: user_options->backend_devices_virtual = hc_strtoul (optarg, NULL, 10); break;
|
||||||
case IDX_BACKEND_VECTOR_WIDTH: user_options->backend_vector_width = hc_strtoul (optarg, NULL, 10);
|
case IDX_BACKEND_VECTOR_WIDTH: user_options->backend_vector_width = hc_strtoul (optarg, NULL, 10);
|
||||||
user_options->backend_vector_width_chgd = true; break;
|
user_options->backend_vector_width_chgd = true; break;
|
||||||
case IDX_OPENCL_DEVICE_TYPES: user_options->opencl_device_types = optarg; break;
|
case IDX_OPENCL_DEVICE_TYPES: user_options->opencl_device_types = optarg; break;
|
||||||
@ -559,7 +563,7 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WITH_BRAIN
|
#ifdef WITH_BRAIN
|
||||||
if ((user_options->brain_client == true) && (user_options->brain_server == true))
|
if ((user_options->brain_client == true) && (user_options->brain_server == true))
|
||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "Can not have --brain-client and --brain-server at the same time.");
|
event_log_error (hashcat_ctx, "Can not have --brain-client and --brain-server at the same time.");
|
||||||
@ -573,14 +577,14 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
|
|||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user_options->brain_port > 65535)
|
if (user_options->brain_port > 65535)
|
||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "Invalid brain port specified (greater than 65535).");
|
event_log_error (hashcat_ctx, "Invalid brain port specified (greater than 65535).");
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((user_options->brain_client == true) && (user_options->brain_password_chgd == false))
|
if ((user_options->brain_client == true) && (user_options->brain_password_chgd == false))
|
||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "Brain clients must specify --brain-password.");
|
event_log_error (hashcat_ctx, "Brain clients must specify --brain-password.");
|
||||||
@ -612,17 +616,20 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if (user_options->separator_chgd == true)
|
if (user_options->separator_chgd == true)
|
||||||
{
|
{
|
||||||
bool error = false;
|
bool error = false;
|
||||||
|
|
||||||
if ((strlen (user_options->separator) != 1) && (strlen (user_options->separator) != 4))
|
if ((strlen (user_options->separator) != 1) && (strlen (user_options->separator) != 4))
|
||||||
{
|
{
|
||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlen (user_options->separator) == 4)
|
if (strlen (user_options->separator) == 4)
|
||||||
{
|
{
|
||||||
if ((user_options->separator[0] == '0') && (user_options->separator[1] == 'x'))
|
if ((user_options->separator[0] == '0') && (user_options->separator[1] == 'x'))
|
||||||
{
|
{
|
||||||
if (is_valid_hex_string ((u8 * ) (&(user_options->separator[2])), 2))
|
if (is_valid_hex_string ((u8 *) (&(user_options->separator[2])), 2))
|
||||||
{
|
{
|
||||||
u8 sep = hex_to_u8 ((u8 * ) (&(user_options->separator[2])));
|
u8 sep = hex_to_u8 ((u8 *) (&(user_options->separator[2])));
|
||||||
|
|
||||||
user_options->separator[0] = sep;
|
user_options->separator[0] = sep;
|
||||||
user_options->separator[1] = 0;
|
user_options->separator[1] = 0;
|
||||||
}
|
}
|
||||||
@ -631,7 +638,8 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
|
|||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -738,6 +746,13 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (user_options->backend_devices_virtual == 0)
|
||||||
|
{
|
||||||
|
event_log_error (hashcat_ctx, "Invalid --backend-devices-virtual value specified.");
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (user_options->outfile_format == 0)
|
if (user_options->outfile_format == 0)
|
||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "Invalid --outfile-format value specified.");
|
event_log_error (hashcat_ctx, "Invalid --outfile-format value specified.");
|
||||||
@ -1010,7 +1025,7 @@ int user_options_sanity (hashcat_ctx_t *hashcat_ctx)
|
|||||||
if ((user_options->show == true) && (user_options->username == true))
|
if ((user_options->show == true) && (user_options->username == true))
|
||||||
{
|
{
|
||||||
event_log_error (hashcat_ctx, "Mixing --show with --username can cause exponential delay in output.");
|
event_log_error (hashcat_ctx, "Mixing --show with --username can cause exponential delay in output.");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2058,6 +2073,11 @@ void user_options_info (hashcat_ctx_t *hashcat_ctx)
|
|||||||
event_log_info (hashcat_ctx, "* --backend-devices=%s", user_options->backend_devices);
|
event_log_info (hashcat_ctx, "* --backend-devices=%s", user_options->backend_devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (user_options->backend_devices_virtual)
|
||||||
|
{
|
||||||
|
event_log_info (hashcat_ctx, "* --backend-devices-virtual=%u", user_options->backend_devices_virtual);
|
||||||
|
}
|
||||||
|
|
||||||
if (user_options->opencl_device_types)
|
if (user_options->opencl_device_types)
|
||||||
{
|
{
|
||||||
event_log_info (hashcat_ctx, "* --opencl-device-types=%s", user_options->opencl_device_types);
|
event_log_info (hashcat_ctx, "* --opencl-device-types=%s", user_options->opencl_device_types);
|
||||||
@ -2117,6 +2137,11 @@ void user_options_info (hashcat_ctx_t *hashcat_ctx)
|
|||||||
event_log_info (hashcat_ctx, "# option: --backend-devices=%s", user_options->backend_devices);
|
event_log_info (hashcat_ctx, "# option: --backend-devices=%s", user_options->backend_devices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (user_options->backend_devices_virtual)
|
||||||
|
{
|
||||||
|
event_log_info (hashcat_ctx, "# option: --backend-devices-virtual=%u", user_options->backend_devices_virtual);
|
||||||
|
}
|
||||||
|
|
||||||
if (user_options->opencl_device_types)
|
if (user_options->opencl_device_types)
|
||||||
{
|
{
|
||||||
event_log_info (hashcat_ctx, "# option: --opencl-device-types=%s", user_options->opencl_device_types);
|
event_log_info (hashcat_ctx, "# option: --opencl-device-types=%s", user_options->opencl_device_types);
|
||||||
@ -3147,6 +3172,7 @@ void user_options_logger (hashcat_ctx_t *hashcat_ctx)
|
|||||||
logfile_top_uint64 (user_options->limit);
|
logfile_top_uint64 (user_options->limit);
|
||||||
logfile_top_uint64 (user_options->skip);
|
logfile_top_uint64 (user_options->skip);
|
||||||
logfile_top_uint (user_options->attack_mode);
|
logfile_top_uint (user_options->attack_mode);
|
||||||
|
logfile_top_uint (user_options->backend_devices_virtual);
|
||||||
logfile_top_uint (user_options->benchmark);
|
logfile_top_uint (user_options->benchmark);
|
||||||
logfile_top_uint (user_options->benchmark_all);
|
logfile_top_uint (user_options->benchmark_all);
|
||||||
logfile_top_uint (user_options->bitmap_max);
|
logfile_top_uint (user_options->bitmap_max);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
from hashlib import pbkdf2_hmac
|
from hashlib import pbkdf2_hmac
|
||||||
|
|
||||||
from Crypto.Cipher import AES
|
from Crypto.Cipher import AES
|
||||||
|
|
||||||
#TODO perhaps load the vault from tools/2hashcat_tests/metamask2hashcat.json similar as in tools/metamask2hashcat.py
|
#TODO perhaps load the vault from tools/2hashcat_tests/metamask2hashcat.json similar as in tools/metamask2hashcat.py
|
||||||
vault = {"data":"R95fzGt4UQ0uwrcrVYnIi4UcSlWn9wlmer+//526ZDwYAp50K82F1u1oacYcdjjhuEvbZnWk/uBG00UkgLLlO3WbINljqmu2QWdDEwjTgo/qWR6MU9d/82rxNiONHQE8UrZ8SV+htVr6XIB0ze3aCV0E+fwI93EeP79ZeDxuOEhuHoiYT0bHWMv5nA48AdluG4DbOo7SrDAWBVCBsEdXsOfYsS3/TIh0a/iFCMX4uhxY2824JwcWp4H36SFWyBYMZCJ3/U4DYFbbjWZtGRthoJlIik5BJq4FLu3Y1jEgza0AWlAvu4MKTEqrYSpUIghfxf1a1f+kPvxsHNq0as0kRwCXu09DObbdsiggbmeoBkxMZiFq0d9ar/3Gon0r3hfc3c124Wlivzbzu1JcZ3wURhLSsUS7b5cfG86aXHJkxmQDA5urBz6lw3bsIvlEUB2ErkQy/zD+cPwCG1Rs/WKt7KNh45lppCUkHccbf+xlpdc8OfUwj01Xp7BdH8LMR7Vx1C4hZCvSdtURVl0VaAMxHDX0MjRkwmqS","iv":"h+BoIf2CQ5BEjaIOShFE7g==","salt":"jfGI3TXguhb8GPnKSXFrMzRk2NCEc131Gt5G3kZr5+s="}
|
vault = {"data":"R95fzGt4UQ0uwrcrVYnIi4UcSlWn9wlmer+//526ZDwYAp50K82F1u1oacYcdjjhuEvbZnWk/uBG00UkgLLlO3WbINljqmu2QWdDEwjTgo/qWR6MU9d/82rxNiONHQE8UrZ8SV+htVr6XIB0ze3aCV0E+fwI93EeP79ZeDxuOEhuHoiYT0bHWMv5nA48AdluG4DbOo7SrDAWBVCBsEdXsOfYsS3/TIh0a/iFCMX4uhxY2824JwcWp4H36SFWyBYMZCJ3/U4DYFbbjWZtGRthoJlIik5BJq4FLu3Y1jEgza0AWlAvu4MKTEqrYSpUIghfxf1a1f+kPvxsHNq0as0kRwCXu09DObbdsiggbmeoBkxMZiFq0d9ar/3Gon0r3hfc3c124Wlivzbzu1JcZ3wURhLSsUS7b5cfG86aXHJkxmQDA5urBz6lw3bsIvlEUB2ErkQy/zD+cPwCG1Rs/WKt7KNh45lppCUkHccbf+xlpdc8OfUwj01Xp7BdH8LMR7Vx1C4hZCvSdtURVl0VaAMxHDX0MjRkwmqS","iv":"h+BoIf2CQ5BEjaIOShFE7g==","salt":"jfGI3TXguhb8GPnKSXFrMzRk2NCEc131Gt5G3kZr5+s="}
|
||||||
@ -38,4 +38,4 @@ print("Partially encrypted message (32 bytes):", plaintext.decode())
|
|||||||
|
|
||||||
cipher = AES.new(key, AES.MODE_GCM, nonce=iv)
|
cipher = AES.new(key, AES.MODE_GCM, nonce=iv)
|
||||||
plaintext = cipher.decrypt(ciphertext[:450])
|
plaintext = cipher.decrypt(ciphertext[:450])
|
||||||
print("Partially encrypted message (450 bytes):", plaintext.decode())
|
print("Partially encrypted message (450 bytes):", plaintext.decode())
|
||||||
|
@ -57,7 +57,7 @@ sub module_generate_hash
|
|||||||
# TODO now the data is all ASCII 'a', would be better to have it mimic the same structure as the reference data:
|
# TODO now the data is all ASCII 'a', would be better to have it mimic the same structure as the reference data:
|
||||||
# [{"type":"HD Key Tree","data":{"mnemonic":[112,97,121,109,101,110,116,32,117,112,115,101,116,32,109,101,116,97,108,32,99,104,97,112,116,101,114,32,114,117,110,32,97,100,109,105,116,32,109,101,97,115,117,114,101,32,114,101,109,105,110,100,32,115,117,112,112,108,121,32,104,111,112,101,32,101,110,101,109,121,32,104,101,100,103,101,104,111,103],"numberOfAccounts":1,"hdPath":"m/44'/60'/0'/0"}}]
|
# [{"type":"HD Key Tree","data":{"mnemonic":[112,97,121,109,101,110,116,32,117,112,115,101,116,32,109,101,116,97,108,32,99,104,97,112,116,101,114,32,114,117,110,32,97,100,109,105,116,32,109,101,97,115,117,114,101,32,114,101,109,105,110,100,32,115,117,112,112,108,121,32,104,111,112,101,32,101,110,101,109,121,32,104,101,100,103,101,104,111,103],"numberOfAccounts":1,"hdPath":"m/44'/60'/0'/0"}}]
|
||||||
# generated from tools/2hashcat_tests/metamask2hashcat-test.py
|
# generated from tools/2hashcat_tests/metamask2hashcat-test.py
|
||||||
$pt = "a" x ($ct_min_len + int (rand ($ct_max_len - $ct_min_len)) + 1);
|
$pt = "a" x ($ct_min_len + int (rand ($ct_max_len - $ct_min_len)) + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $aes = Crypt::AuthEnc::GCM->new ("AES", $key, $iv_bin);
|
my $aes = Crypt::AuthEnc::GCM->new ("AES", $key, $iv_bin);
|
||||||
|
@ -165,12 +165,26 @@ Tesla_P4 ALIAS_nv_sm50_or_higher
|
|||||||
Tesla_P40 ALIAS_nv_sm50_or_higher
|
Tesla_P40 ALIAS_nv_sm50_or_higher
|
||||||
Tesla_P100 ALIAS_nv_sm50_or_higher
|
Tesla_P100 ALIAS_nv_sm50_or_higher
|
||||||
Tesla_V100 ALIAS_nv_sm50_or_higher
|
Tesla_V100 ALIAS_nv_sm50_or_higher
|
||||||
|
Tesla_T4 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
|
L4 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
|
A100-SXM4-40GB ALIAS_nv_sm50_or_higher
|
||||||
|
A100-SXM4-80GB ALIAS_nv_sm50_or_higher
|
||||||
|
A100-PCIE-40GB ALIAS_nv_sm50_or_higher
|
||||||
|
A100-PCIE-80GB ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
Quadro_M2000 ALIAS_nv_sm50_or_higher
|
Quadro_M2000 ALIAS_nv_sm50_or_higher
|
||||||
Quadro_M4000 ALIAS_nv_sm50_or_higher
|
Quadro_M4000 ALIAS_nv_sm50_or_higher
|
||||||
Quadro_M5000 ALIAS_nv_sm50_or_higher
|
Quadro_M5000 ALIAS_nv_sm50_or_higher
|
||||||
Quadro_M6000 ALIAS_nv_sm50_or_higher
|
Quadro_M6000 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
|
Quadro_RTX_4000 ALIAS_nv_sm50_or_higher
|
||||||
|
Quadro_RTX_5000 ALIAS_nv_sm50_or_higher
|
||||||
|
Quadro_RTX_6000 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
|
RTX_A6000 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
TITAN_X ALIAS_nv_sm50_or_higher
|
TITAN_X ALIAS_nv_sm50_or_higher
|
||||||
TITAN_Xp ALIAS_nv_sm50_or_higher
|
TITAN_Xp ALIAS_nv_sm50_or_higher
|
||||||
TITAN_V ALIAS_nv_sm50_or_higher
|
TITAN_V ALIAS_nv_sm50_or_higher
|
||||||
@ -240,6 +254,8 @@ GeForce_RTX_4070_Ti ALIAS_nv_sm50_or_higher
|
|||||||
GeForce_RTX_4080 ALIAS_nv_sm50_or_higher
|
GeForce_RTX_4080 ALIAS_nv_sm50_or_higher
|
||||||
GeForce_RTX_4090 ALIAS_nv_sm50_or_higher
|
GeForce_RTX_4090 ALIAS_nv_sm50_or_higher
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
## Unmapped GPU
|
## Unmapped GPU
|
||||||
##
|
##
|
||||||
|
@ -20,6 +20,7 @@ Each file in this folder with the filename suffix .hctune will be automatically
|
|||||||
- Invalid lines are ignored
|
- Invalid lines are ignored
|
||||||
- The Device-Name is the OpenCL Device-Name. It's shown on hashcat startup.
|
- The Device-Name is the OpenCL Device-Name. It's shown on hashcat startup.
|
||||||
- If the device contains spaces, replace all spaces with _ character.
|
- If the device contains spaces, replace all spaces with _ character.
|
||||||
|
- Device Names prefixed with 'NVIDIA' will be matched with or without 'NVIDIA' present in the alias. e.g. 'NVIDIA_Tesla_T4' vs 'Tesla_T4'
|
||||||
- The Device-Name can be assigned an alias. This is useful if many devices share the same chip
|
- The Device-Name can be assigned an alias. This is useful if many devices share the same chip
|
||||||
- If you assign an alias, make sure to not use the devices name directly
|
- If you assign an alias, make sure to not use the devices name directly
|
||||||
- There's also a hard-wired Device-Name which matches all device types called:
|
- There's also a hard-wired Device-Name which matches all device types called:
|
||||||
|
Loading…
Reference in New Issue
Block a user