1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-26 18:08:20 +00:00

Fix device_name_chksum calculation

This commit is contained in:
Jens Steube 2019-03-26 12:26:30 +01:00
parent 0fb3b3c83e
commit e74e8f0234

View File

@ -4899,34 +4899,35 @@ int opencl_session_begin (hashcat_ctx_t *hashcat_ctx)
char *device_name_chksum = (char *) hcmalloc (HCBUFSIZ_TINY); char *device_name_chksum = (char *) hcmalloc (HCBUFSIZ_TINY);
char *device_name_chksum_amp_mp = (char *) hcmalloc (HCBUFSIZ_TINY); char *device_name_chksum_amp_mp = (char *) hcmalloc (HCBUFSIZ_TINY);
const size_t dnclen = snprintf (device_name_chksum, HCBUFSIZ_TINY, "%u-%u-%s-%s-%s-%d-%u-%u", device_param->platform_vendor_id, device_param->vector_width, device_param->device_name, device_param->device_version, device_param->driver_version, opencl_ctx->comptime, user_options->opencl_vector_width, hashconfig->hash_mode); const size_t dnclen = snprintf (device_name_chksum, HCBUFSIZ_TINY, "%d-%u-%s-%s-%s-%d-%d",
const size_t dnclen_amp_mp = snprintf (device_name_chksum_amp_mp, HCBUFSIZ_TINY, "%u-%s-%s-%s-%d", device_param->platform_vendor_id, device_param->device_name, device_param->device_version, device_param->driver_version, opencl_ctx->comptime); opencl_ctx->comptime,
device_param->platform_vendor_id,
device_param->device_name,
device_param->device_version,
device_param->driver_version,
device_param->vector_width,
hashconfig->hash_mode);
u32 *device_name_chksum32 = (u32 *) device_name_chksum; const size_t dnclen_amp_mp = snprintf (device_name_chksum_amp_mp, HCBUFSIZ_TINY, "%d-%u-%s-%s-%s",
opencl_ctx->comptime,
device_param->platform_vendor_id,
device_param->device_name,
device_param->device_version,
device_param->driver_version);
u32 device_name_digest[4] = { 0 }; md5_ctx_t md5_ctx;
for (size_t i = 0; i < dnclen; i += 64) md5_init (&md5_ctx);
{ md5_update (&md5_ctx, (u32 *) device_name_chksum, dnclen);
md5_transform (device_name_chksum32 + 0, device_name_chksum32 + 4, device_name_chksum32 + 8, device_name_chksum32 + 12, device_name_digest); md5_final (&md5_ctx);
device_name_chksum32 += 16; snprintf (device_name_chksum, HCBUFSIZ_TINY, "%08x", md5_ctx.h[0]);
}
snprintf (device_name_chksum, HCBUFSIZ_TINY, "%08x", device_name_digest[0]); md5_init (&md5_ctx);
md5_update (&md5_ctx, (u32 *) device_name_chksum_amp_mp, dnclen_amp_mp);
md5_final (&md5_ctx);
u32 *device_name_chksum_amp_mp32 = (u32 *) device_name_chksum; snprintf (device_name_chksum_amp_mp, HCBUFSIZ_TINY, "%08x", md5_ctx.h[0]);
u32 device_name_digest_amp_mp[4] = { 0 };
for (size_t i = 0; i < dnclen_amp_mp; i += 64)
{
md5_transform (device_name_chksum_amp_mp32 + 0, device_name_chksum_amp_mp32 + 4, device_name_chksum_amp_mp32 + 8, device_name_chksum_amp_mp32 + 12, device_name_digest_amp_mp);
device_name_chksum_amp_mp32 += 16;
}
snprintf (device_name_chksum_amp_mp, HCBUFSIZ_TINY, "%08x", device_name_digest_amp_mp[0]);
/** /**
* kernel cache * kernel cache