1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-12-22 22:58:30 +00:00

Add -m 13400 module

This commit is contained in:
jsteube 2019-01-27 10:26:55 +01:00
parent 68736ff7a1
commit 53f7f4c09d
2 changed files with 0 additions and 193 deletions

View File

@ -78,29 +78,6 @@ typedef struct ikepsk
} ikepsk_t;
typedef struct keepass
{
u32 version;
u32 algorithm;
/* key-file handling */
u32 keyfile_len;
u32 keyfile[8];
u32 final_random_seed[8];
u32 transf_random_seed[8];
u32 enc_iv[4];
u32 contents_hash[8];
/* specific to version 1 */
u32 contents_len;
u32 contents[75000];
/* specific to version 2 */
u32 expected_bytes[8];
} keepass_t;
typedef struct pbkdf2_md5
{
u32 salt_buf[16];
@ -607,12 +584,6 @@ typedef struct axcrypt_tmp
} axcrypt_tmp_t;
typedef struct keepass_tmp
{
u32 tmp_digest[8];
} keepass_tmp_t;
typedef struct apple_secure_notes_tmp
{
u32 ipad[8];
@ -856,7 +827,6 @@ typedef enum kern_type
KERN_TYPE_ANDROIDFDE_SAMSUNG = 12900,
KERN_TYPE_AXCRYPT = 13200,
KERN_TYPE_SHA1_AXCRYPT = 13300,
KERN_TYPE_KEEPASS = 13400,
KERN_TYPE_PSTOKEN = 13500,
KERN_TYPE_ZIP2 = 13600,
KERN_TYPE_WIN8PHONE = 13800,
@ -1072,7 +1042,6 @@ int ms_drsr_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_bu
int androidfde_samsung_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);
int axcrypt_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);
int sha1axcrypt_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);
int keepass_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);
int pstoken_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);
int zip2_parse_hash (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);
int veracrypt_parse_hash_200000 (u8 *input_buf, u32 input_len, hash_t *hash_buf, MAYBE_UNUSED hashconfig_t *hashconfig);

View File

