mirror of
https://github.com/hashcat/hashcat.git
synced 2024-12-22 22:58:30 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
c8907ebb63
@ -23,7 +23,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -405,11 +405,17 @@ KERNEL_FQ void m29910_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau
|
||||
}
|
||||
}
|
||||
|
||||
const u32 ct = esalt_bufs[DIGESTS_OFFSET_HOST].ct;
|
||||
u32 ct[2];
|
||||
|
||||
const u32 pt = ct ^ ctr[0][1];
|
||||
ct[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[0];
|
||||
ct[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[1];
|
||||
|
||||
if (pt == 0xd2c3b4a1)
|
||||
u32 pt[2];
|
||||
|
||||
pt[0] = ct[0] ^ ctr[0][1];
|
||||
pt[1] = ct[1] ^ ctr[0][2];
|
||||
|
||||
if ((pt[0] == 0xd2c3b4a1) && ((pt[1] & 0x00ffffff) == 0))
|
||||
{
|
||||
if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -475,11 +475,17 @@ KERNEL_FQ void m29920_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau
|
||||
}
|
||||
}
|
||||
|
||||
const u32 ct = esalt_bufs[DIGESTS_OFFSET_HOST].ct;
|
||||
u32 ct[2];
|
||||
|
||||
const u32 pt = ct ^ ctr[0][1];
|
||||
ct[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[0];
|
||||
ct[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[1];
|
||||
|
||||
if (pt == 0xd2c3b4a1)
|
||||
u32 pt[2];
|
||||
|
||||
pt[0] = ct[0] ^ ctr[0][1];
|
||||
pt[1] = ct[1] ^ ctr[0][2];
|
||||
|
||||
if ((pt[0] == 0xd2c3b4a1) && ((pt[1] & 0x00ffffff) == 0))
|
||||
{
|
||||
if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -290,11 +290,17 @@ KERNEL_FQ void m29930_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau
|
||||
}
|
||||
}
|
||||
|
||||
const u32 ct = esalt_bufs[DIGESTS_OFFSET_HOST].ct;
|
||||
u32 ct[2];
|
||||
|
||||
const u32 pt = ct ^ ctr[0][1];
|
||||
ct[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[0];
|
||||
ct[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[1];
|
||||
|
||||
if (pt == 0xd2c3b4a1)
|
||||
u32 pt[2];
|
||||
|
||||
pt[0] = ct[0] ^ ctr[0][1];
|
||||
pt[1] = ct[1] ^ ctr[0][2];
|
||||
|
||||
if ((pt[0] == 0xd2c3b4a1) && ((pt[1] & 0x00ffffff) == 0))
|
||||
{
|
||||
if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -360,11 +360,17 @@ KERNEL_FQ void m29940_comp (KERN_ATTR_TMPS_ESALT (encdatavault_tmp_t, encdatavau
|
||||
}
|
||||
}
|
||||
|
||||
const u32 ct = esalt_bufs[DIGESTS_OFFSET_HOST].ct;
|
||||
u32 ct[2];
|
||||
|
||||
const u32 pt = ct ^ ctr[0][1];
|
||||
ct[0] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[0];
|
||||
ct[1] = esalt_bufs[DIGESTS_OFFSET_HOST].ct[1];
|
||||
|
||||
if (pt == 0xd2c3b4a1)
|
||||
u32 pt[2];
|
||||
|
||||
pt[0] = ct[0] ^ ctr[0][1];
|
||||
pt[1] = ct[1] ^ ctr[0][2];
|
||||
|
||||
if ((pt[0] == 0xd2c3b4a1) && ((pt[1] & 0x00ffffff) == 0))
|
||||
{
|
||||
if (hc_atomic_inc (&hashes_shown[DIGESTS_OFFSET_HOST]) == 0)
|
||||
{
|
||||
|
@ -5,6 +5,10 @@
|
||||
##
|
||||
|
||||
- Added hash-mode: Bisq .wallet (scrypt)
|
||||
- Added hash-mode: ENCsecurity Datavault (PBKDF2/no keychain)
|
||||
- Added hash-mode: ENCsecurity Datavault (PBKDF2/keychain)
|
||||
- Added hash-mode: ENCsecurity Datavault (MD5/no keychain)
|
||||
- Added hash-mode: ENCsecurity Datavault (MD5/keychain)
|
||||
- Added hash-mode: Dahua NVR/DVR/HVR (md5($salt1.strtoupper(md5($salt2.$pass))))
|
||||
|
||||
##
|
||||
@ -1881,4 +1885,4 @@ It combines all features of all hashcat projects in one project.
|
||||
- Created environment variable to inform pocl OpenCL runtime to not create its own kernel cache
|
||||
- Dropped special 64-bit rotate() handling for NV, it seems that they've added it to their OpenCL runtime
|
||||
- Completely get rid of HAVE_ADL, HAVE_NVML and HAVE_NVAPI in sources
|
||||
- Replaced NVAPI with NVML on windows
|
||||
- Replaced NVAPI with NVML on windows
|
@ -423,6 +423,10 @@ NVIDIA GPUs require "NVIDIA Driver" (440.64 or later) and "CUDA Toolkit" (9.0 or
|
||||
- Exodus Desktop Wallet (scrypt)
|
||||
- Terra Station Wallet (AES256-CBC(PBKDF2($pass)))
|
||||
- Bisq .wallet (scrypt)
|
||||
- ENCsecurity Datavault (PBKDF2/no keychain)
|
||||
- ENCsecurity Datavault (PBKDF2/keychain)
|
||||
- ENCsecurity Datavault (MD5/no keychain)
|
||||
- ENCsecurity Datavault (MD5/keychain)
|
||||
|
||||
##
|
||||
## Attack-Modes
|
||||
|
@ -21,11 +21,10 @@ static const char *HASH_NAME = "ENCsecurity Datavault (PBKDF2/no keychain)"
|
||||
static const u64 KERN_TYPE = 29910;
|
||||
static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE;
|
||||
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
|
||||
| OPTS_TYPE_SUGGEST_KG
|
||||
| OPTS_TYPE_PT_GENERATE_LE;
|
||||
static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED;
|
||||
static const char *ST_PASS = "hashcat";
|
||||
static const char *ST_HASH = "$encdv-pbkdf2$1$1$bd12fd9e9c4252ac$8e0d56af$32$6837851711084114787901783636162937895530378506030719195563133051$100000";
|
||||
static const char *ST_HASH = "$encdv-pbkdf2$1$1$2a634ff38de7bd65$da30f6488f23d250$32$8411766641676379804327452599148252868336714192465947587879023912$100000";
|
||||
|
||||
u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; }
|
||||
u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; }
|
||||
@ -47,7 +46,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -121,8 +120,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
token.sep[4] = '$';
|
||||
token.len_min[4] = 8;
|
||||
token.len_max[4] = 8;
|
||||
token.len_min[4] = 16;
|
||||
token.len_max[4] = 16;
|
||||
token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
@ -182,7 +181,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
const u8 *ct_pos = token.buf[4];
|
||||
|
||||
encdatavault->ct = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[ 0]));
|
||||
encdatavault->ct[0] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[0]));
|
||||
encdatavault->ct[1] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[8]));
|
||||
|
||||
// salt length
|
||||
|
||||
@ -215,8 +215,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
// hash
|
||||
|
||||
digest[0] = encdatavault->ct; // very little comparison material, mark?
|
||||
digest[1] = 0;
|
||||
digest[0] = encdatavault->ct[0];
|
||||
digest[1] = encdatavault->ct[1];
|
||||
digest[2] = 0;
|
||||
digest[3] = 0;
|
||||
|
||||
@ -227,13 +227,14 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
{
|
||||
const encdatavault_t *encdatavault = (const encdatavault_t *) esalt_buf;
|
||||
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x$32$%08x%08x%08x%08x%08x%08x%08x%08x$%u",
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x%08x$32$%08x%08x%08x%08x%08x%08x%08x%08x$%u",
|
||||
SIGNATURE_ENCDATAVAULT,
|
||||
encdatavault->version,
|
||||
encdatavault->algo,
|
||||
encdatavault->iv[0],
|
||||
encdatavault->iv[1],
|
||||
encdatavault->ct,
|
||||
encdatavault->ct[0],
|
||||
encdatavault->ct[1],
|
||||
salt->salt_buf[0],
|
||||
salt->salt_buf[1],
|
||||
salt->salt_buf[2],
|
||||
|
@ -21,11 +21,10 @@ static const char *HASH_NAME = "ENCsecurity Datavault (PBKDF2/keychain)";
|
||||
static const u64 KERN_TYPE = 29920;
|
||||
static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE;
|
||||
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
|
||||
| OPTS_TYPE_SUGGEST_KG
|
||||
| OPTS_TYPE_PT_GENERATE_LE;
|
||||
static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED;
|
||||
static const char *ST_PASS = "hashcat";
|
||||
static const char *ST_HASH = "$encdv-pbkdf2$3$1$130571bbf372e0bf$111d5ca7$32$2429089346200226659014233592924299796009937640146227905527403333$100000$fec66270ae31528b4fe4dbfe4034a9698fcdf28daee644a63f561fdf91d6ed4e91491a65570a1789b10e1d6480cffe9d6b2c5b1be360ba690e15c6b8d04bbc7c561889416062efa8fd16e14356c922b2536356e8097ac421663eba859b812ace02f41d4e471f5a46e0cee149edaa46fd1be0347d59247320286ad270d2d45ed5";
|
||||
static const char *ST_HASH = "$encdv-pbkdf2$3$1$ce7801561a78723a$92d57beb35641626$32$4865411258241441439695058324389632216617876787029059122102544908$100000$0fcd759f2a0b8687a63bd70db4af46735199cacd2e67df549bfa643ac2610f23bcc533d693be54f3307d9fb14057d53eed528079a90c160bf9bde5cce8e0283539d97bb536029ebb8b641e18ecf8d1af44e3e161a47e263830eb0b3de53052c3f36a4e6f5068b14c7aabd449c63969948ac27adbd111762583ac779d53156e9b";
|
||||
|
||||
u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; }
|
||||
u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; }
|
||||
@ -47,7 +46,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -121,8 +120,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
token.sep[4] = '$';
|
||||
token.len_min[4] = 8;
|
||||
token.len_max[4] = 8;
|
||||
token.len_min[4] = 16;
|
||||
token.len_max[4] = 16;
|
||||
token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
@ -189,7 +188,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
const u8 *ct_pos = token.buf[4];
|
||||
|
||||
encdatavault->ct = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[ 0]));
|
||||
encdatavault->ct[0] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[0]));
|
||||
encdatavault->ct[1] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[8]));
|
||||
|
||||
// salt length
|
||||
|
||||
@ -231,8 +231,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
// hash
|
||||
|
||||
digest[0] = encdatavault->ct; // very little comparison material, mark?
|
||||
digest[1] = 0;
|
||||
digest[0] = encdatavault->ct[0];
|
||||
digest[1] = encdatavault->ct[1];
|
||||
digest[2] = 0;
|
||||
digest[3] = 0;
|
||||
|
||||
@ -250,13 +250,14 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
u32_to_hex (byte_swap_32 (encdatavault->keychain[i]), (u8 *) tmp_buf + j);
|
||||
}
|
||||
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x$32$%08x%08x%08x%08x%08x%08x%08x%08x$%u$%s",
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x%08x$32$%08x%08x%08x%08x%08x%08x%08x%08x$%u$%s",
|
||||
SIGNATURE_ENCDATAVAULT,
|
||||
encdatavault->version,
|
||||
encdatavault->algo,
|
||||
encdatavault->iv[0],
|
||||
encdatavault->iv[1],
|
||||
encdatavault->ct,
|
||||
encdatavault->ct[0],
|
||||
encdatavault->ct[1],
|
||||
salt->salt_buf[0],
|
||||
salt->salt_buf[1],
|
||||
salt->salt_buf[2],
|
||||
|
@ -21,11 +21,10 @@ static const char *HASH_NAME = "ENCsecurity Datavault (MD5/no keychain)";
|
||||
static const u64 KERN_TYPE = 29930;
|
||||
static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE;
|
||||
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
|
||||
| OPTS_TYPE_SUGGEST_KG
|
||||
| OPTS_TYPE_PT_GENERATE_LE;
|
||||
static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED;
|
||||
static const char *ST_PASS = "hashcat";
|
||||
static const char *ST_HASH = "$encdv$1$1$a36ce62ab8a2701b$8c5d1f2c";
|
||||
static const char *ST_HASH = "$encdv$1$1$c3b2325acd041cc5$125027145bd58e4c";
|
||||
|
||||
u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; }
|
||||
u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; }
|
||||
@ -47,7 +46,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -116,8 +115,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
token.sep[4] = '$';
|
||||
token.len_min[4] = 8;
|
||||
token.len_max[4] = 8;
|
||||
token.len_min[4] = 16;
|
||||
token.len_max[4] = 16;
|
||||
token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
@ -159,13 +158,15 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
const u8 *ct_pos = token.buf[4];
|
||||
|
||||
encdatavault->ct = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[ 0]));
|
||||
encdatavault->ct[0] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[0]));
|
||||
encdatavault->ct[1] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[8]));
|
||||
|
||||
// salt fixed
|
||||
|
||||
salt->salt_buf[0] = encdatavault->ct;
|
||||
salt->salt_buf[0] = encdatavault->ct[0];
|
||||
salt->salt_buf[1] = encdatavault->ct[1];
|
||||
|
||||
salt->salt_len = 4;
|
||||
salt->salt_len = 8;
|
||||
|
||||
// iter fixed
|
||||
|
||||
@ -175,8 +176,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
// hash
|
||||
|
||||
digest[0] = encdatavault->ct; // very little comparison material, mark?
|
||||
digest[1] = 0;
|
||||
digest[0] = encdatavault->ct[0];
|
||||
digest[1] = encdatavault->ct[1];
|
||||
digest[2] = 0;
|
||||
digest[3] = 0;
|
||||
|
||||
@ -187,13 +188,14 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
{
|
||||
const encdatavault_t *encdatavault = (const encdatavault_t *) esalt_buf;
|
||||
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x",
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x%08x",
|
||||
SIGNATURE_ENCDATAVAULT,
|
||||
encdatavault->version,
|
||||
encdatavault->algo,
|
||||
encdatavault->iv[0],
|
||||
encdatavault->iv[1],
|
||||
encdatavault->ct);
|
||||
encdatavault->ct[0],
|
||||
encdatavault->ct[1]);
|
||||
|
||||
return line_len;
|
||||
}
|
||||
|
@ -21,11 +21,10 @@ static const char *HASH_NAME = "ENCsecurity Datavault (MD5/keychain)";
|
||||
static const u64 KERN_TYPE = 29940;
|
||||
static const u32 OPTI_TYPE = OPTI_TYPE_ZERO_BYTE;
|
||||
static const u64 OPTS_TYPE = OPTS_TYPE_STOCK_MODULE
|
||||
| OPTS_TYPE_SUGGEST_KG
|
||||
| OPTS_TYPE_PT_GENERATE_LE;
|
||||
static const u32 SALT_TYPE = SALT_TYPE_EMBEDDED;
|
||||
static const char *ST_PASS = "hashcat";
|
||||
static const char *ST_HASH = "$encdv$3$1$5dad3dca84d2c099$a0219b93$6ed2f9c289bb8febc14ede2412b64333e9b59c4f783e62bbd01a111ae53444b3b8510b79ec0d4eedee50c2dec3e4539a42e1107626c4c0ee2c3cf36241fb965ae81b15a0d29044f9e0aa61eeb01e988de1f24b25e744d5927cb8a4c4844f4e4bd3f0f5a1bbf731158871b756c1818e4f47f3efd6bc8d09f59bbef8ae089a8184";
|
||||
static const char *ST_HASH = "$encdv$3$1$57eb2fd014e80ab8$d9efd5b50d7d2c96$4d155873a6619957b8e30739d729e8a7b147573a839603fe5dcfdec186c0cb622ddda17ae077dbd77b8a7193e2e975c03f4ccb9052ffbcb6cf419aa9dcd2f7c917ffb4f243fae96cef2f96b804879e9e02b1fcaa4e1b0e765cb138fd0993cda006384a1e690d4058e107cfb7e214bf0217ea7b405af3924db4fa839efedbea59";
|
||||
|
||||
u32 module_attack_exec (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ATTACK_EXEC; }
|
||||
u32 module_dgst_pos0 (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return DGST_POS0; }
|
||||
@ -47,7 +46,7 @@ typedef struct encdatavault
|
||||
u32 keychain[32];
|
||||
u32 iv[2];
|
||||
|
||||
u32 ct;
|
||||
u32 ct[2];
|
||||
|
||||
u32 algo;
|
||||
u32 version;
|
||||
@ -116,8 +115,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
token.sep[4] = '$';
|
||||
token.len_min[4] = 8;
|
||||
token.len_max[4] = 8;
|
||||
token.len_min[4] = 16;
|
||||
token.len_max[4] = 16;
|
||||
token.attr[4] = TOKEN_ATTR_VERIFY_LENGTH
|
||||
| TOKEN_ATTR_VERIFY_HEX;
|
||||
|
||||
@ -165,7 +164,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
const u8 *ct_pos = token.buf[4];
|
||||
|
||||
encdatavault->ct = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[ 0]));
|
||||
encdatavault->ct[0] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[0]));
|
||||
encdatavault->ct[1] = byte_swap_32 (hex_to_u32 ((const u8 *) &ct_pos[8]));
|
||||
|
||||
// keychain
|
||||
|
||||
@ -178,9 +178,10 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
// salt fixed
|
||||
|
||||
salt->salt_buf[0] = encdatavault->ct;
|
||||
salt->salt_buf[0] = encdatavault->ct[0];
|
||||
salt->salt_buf[1] = encdatavault->ct[1];
|
||||
|
||||
salt->salt_len = 4;
|
||||
salt->salt_len = 8;
|
||||
|
||||
// iter fixed
|
||||
|
||||
@ -190,8 +191,8 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
|
||||
// hash
|
||||
|
||||
digest[0] = encdatavault->ct; // very little comparison material, mark?
|
||||
digest[1] = 0;
|
||||
digest[0] = encdatavault->ct[0];
|
||||
digest[1] = encdatavault->ct[1];
|
||||
digest[2] = 0;
|
||||
digest[3] = 0;
|
||||
|
||||
@ -209,13 +210,14 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
||||
u32_to_hex (byte_swap_32 (encdatavault->keychain[i]), (u8 *) tmp_buf + j);
|
||||
}
|
||||
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x$%s",
|
||||
const int line_len = snprintf (line_buf, line_size, "%s%u$%u$%08x%08x$%08x%08x$%s",
|
||||
SIGNATURE_ENCDATAVAULT,
|
||||
encdatavault->version,
|
||||
encdatavault->algo,
|
||||
encdatavault->iv[0],
|
||||
encdatavault->iv[1],
|
||||
encdatavault->ct,
|
||||
encdatavault->ct[0],
|
||||
encdatavault->ct[1],
|
||||
tmp_buf);
|
||||
|
||||
return line_len;
|
||||
|
@ -21,10 +21,6 @@ if len(sys.argv) != 2 :
|
||||
print("Error, usage exodus2hashcat.py <path to exodus seed.seco file>")
|
||||
sys.exit(1)
|
||||
|
||||
if os.path.basename(sys.argv[1])!= 'seed.seco':
|
||||
print("Error, usage exodus2hashcat.py <path to exodus seed.seco file>")
|
||||
sys.exit(1)
|
||||
|
||||
with open(sys.argv[1],'rb') as fd:
|
||||
seedBuffer = fd.read()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user