|
|
|
@ -96,7 +96,9 @@ extern void (*get_next_word_func) (char *, u32, u32 *, u32 *);
|
|
|
|
|
extern const unsigned int full01;
|
|
|
|
|
extern const unsigned int full80;
|
|
|
|
|
|
|
|
|
|
static const char *PROGNAME = "hashcat";
|
|
|
|
|
extern const int DEFAULT_BENCHMARK_ALGORITHMS_BUF[];
|
|
|
|
|
|
|
|
|
|
static const char PROGNAME[] = "hashcat";
|
|
|
|
|
|
|
|
|
|
const int comptime = COMPTIME;
|
|
|
|
|
|
|
|
|
@ -104,158 +106,6 @@ const int comptime = COMPTIME;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// benchmark
|
|
|
|
|
#define BENCHMARK 0
|
|
|
|
|
#define NUM_DEFAULT_BENCHMARK_ALGORITHMS 146
|
|
|
|
|
static uint default_benchmark_algorithms[NUM_DEFAULT_BENCHMARK_ALGORITHMS] =
|
|
|
|
|
{
|
|
|
|
|
900,
|
|
|
|
|
0,
|
|
|
|
|
5100,
|
|
|
|
|
100,
|
|
|
|
|
1400,
|
|
|
|
|
10800,
|
|
|
|
|
1700,
|
|
|
|
|
5000,
|
|
|
|
|
10100,
|
|
|
|
|
6000,
|
|
|
|
|
6100,
|
|
|
|
|
6900,
|
|
|
|
|
11700,
|
|
|
|
|
11800,
|
|
|
|
|
14000,
|
|
|
|
|
14100,
|
|
|
|
|
400,
|
|
|
|
|
8900,
|
|
|
|
|
11900,
|
|
|
|
|
12000,
|
|
|
|
|
10900,
|
|
|
|
|
12100,
|
|
|
|
|
23,
|
|
|
|
|
2500,
|
|
|
|
|
5300,
|
|
|
|
|
5400,
|
|
|
|
|
5500,
|
|
|
|
|
5600,
|
|
|
|
|
7300,
|
|
|
|
|
7500,
|
|
|
|
|
13100,
|
|
|
|
|
8300,
|
|
|
|
|
11100,
|
|
|
|
|
11200,
|
|
|
|
|
11400,
|
|
|
|
|
121,
|
|
|
|
|
2611,
|
|
|
|
|
2711,
|
|
|
|
|
2811,
|
|
|
|
|
8400,
|
|
|
|
|
13900,
|
|
|
|
|
11,
|
|
|
|
|
2612,
|
|
|
|
|
7900,
|
|
|
|
|
21,
|
|
|
|
|
11000,
|
|
|
|
|
124,
|
|
|
|
|
10000,
|
|
|
|
|
3711,
|
|
|
|
|
7600,
|
|
|
|
|
12,
|
|
|
|
|
131,
|
|
|
|
|
132,
|
|
|
|
|
1731,
|
|
|
|
|
200,
|
|
|
|
|
300,
|
|
|
|
|
3100,
|
|
|
|
|
112,
|
|
|
|
|
12300,
|
|
|
|
|
8000,
|
|
|
|
|
141,
|
|
|
|
|
1441,
|
|
|
|
|
1600,
|
|
|
|
|
12600,
|
|
|
|
|
1421,
|
|
|
|
|
101,
|
|
|
|
|
111,
|
|
|
|
|
1711,
|
|
|
|
|
3000,
|
|
|
|
|
1000,
|
|
|
|
|
1100,
|
|
|
|
|
2100,
|
|
|
|
|
12800,
|
|
|
|
|
1500,
|
|
|
|
|
12400,
|
|
|
|
|
500,
|
|
|
|
|
3200,
|
|
|
|
|
7400,
|
|
|
|
|
1800,
|
|
|
|
|
122,
|
|
|
|
|
1722,
|
|
|
|
|
7100,
|
|
|
|
|
6300,
|
|
|
|
|
6700,
|
|
|
|
|
6400,
|
|
|
|
|
6500,
|
|
|
|
|
2400,
|
|
|
|
|
2410,
|
|
|
|
|
5700,
|
|
|
|
|
9200,
|
|
|
|
|
9300,
|
|
|
|
|
22,
|
|
|
|
|
501,
|
|
|
|
|
5800,
|
|
|
|
|
8100,
|
|
|
|
|
8500,
|
|
|
|
|
7200,
|
|
|
|
|
9900,
|
|
|
|
|
7700,
|
|
|
|
|
7800,
|
|
|
|
|
10300,
|
|
|
|
|
8600,
|
|
|
|
|
8700,
|
|
|
|
|
9100,
|
|
|
|
|
133,
|
|
|
|
|
13500,
|
|
|
|
|
11600,
|
|
|
|
|
13600,
|
|
|
|
|
12500,
|
|
|
|
|
13000,
|
|
|
|
|
13200,
|
|
|
|
|
13300,
|
|
|
|
|
6211,
|
|
|
|
|
6221,
|
|
|
|
|
6231,
|
|
|
|
|
6241,
|
|
|
|
|
13711,
|
|
|
|
|
13721,
|
|
|
|
|
13731,
|
|
|
|
|
13741,
|
|
|
|
|
13751,
|
|
|
|
|
13761,
|
|
|
|
|
8800,
|
|
|
|
|
12900,
|
|
|
|
|
12200,
|
|
|
|
|
9700,
|
|
|
|
|
9710,
|
|
|
|
|
9800,
|
|
|
|
|
9810,
|
|
|
|
|
9400,
|
|
|
|
|
9500,
|
|
|
|
|
9600,
|
|
|
|
|
10400,
|
|
|
|
|
10410,
|
|
|
|
|
10500,
|
|
|
|
|
10600,
|
|
|
|
|
10700,
|
|
|
|
|
9000,
|
|
|
|
|
5200,
|
|
|
|
|
6800,
|
|
|
|
|
6600,
|
|
|
|
|
8200,
|
|
|
|
|
11300,
|
|
|
|
|
12700,
|
|
|
|
|
13400,
|
|
|
|
|
125
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// outfile_check
|
|
|
|
|
#define OUTFILE_CHECK_TIMER 5
|
|
|
|
@ -5887,9 +5737,9 @@ int main (int argc, char **argv)
|
|
|
|
|
uint algorithm_pos = 0;
|
|
|
|
|
uint algorithm_max = 1;
|
|
|
|
|
|
|
|
|
|
uint *algorithms = default_benchmark_algorithms;
|
|
|
|
|
const int *algorithms = DEFAULT_BENCHMARK_ALGORITHMS_BUF;
|
|
|
|
|
|
|
|
|
|
if (benchmark == 1 && hash_mode_chgd == 0) algorithm_max = NUM_DEFAULT_BENCHMARK_ALGORITHMS;
|
|
|
|
|
if (benchmark == 1 && hash_mode_chgd == 0) algorithm_max = DEFAULT_BENCHMARK_ALGORITHMS_CNT;
|
|
|
|
|
|
|
|
|
|
for (algorithm_pos = 0; algorithm_pos < algorithm_max; algorithm_pos++)
|
|
|
|
|
{
|
|
|
|
@ -6003,77 +5853,8 @@ int main (int argc, char **argv)
|
|
|
|
|
* word len
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
uint pw_min = PW_MIN;
|
|
|
|
|
uint pw_max = PW_MAX;
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 125: if (pw_max > 32) pw_max = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 400: if (pw_max > 40) pw_max = 40;
|
|
|
|
|
break;
|
|
|
|
|
case 500: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 1500: if (pw_max > 8) pw_max = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 1600: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 1800: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 2100: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 2500: if (pw_min < 8) pw_min = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 3000: if (pw_max > 7) pw_max = 7;
|
|
|
|
|
break;
|
|
|
|
|
case 5200: if (pw_max > 24) pw_max = 24;
|
|
|
|
|
break;
|
|
|
|
|
case 5800: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 6300: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 7400: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 7700: if (pw_max > 8) pw_max = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 7900: if (pw_max > 48) pw_max = 48;
|
|
|
|
|
break;
|
|
|
|
|
case 8500: if (pw_max > 8) pw_max = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 8600: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9710: pw_min = 5;
|
|
|
|
|
pw_max = 5;
|
|
|
|
|
break;
|
|
|
|
|
case 9810: pw_min = 5;
|
|
|
|
|
pw_max = 5;
|
|
|
|
|
break;
|
|
|
|
|
case 10410: pw_min = 5;
|
|
|
|
|
pw_max = 5;
|
|
|
|
|
break;
|
|
|
|
|
case 10300: if (pw_max < 3) pw_min = 3;
|
|
|
|
|
if (pw_max > 40) pw_max = 40;
|
|
|
|
|
break;
|
|
|
|
|
case 10500: if (pw_max < 3) pw_min = 3;
|
|
|
|
|
if (pw_max > 40) pw_max = 40;
|
|
|
|
|
break;
|
|
|
|
|
case 10700: if (pw_max > 16) pw_max = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 11300: if (pw_max > 40) pw_max = 40;
|
|
|
|
|
break;
|
|
|
|
|
case 11600: if (pw_max > 32) pw_max = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 12500: if (pw_max > 20) pw_max = 20;
|
|
|
|
|
break;
|
|
|
|
|
case 12800: if (pw_max > 24) pw_max = 24;
|
|
|
|
|
break;
|
|
|
|
|
case 14000: if (pw_min < 8) pw_min = 8;
|
|
|
|
|
if (pw_max > 8) pw_max = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 14100: if (pw_min < 24) pw_min = 24;
|
|
|
|
|
if (pw_max > 24) pw_max = 24;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
uint pw_min = hashconfig_general_pw_min (hashconfig);
|
|
|
|
|
uint pw_max = hashconfig_general_pw_max (hashconfig);
|
|
|
|
|
|
|
|
|
|
if (hashconfig->attack_exec == ATTACK_EXEC_INSIDE_KERNEL)
|
|
|
|
|
{
|
|
|
|
@ -6692,394 +6473,9 @@ int main (int argc, char **argv)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (hashconfig->is_salted)
|
|
|
|
|
{
|
|
|
|
|
hashes_buf[0].salt->salt_len = 8;
|
|
|
|
|
|
|
|
|
|
// special salt handling
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 1500: hashes_buf[0].salt->salt_len = 2;
|
|
|
|
|
hashes_buf[0].salt->salt_buf[0] = 388; // pure magic
|
|
|
|
|
break;
|
|
|
|
|
case 1731: hashes_buf[0].salt->salt_len = 4;
|
|
|
|
|
break;
|
|
|
|
|
case 2410: hashes_buf[0].salt->salt_len = 4;
|
|
|
|
|
break;
|
|
|
|
|
case 2500: memcpy (hashes_buf[0].salt->salt_buf, "hashcat.net", 11);
|
|
|
|
|
break;
|
|
|
|
|
case 3100: hashes_buf[0].salt->salt_len = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 5000: hashes_buf[0].salt->keccak_mdlen = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 5800: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 6800: hashes_buf[0].salt->salt_len = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 8400: hashes_buf[0].salt->salt_len = 40;
|
|
|
|
|
break;
|
|
|
|
|
case 8800: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 8900: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
hashes_buf[0].salt->scrypt_N = 1024;
|
|
|
|
|
hashes_buf[0].salt->scrypt_r = 1;
|
|
|
|
|
hashes_buf[0].salt->scrypt_p = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 9100: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9300: hashes_buf[0].salt->salt_len = 14;
|
|
|
|
|
hashes_buf[0].salt->scrypt_N = 16384;
|
|
|
|
|
hashes_buf[0].salt->scrypt_r = 1;
|
|
|
|
|
hashes_buf[0].salt->scrypt_p = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 9400: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9500: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9600: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9700: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9710: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9720: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9800: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9810: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 9820: hashes_buf[0].salt->salt_len = 16;
|
|
|
|
|
break;
|
|
|
|
|
case 10300: hashes_buf[0].salt->salt_len = 12;
|
|
|
|
|
break;
|
|
|
|
|
case 11500: hashes_buf[0].salt->salt_len = 4;
|
|
|
|
|
break;
|
|
|
|
|
case 11600: hashes_buf[0].salt->salt_len = 4;
|
|
|
|
|
break;
|
|
|
|
|
case 12400: hashes_buf[0].salt->salt_len = 4;
|
|
|
|
|
break;
|
|
|
|
|
case 12500: hashes_buf[0].salt->salt_len = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 12600: hashes_buf[0].salt->salt_len = 64;
|
|
|
|
|
break;
|
|
|
|
|
case 14000: hashes_buf[0].salt->salt_len = 8;
|
|
|
|
|
break;
|
|
|
|
|
case 14100: hashes_buf[0].salt->salt_len = 8;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// special esalt handling
|
|
|
|
|
hashconfig_benchmark_defaults (hashconfig, hashes_buf[0].salt, hashes_buf[0].esalt);
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 2500: ((wpa_t *) hashes_buf[0].esalt)->eapol_size = 128;
|
|
|
|
|
break;
|
|
|
|
|
case 5300: ((ikepsk_t *) hashes_buf[0].esalt)->nr_len = 1;
|
|
|
|
|
((ikepsk_t *) hashes_buf[0].esalt)->msg_len = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 5400: ((ikepsk_t *) hashes_buf[0].esalt)->nr_len = 1;
|
|
|
|
|
((ikepsk_t *) hashes_buf[0].esalt)->msg_len = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 5500: ((netntlm_t *) hashes_buf[0].esalt)->user_len = 1;
|
|
|
|
|
((netntlm_t *) hashes_buf[0].esalt)->domain_len = 1;
|
|
|
|
|
((netntlm_t *) hashes_buf[0].esalt)->srvchall_len = 1;
|
|
|
|
|
((netntlm_t *) hashes_buf[0].esalt)->clichall_len = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 5600: ((netntlm_t *) hashes_buf[0].esalt)->user_len = 1;
|
|
|
|
|
((netntlm_t *) hashes_buf[0].esalt)->domain_len = 1;
|
|
|
|
|
((netntlm_t *) hashes_buf[0].esalt)->srvchall_len = 1;
|
|
|
|
|
((netntlm_t *) hashes_buf[0].esalt)->clichall_len = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 7300: ((rakp_t *) hashes_buf[0].esalt)->salt_len = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 10400: ((pdf_t *) hashes_buf[0].esalt)->id_len = 16;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->o_len = 32;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->u_len = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 10410: ((pdf_t *) hashes_buf[0].esalt)->id_len = 16;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->o_len = 32;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->u_len = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 10420: ((pdf_t *) hashes_buf[0].esalt)->id_len = 16;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->o_len = 32;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->u_len = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 10500: ((pdf_t *) hashes_buf[0].esalt)->id_len = 16;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->o_len = 32;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->u_len = 32;
|
|
|
|
|
break;
|
|
|
|
|
case 10600: ((pdf_t *) hashes_buf[0].esalt)->id_len = 16;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->o_len = 127;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->u_len = 127;
|
|
|
|
|
break;
|
|
|
|
|
case 10700: ((pdf_t *) hashes_buf[0].esalt)->id_len = 16;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->o_len = 127;
|
|
|
|
|
((pdf_t *) hashes_buf[0].esalt)->u_len = 127;
|
|
|
|
|
break;
|
|
|
|
|
case 11600: ((seven_zip_t *) hashes_buf[0].esalt)->iv_len = 16;
|
|
|
|
|
((seven_zip_t *) hashes_buf[0].esalt)->data_len = 112;
|
|
|
|
|
((seven_zip_t *) hashes_buf[0].esalt)->unpack_size = 112;
|
|
|
|
|
break;
|
|
|
|
|
case 13400: ((keepass_t *) hashes_buf[0].esalt)->version = 2;
|
|
|
|
|
break;
|
|
|
|
|
case 13500: ((pstoken_t *) hashes_buf[0].esalt)->salt_len = 113;
|
|
|
|
|
break;
|
|
|
|
|
case 13600: ((zip2_t *) hashes_buf[0].esalt)->salt_len = 16;
|
|
|
|
|
((zip2_t *) hashes_buf[0].esalt)->data_len = 32;
|
|
|
|
|
((zip2_t *) hashes_buf[0].esalt)->mode = 3;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// set hashfile
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 5200: data.hashfile = mystrdup ("hashcat.psafe3");
|
|
|
|
|
break;
|
|
|
|
|
case 5300: data.hashfile = mystrdup ("hashcat.ikemd5");
|
|
|
|
|
break;
|
|
|
|
|
case 5400: data.hashfile = mystrdup ("hashcat.ikesha1");
|
|
|
|
|
break;
|
|
|
|
|
case 6211: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6212: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6213: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6221: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6222: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6223: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6231: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6232: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6233: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6241: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6242: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6243: data.hashfile = mystrdup ("hashcat.tc");
|
|
|
|
|
break;
|
|
|
|
|
case 6600: data.hashfile = mystrdup ("hashcat.agilekey");
|
|
|
|
|
break;
|
|
|
|
|
case 8200: data.hashfile = mystrdup ("hashcat.cloudkey");
|
|
|
|
|
break;
|
|
|
|
|
case 9000: data.hashfile = mystrdup ("hashcat.psafe2");
|
|
|
|
|
break;
|
|
|
|
|
case 13711: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13712: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13713: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13721: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13722: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13723: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13731: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13732: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13733: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13741: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13742: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13743: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13751: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13752: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13753: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13761: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13762: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
case 13763: data.hashfile = mystrdup ("hashcat.vc");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// set default iterations
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 400: hashes_buf[0].salt->salt_iter = ROUNDS_PHPASS;
|
|
|
|
|
break;
|
|
|
|
|
case 500: hashes_buf[0].salt->salt_iter = ROUNDS_MD5CRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 501: hashes_buf[0].salt->salt_iter = ROUNDS_MD5CRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 1600: hashes_buf[0].salt->salt_iter = ROUNDS_MD5CRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 1800: hashes_buf[0].salt->salt_iter = ROUNDS_SHA512CRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 2100: hashes_buf[0].salt->salt_iter = ROUNDS_DCC2;
|
|
|
|
|
break;
|
|
|
|
|
case 2500: hashes_buf[0].salt->salt_iter = ROUNDS_WPA2;
|
|
|
|
|
break;
|
|
|
|
|
case 3200: hashes_buf[0].salt->salt_iter = ROUNDS_BCRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 5200: hashes_buf[0].salt->salt_iter = ROUNDS_PSAFE3;
|
|
|
|
|
break;
|
|
|
|
|
case 5800: hashes_buf[0].salt->salt_iter = ROUNDS_ANDROIDPIN - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 6211: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_2K;
|
|
|
|
|
break;
|
|
|
|
|
case 6212: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_2K;
|
|
|
|
|
break;
|
|
|
|
|
case 6213: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_2K;
|
|
|
|
|
break;
|
|
|
|
|
case 6221: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6222: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6223: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6231: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6232: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6233: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6241: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6242: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6243: hashes_buf[0].salt->salt_iter = ROUNDS_TRUECRYPT_1K;
|
|
|
|
|
break;
|
|
|
|
|
case 6300: hashes_buf[0].salt->salt_iter = ROUNDS_MD5CRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 6400: hashes_buf[0].salt->salt_iter = ROUNDS_SHA256AIX;
|
|
|
|
|
break;
|
|
|
|
|
case 6500: hashes_buf[0].salt->salt_iter = ROUNDS_SHA512AIX;
|
|
|
|
|
break;
|
|
|
|
|
case 6700: hashes_buf[0].salt->salt_iter = ROUNDS_SHA1AIX;
|
|
|
|
|
break;
|
|
|
|
|
case 6600: hashes_buf[0].salt->salt_iter = ROUNDS_AGILEKEY;
|
|
|
|
|
break;
|
|
|
|
|
case 6800: hashes_buf[0].salt->salt_iter = ROUNDS_LASTPASS;
|
|
|
|
|
break;
|
|
|
|
|
case 7100: hashes_buf[0].salt->salt_iter = ROUNDS_SHA512OSX;
|
|
|
|
|
break;
|
|
|
|
|
case 7200: hashes_buf[0].salt->salt_iter = ROUNDS_GRUB;
|
|
|
|
|
break;
|
|
|
|
|
case 7400: hashes_buf[0].salt->salt_iter = ROUNDS_SHA256CRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 7900: hashes_buf[0].salt->salt_iter = ROUNDS_DRUPAL7;
|
|
|
|
|
break;
|
|
|
|
|
case 8200: hashes_buf[0].salt->salt_iter = ROUNDS_CLOUDKEY;
|
|
|
|
|
break;
|
|
|
|
|
case 8300: hashes_buf[0].salt->salt_iter = ROUNDS_NSEC3;
|
|
|
|
|
break;
|
|
|
|
|
case 8800: hashes_buf[0].salt->salt_iter = ROUNDS_ANDROIDFDE;
|
|
|
|
|
break;
|
|
|
|
|
case 8900: hashes_buf[0].salt->salt_iter = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 9000: hashes_buf[0].salt->salt_iter = ROUNDS_PSAFE2;
|
|
|
|
|
break;
|
|
|
|
|
case 9100: hashes_buf[0].salt->salt_iter = ROUNDS_LOTUS8;
|
|
|
|
|
break;
|
|
|
|
|
case 9200: hashes_buf[0].salt->salt_iter = ROUNDS_CISCO8;
|
|
|
|
|
break;
|
|
|
|
|
case 9300: hashes_buf[0].salt->salt_iter = 1;
|
|
|
|
|
break;
|
|
|
|
|
case 9400: hashes_buf[0].salt->salt_iter = ROUNDS_OFFICE2007;
|
|
|
|
|
break;
|
|
|
|
|
case 9500: hashes_buf[0].salt->salt_iter = ROUNDS_OFFICE2010;
|
|
|
|
|
break;
|
|
|
|
|
case 9600: hashes_buf[0].salt->salt_iter = ROUNDS_OFFICE2013;
|
|
|
|
|
break;
|
|
|
|
|
case 10000: hashes_buf[0].salt->salt_iter = ROUNDS_DJANGOPBKDF2;
|
|
|
|
|
break;
|
|
|
|
|
case 10300: hashes_buf[0].salt->salt_iter = ROUNDS_SAPH_SHA1 - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 10500: hashes_buf[0].salt->salt_iter = ROUNDS_PDF14;
|
|
|
|
|
break;
|
|
|
|
|
case 10700: hashes_buf[0].salt->salt_iter = ROUNDS_PDF17L8;
|
|
|
|
|
break;
|
|
|
|
|
case 10900: hashes_buf[0].salt->salt_iter = ROUNDS_PBKDF2_SHA256 - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 11300: hashes_buf[0].salt->salt_iter = ROUNDS_BITCOIN_WALLET - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 11600: hashes_buf[0].salt->salt_iter = ROUNDS_SEVEN_ZIP;
|
|
|
|
|
break;
|
|
|
|
|
case 11900: hashes_buf[0].salt->salt_iter = ROUNDS_PBKDF2_MD5 - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12000: hashes_buf[0].salt->salt_iter = ROUNDS_PBKDF2_SHA1 - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12100: hashes_buf[0].salt->salt_iter = ROUNDS_PBKDF2_SHA512 - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12200: hashes_buf[0].salt->salt_iter = ROUNDS_ECRYPTFS - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12300: hashes_buf[0].salt->salt_iter = ROUNDS_ORACLET - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12400: hashes_buf[0].salt->salt_iter = ROUNDS_BSDICRYPT - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12500: hashes_buf[0].salt->salt_iter = ROUNDS_RAR3;
|
|
|
|
|
break;
|
|
|
|
|
case 12700: hashes_buf[0].salt->salt_iter = ROUNDS_MYWALLET;
|
|
|
|
|
break;
|
|
|
|
|
case 12800: hashes_buf[0].salt->salt_iter = ROUNDS_MS_DRSR - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 12900: hashes_buf[0].salt->salt_iter = ROUNDS_ANDROIDFDE_SAMSUNG - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 13000: hashes_buf[0].salt->salt_iter = ROUNDS_RAR5 - 1;
|
|
|
|
|
break;
|
|
|
|
|
case 13200: hashes_buf[0].salt->salt_iter = ROUNDS_AXCRYPT;
|
|
|
|
|
break;
|
|
|
|
|
case 13400: hashes_buf[0].salt->salt_iter = ROUNDS_KEEPASS;
|
|
|
|
|
break;
|
|
|
|
|
case 13600: hashes_buf[0].salt->salt_iter = ROUNDS_ZIP2;
|
|
|
|
|
break;
|
|
|
|
|
case 13711: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_655331;
|
|
|
|
|
break;
|
|
|
|
|
case 13712: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_655331;
|
|
|
|
|
break;
|
|
|
|
|
case 13713: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_655331;
|
|
|
|
|
break;
|
|
|
|
|
case 13721: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13722: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13723: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13731: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13732: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13733: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13741: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_327661;
|
|
|
|
|
break;
|
|
|
|
|
case 13742: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_327661;
|
|
|
|
|
break;
|
|
|
|
|
case 13743: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_327661;
|
|
|
|
|
break;
|
|
|
|
|
case 13751: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13752: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13753: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_500000;
|
|
|
|
|
break;
|
|
|
|
|
case 13761: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_200000;
|
|
|
|
|
break;
|
|
|
|
|
case 13762: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_200000;
|
|
|
|
|
break;
|
|
|
|
|
case 13763: hashes_buf[0].salt->salt_iter = ROUNDS_VERACRYPT_200000;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
data.hashfile = "-";
|
|
|
|
|
|
|
|
|
|
hashes_cnt = 1;
|
|
|
|
|
}
|
|
|
|
@ -11815,7 +11211,7 @@ int main (int argc, char **argv)
|
|
|
|
|
|
|
|
|
|
increment = 1;
|
|
|
|
|
|
|
|
|
|
maskcnt = 1;
|
|
|
|
|
maskcnt = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@ -11824,23 +11220,12 @@ int main (int argc, char **argv)
|
|
|
|
|
* generate full masks and charsets
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
masks = (char **) mymalloc (sizeof (char *));
|
|
|
|
|
mask = hashconfig_benchmark_mask (hashconfig);
|
|
|
|
|
|
|
|
|
|
switch (hashconfig->hash_mode)
|
|
|
|
|
{
|
|
|
|
|
case 1731: pw_min = 5;
|
|
|
|
|
pw_max = 5;
|
|
|
|
|
mask = mystrdup ("?b?b?b?b?b");
|
|
|
|
|
break;
|
|
|
|
|
case 12500: pw_min = 5;
|
|
|
|
|
pw_max = 5;
|
|
|
|
|
mask = mystrdup ("?b?b?b?b?b");
|
|
|
|
|
break;
|
|
|
|
|
default: pw_min = 7;
|
|
|
|
|
pw_max = 7;
|
|
|
|
|
mask = mystrdup ("?b?b?b?b?b?b?b");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
pw_min = mp_get_length (mask);
|
|
|
|
|
pw_max = pw_min;
|
|
|
|
|
|
|
|
|
|
masks = (char **) mymalloc (sizeof (char *));
|
|
|
|
|
|
|
|
|
|
maskcnt = 1;
|
|
|
|
|
|
|
|
|
|