@ -193,7 +193,6 @@
" 12700 | Blockchain, My Wallet | Password Managers",
" 15200 | Blockchain, My Wallet, V2 | Password Managers",
" 16600 | Electrum Wallet (Salt-Type 1-2) | Password Managers",
" 13400 | KeePass 1 (AES/Twofish) and KeePass 2 (AES) | Password Managers",
" 15500 | JKS Java Key Store Private Keys (SHA1) | Password Managers",
" 15600 | Ethereum Wallet, PBKDF2-HMAC-SHA256 | Password Managers",
" 15700 | Ethereum Wallet, SCRYPT | Password Managers",
@ -370,7 +369,6 @@ static const char *ST_HASH_12800 = "v1;PPH1_MD4,54188415275183448824,100,55b530f
static const char *ST_HASH_12900 = "15738301074686823451275227041071157383010746868234512752270410712bc4be900bf96ccf43c9852fff49b5f5874a9f6e7bf301686fa6d98286de151f15738301074686823451275227041071";
static const char *ST_HASH_13200 = "$axcrypt$*1*10467*9a7cd609bb262c738d9f0e4977039b94*ecbe0fd05a96fd2099d88a92eebb76c59d6837dfe55b3631";
static const char *ST_HASH_13300 = "$axcrypt_sha1$b89eaac7e61417341b710b727768294d";
static const char *ST_HASH_13400 = "$keepass$*2*24569*0*c40432355cce7348c48053ceea0a28e7d18859c4ea47e3a799c6300861f64b95*265dafcc42e1537ff42e97e1e283c70014133be0fe2d420b4d24c6d57c9d2207*a00e20a852694c15aabb074d61b902fa*48dd553fb96f7996635f2414bfe6a1a8429ef0ffb71a1752abbef31853172c35*a44ae659958ad7fae8c8952cb83f3cf03fec2371ce22a8bf7fac1e687af2f249*1*64*5a26ea376cc5afc955104c334571d30486acbac512a94b75ca82a9e31dd97bf7";
static const char *ST_HASH_13500 = "24eea51b53d02b4c5ff99bcb05a6847fdb2d9308:4f10a0de76e242040c28e9d3dd15c903343489c79765f9118c098c266b9ff505c95bd75bbe406ff3404849eea73930ad17937c0ba6fc3e7bb6d37362941318938b8af96d1292a310b3fd29a67e411ecb10d30247c99183a16951b3859054d4eba9dcd50709c7b21dee836d7ed195cc6b33317aeb557cc56392dc551faa8d5a0fb42212";
static const char *ST_HASH_13600 = "$zip2$*0*3*0*74705614874758221371566185145124*1605*0**75bf9be92e8ab106ff67*$/zip2$";
static const char *ST_HASH_13711 = "531aca1fa6db5118506320114cb11a9f00dade61720533fc12982b28ec71a1a3856ac6ee44b4acc207c8230352208d5f0dc37bf755bd98830279d6befcb6001cdf025f816a0aa1baf3b9b51be00fadb451ffbe9bdfc381115eeceeef778e29a8761f853b7c99e0ea9ec452ba77677f888ea40a39cf65db74d87147690684e273313dea15ff2039797e112006e5f80f2c5baf2c11eb62cb63cfb45883f8885fc7cd5bdb74ef57ec4fe3cec5c2025364582380366169d9419ac41b6f6e878429239e52538f9698e73700b920e7b58c56a4563f5aa512e334ddc56909ac2a0ad4146833f050edd78b7954e6549d0fa2e3b26ed2a769a6c029bfa4de62d49575acce078ef035e366ec13b6092cb205e481bc822f87972bfbe4a3915fad620c4b8645e96bcc468d5804208ae251a560068a09455657f4539dc7e80637fa85fbce058ffee421a98d85b2ae1118d9bd4f24e1e810627cc9893b7166e199dc91fd7f79740530a472df0948f285293478042b28cd2caef086a6ce9d5f656f97adde7d68924ef477fdf2a0c0b107671a1f94b2906d8fb58114836982e4e130e6944df8b42288512376553a1fa6526f9e46dc19b99bb568b30269d9f5d7db2d70a9aa85371b0ac71a6f6f564aaef26a0508c16bf03934973504a5188de37b18a689a020bc37a54d2863879e12902b43bc71c057fa47cbaac1e0100696af365e8226daeba346";
@ -534,7 +532,6 @@ static const char *HT_12800 = "MS-AzureSync PBKDF2-HMAC-SHA256";
static const char *HT_12900 = "Android FDE (Samsung DEK)";
static const char *HT_13200 = "AxCrypt";
static const char *HT_13300 = "AxCrypt in-memory SHA1";
static const char *HT_13400 = "KeePass 1 (AES/Twofish) and KeePass 2 (AES)";
static const char *HT_13500 = "PeopleSoft PS_TOKEN";
static const char *HT_13600 = "WinZip";
static const char *HT_13800 = "Windows Phone 8+ PIN/password";
@ -624,7 +621,6 @@ static const char *SIGNATURE_DJANGOSHA1 = "sha1$";
static const char *SIGNATURE_DRUPAL7 = "$S$";
static const char *SIGNATURE_ECRYPTFS = "$ecryptfs$";
static const char *SIGNATURE_EPISERVER = "$episerver$";
static const char *SIGNATURE_KEEPASS = "$keepass$";
static const char *SIGNATURE_MD5AIX = "{smd5}";
static const char *SIGNATURE_MD5APR1 = "$apr1$";
static const char *SIGNATURE_MEDIAWIKI_B = "$B$";
@ -14564,8 +14560,6 @@ void hashconfig_benchmark_defaults (hashcat_ctx_t *hashcat_ctx, salt_t *salt, vo
case 11400: ((sip_t *) esalt)->salt_len = 2;
((sip_t *) esalt)->esalt_len = 39;
break;
case 13400: ((keepass_t *) esalt)->version = 2;
break;
case 13500: ((pstoken_t *) esalt)->salt_len = 113;
break;
case 13600: ((zip2_t *) esalt)->salt_len = 16;
@ -14665,8 +14659,6 @@ void hashconfig_benchmark_defaults (hashcat_ctx_t *hashcat_ctx, salt_t *salt, vo
break;
case 13200: salt->salt_iter = ROUNDS_AXCRYPT;
break;
case 13400: salt->salt_iter = ROUNDS_KEEPASS;
break;
case 13600: salt->salt_iter = ROUNDS_ZIP2;
break;
case 13711: salt->salt_iter = ROUNDS_VERACRYPT_655331;
@ -16569,140 +16561,6 @@ int ascii_digest (hashcat_ctx_t *hashcat_ctx, char *out_buf, const int out_size,
digest_buf[2],
digest_buf[3]);
}
else if (hash_mode == 13400)
{
keepass_t *keepasss = (keepass_t *) esalts_buf;
keepass_t *keepass = &keepasss[digest_cur];
u32 version = keepass->version;
u32 rounds = salt.salt_iter;
u32 algorithm = keepass->algorithm;
u32 keyfile_len = keepass->keyfile_len;
u32 *ptr_final_random_seed = (u32 *) keepass->final_random_seed;
u32 *ptr_transf_random_seed = (u32 *) keepass->transf_random_seed;
u32 *ptr_enc_iv = (u32 *) keepass->enc_iv;
u32 *ptr_contents_hash = (u32 *) keepass->contents_hash;
u32 *ptr_keyfile = (u32 *) keepass->keyfile;
// specific to version 2
u32 expected_bytes_len;
u32 *ptr_expected_bytes;
u32 final_random_seed_len;
u32 transf_random_seed_len;
u32 enc_iv_len;
u32 contents_hash_len;
transf_random_seed_len = 8;
enc_iv_len = 4;
contents_hash_len = 8;
final_random_seed_len = 8;
if (version == 1)
final_random_seed_len = 4;
snprintf (out_buf, out_size, "%s*%u*%u*%u",
SIGNATURE_KEEPASS,
version,
rounds,
algorithm);
char *ptr_data = out_buf;
ptr_data += strlen(out_buf);
*ptr_data = '*';
ptr_data++;
for (u32 i = 0; i < final_random_seed_len; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_final_random_seed[i]);
*ptr_data = '*';
ptr_data++;
for (u32 i = 0; i < transf_random_seed_len; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_transf_random_seed[i]);
*ptr_data = '*';
ptr_data++;
for (u32 i = 0; i < enc_iv_len; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_enc_iv[i]);
*ptr_data = '*';
ptr_data++;
if (version == 1)
{
u32 contents_len = keepass->contents_len;
u32 *ptr_contents = (u32 *) keepass->contents;
for (u32 i = 0; i < contents_hash_len; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_contents_hash[i]);
*ptr_data = '*';
ptr_data++;
// inline flag
*ptr_data = '1';
ptr_data++;
*ptr_data = '*';
ptr_data++;
char ptr_contents_len[10] = { 0 };
sprintf ((char*) ptr_contents_len, "%u", contents_len);
sprintf (ptr_data, "%u", contents_len);
ptr_data += strlen(ptr_contents_len);
*ptr_data = '*';
ptr_data++;
for (u32 i = 0; i < contents_len / 4; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_contents[i]);
}
else if (version == 2)
{
expected_bytes_len = 8;
ptr_expected_bytes = (u32 *) keepass->expected_bytes;
for (u32 i = 0; i < expected_bytes_len; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_expected_bytes[i]);
*ptr_data = '*';
ptr_data++;
for (u32 i = 0; i < contents_hash_len; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_contents_hash[i]);
}
if (keyfile_len)
{
*ptr_data = '*';
ptr_data++;
// inline flag
*ptr_data = '1';
ptr_data++;
*ptr_data = '*';
ptr_data++;
sprintf (ptr_data, "%u", keyfile_len * 2);
ptr_data += 2;
*ptr_data = '*';
ptr_data++;
for (u32 i = 0; i < 8; i++, ptr_data += 8)
sprintf (ptr_data, "%08x", ptr_keyfile[i]);
}
}
else if (hash_mode == 13500)
{
pstoken_t *pstokens = (pstoken_t *) esalts_buf;
@ -20515,23 +20373,6 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
hashconfig->st_pass = ST_PASS_HASHCAT_PLAIN;
break;
case 13400: hashconfig->hash_type = HASH_TYPE_AES;
hashconfig->salt_type = SALT_TYPE_EMBEDDED;
hashconfig->attack_exec = ATTACK_EXEC_OUTSIDE_KERNEL;
hashconfig->opts_type = OPTS_TYPE_PT_GENERATE_LE
| OPTS_TYPE_PREFERED_THREAD;
hashconfig->kern_type = KERN_TYPE_KEEPASS;
hashconfig->dgst_size = DGST_SIZE_4_4;
hashconfig->parse_func = keepass_parse_hash;
hashconfig->opti_type = OPTI_TYPE_ZERO_BYTE;
hashconfig->dgst_pos0 = 0;
hashconfig->dgst_pos1 = 1;
hashconfig->dgst_pos2 = 2;
hashconfig->dgst_pos3 = 3;
hashconfig->st_hash = ST_HASH_13400;
hashconfig->st_pass = ST_PASS_HASHCAT_PLAIN;
break;
case 13500: hashconfig->hash_type = HASH_TYPE_SHA1;
hashconfig->salt_type = SALT_TYPE_EMBEDDED;
hashconfig->attack_exec = ATTACK_EXEC_INSIDE_KERNEL;
@ -21430,7 +21271,6 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
case 11900: hashconfig->esalt_size = sizeof (pbkdf2_md5_t); break;
case 12001: hashconfig->esalt_size = sizeof (pbkdf2_sha1_t); break;
case 12100: hashconfig->esalt_size = sizeof (pbkdf2_sha512_t); break;
case 13400: hashconfig->esalt_size = sizeof (keepass_t); break;
case 13500: hashconfig->esalt_size = sizeof (pstoken_t); break;
case 13600: hashconfig->esalt_size = sizeof (zip2_t); break;
case 13711: hashconfig->esalt_size = sizeof (tc_t); break;
@ -21511,7 +21351,6 @@ int hashconfig_init (hashcat_ctx_t *hashcat_ctx)
case 12800: hashconfig->tmp_size = sizeof (pbkdf2_sha256_tmp_t); break;
case 12900: hashconfig->tmp_size = sizeof (pbkdf2_sha256_tmp_t); break;
case 13200: hashconfig->tmp_size = sizeof (axcrypt_tmp_t); break;
case 13400: hashconfig->tmp_size = sizeof (keepass_tmp_t); break;
case 13600: hashconfig->tmp_size = sizeof (pbkdf2_sha1_tmp_t); break;
case 13711: hashconfig->tmp_size = sizeof (tc_tmp_t); break;
case 13712: hashconfig->tmp_size = sizeof (tc_tmp_t); break;
@ -21666,7 +21505,6 @@ u32 default_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED co
case 12800: pw_max = PW_MAX; break;
case 12900: pw_max = PW_MAX; break;
case 13200: pw_max = PW_MAX; break;
case 13400: pw_max = PW_MAX; break;
case 13600: pw_max = PW_MAX; break;
case 13711: pw_max = 64; break; // VC limits itself to 64
case 13712: pw_max = 64; break; // VC limits itself to 64