pull/3482/head
Pikachu 2 years ago
commit 5261e903c1

@ -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…
Cancel
Save