1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-22 08:08:10 +00:00

Merge branch 'master' into metal_prepare_kernelIncludes_v2

This commit is contained in:
Gabriele Gristina 2022-02-02 07:33:45 +01:00 committed by GitHub
commit f21ae3219c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 173 additions and 137 deletions

View File

@ -44,6 +44,7 @@
- Association Attack: Enable module specific pw_min and pw_max settings to avoid false positives in -a 9 attack-mode
- Autotune: Added error handling. By default skipping device on error, with --force using accel/loops/threads min values instead
- Backend: with kernel build options, switch from -I to -D INCLUDE_PATH, in order to support Apple Metal runtime
- Backend Info: Added generic system info to output (must be completed on Windows side)
- Backend Info: Added local memory size to output
- CUDA Backend: moved functions to ext_cuda.c/ext_nvrtc.c and includes to ext_cuda.h/ext_nvrtc.h
- Hash Info: show more information (Updated Hash-Format. Added Autodetect, Self-Test, Potfile and Plaintext encoding)

View File

@ -21,6 +21,13 @@
#endif // __APPLE__
#endif // _WIN
#if !defined (_WIN) && !defined (__CYGWIN__) && !defined (__MSYS__)
#include <sys/utsname.h>
#if !defined (__linux__)
#include <sys/sysctl.h>
#endif // ! __linux__
#endif // ! _WIN && | __CYGWIN__ && ! __MSYS__
void welcome_screen (hashcat_ctx_t *hashcat_ctx, const char *version_tag);
void goodbye_screen (hashcat_ctx_t *hashcat_ctx, const time_t proc_start, const time_t proc_stop);

View File

@ -801,6 +801,65 @@ void backend_info (hashcat_ctx_t *hashcat_ctx)
{
const backend_ctx_t *backend_ctx = hashcat_ctx->backend_ctx;
event_log_info (hashcat_ctx, "System Info:");
event_log_info (hashcat_ctx, "============");
event_log_info (hashcat_ctx, NULL);
#if defined (_WIN) || defined (__CYGWIN__) || defined (__MSYS__)
// TODO
event_log_info (hashcat_ctx, "OS.Name......: Windows");
event_log_info (hashcat_ctx, "OS.Release...: N/A");
event_log_info (hashcat_ctx, "HW.Platform..: N/A");
event_log_info (hashcat_ctx, "HW.Model.....: N/A");
#else
struct utsname utsbuf;
bool rc_uname = false;
bool rc_sysctl = false;
char *hw_model_buf = NULL;
#if !defined (__linux__)
size_t hw_model_len = 0;
if (sysctlbyname ("hw.model", NULL, &hw_model_len, NULL, 0) == 0 && hw_model_len > 0)
{
hw_model_buf = (char *) hcmalloc (hw_model_len);
if (sysctlbyname ("hw.model", hw_model_buf, &hw_model_len, NULL, 0) != 0)
{
hw_model_buf = NULL;
hw_model_len = 0;
hcfree (hw_model_buf);
}
else
{
rc_sysctl = true;
}
}
#endif // ! __linux__
if (uname (&utsbuf) == 0)
{
rc_uname = true;
}
event_log_info (hashcat_ctx, "OS.Name......: %s", (rc_uname == true) ? utsbuf.sysname : "N/A");
event_log_info (hashcat_ctx, "OS.Release...: %s", (rc_uname == true) ? utsbuf.release : "N/A");
event_log_info (hashcat_ctx, "HW.Model.....: %s", (rc_sysctl == true) ? hw_model_buf : "N/A");
event_log_info (hashcat_ctx, "HW.Platform..: %s", (rc_uname == true) ? utsbuf.machine : "N/A");
if (rc_sysctl == true)
{
hcfree (hw_model_buf);
}
#endif // _WIN || __CYGWIN__ || __MSYS__
event_log_info (hashcat_ctx, NULL);
if (backend_ctx->cuda)
{
event_log_info (hashcat_ctx, "CUDA Info:");

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Digest::MD5 qw (md5);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [-1, -1]] }

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Digest::MD5 qw (md5);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [-1, -1]] }

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Digest::SHA1 qw (sha1);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [-1, -1]] }

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Digest::SHA1 qw (sha1);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [-1, -1]] }

View File

@ -9,7 +9,6 @@ use strict;
use warnings;
use Digest::MD4 qw (md4_hex);
use Encode;
sub module_constraints { [[0, 256], [-1, -1], [0, 27], [-1, -1], [-1, -1]] }

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Digest::SHA qw (sha512_hex);
use MIME::Base64 qw (encode_base64);
use MIME::Base64 qw (encode_base64 decode_base64);
sub module_constraints { [[0, 256], [0, 256], [0, 55], [0, 55], [0, 55]] }

View File

@ -8,7 +8,7 @@
use strict;
use warnings;
use Digest::MD4 qw (md4 md4_hex);
use Digest::MD4 qw (md4);
use Crypt::PBKDF2;
use Encode;

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Digest::MD5 qw (md5);
use POSIX qw (strftime ceil);
use POSIX qw (ceil);
sub module_constraints { [[-1, -1], [-1, -1], [1, 55], [-1, -1], [-1, -1]] }

View File

@ -9,10 +9,8 @@ use strict;
use warnings;
use Authen::Passphrase::NTHash;
use Digest::HMAC qw (hmac hmac_hex);
use Digest::MD5 qw (md5);
use Encode qw (encode);
use Crypt::ECB qw (encrypt);
use Digest::MD5 qw (md5);
use Crypt::ECB;
sub setup_des_key
{

View File

@ -12,7 +12,6 @@ use Encode;
use Crypt::RC4;
use Digest::HMAC_MD5 qw (hmac_md5);
use Digest::MD4 qw (md4);
use Digest::MD5 qw (md5_hex);
use POSIX qw (strftime);
sub get_random_kerberos5_salt

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Crypt::ScryptKDF qw (scrypt_hash);
use MIME::Base64 qw (decode_base64);
use MIME::Base64 qw (decode_base64);
sub module_constraints { [[0, 256], [1, 15], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -7,8 +7,9 @@
use strict;
use warnings;
use Crypt::PBKDF2;
use MIME::Base64;
use MIME::Base64 qw (encode_base64 decode_base64);
sub module_constraints { [[0, 256], [64, 64], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,7 +8,6 @@
use strict;
use warnings;
use Digest::MD5 qw (md5_hex);
use Digest::SHA qw (sha1);
sub module_constraints { [[0, 256], [40, 40], [0, 55], [40, 40], [-1, -1]] }

View File

@ -12,8 +12,6 @@ use Encode;
use Crypt::RC4;
use Digest::HMAC_MD5 qw (hmac_md5);
use Digest::MD4 qw (md4);
use Digest::MD5 qw (md5_hex);
use POSIX qw (strftime);
sub module_constraints { [[0, 256], [16, 16], [0, 27], [16, 16], [-1, -1]] }

View File

@ -9,7 +9,6 @@ use strict;
use warnings;
use Digest::SHA qw (sha1_hex);
use Encode;
sub module_constraints { [[0, 256], [9, 9], [0, 46], [9, 9], [-1, -1]] }

View File

@ -8,9 +8,9 @@
use strict;
use warnings;
use Crypt::ECB qw (encrypt);
use Digest::MD4 qw (md4);
use Digest::SHA qw (sha1 hmac_sha1);
use Crypt::ECB;
use Encode;
sub module_constraints { [[0, 256], [-1, -1], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,10 +8,10 @@
use strict;
use warnings;
use Crypt::CBC;
use Crypt::ECB qw (encrypt);
use Digest::MD4 qw (md4);
use Digest::SHA qw (sha1 hmac_sha1 hmac_sha512);
use Crypt::CBC;
use Crypt::ECB;
use Encode;
sub module_constraints { [[0, 256], [-1, -1], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -10,7 +10,7 @@ use warnings;
use Crypt::PBKDF2;
use Digest::HMAC qw (hmac_hex);
use Digest::SHA qw (sha256);
use Digest::SHA qw (sha256);
sub module_constraints { [[0, 256], [-1, -1], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -12,8 +12,6 @@ use Encode;
use Crypt::RC4;
use Digest::HMAC_MD5 qw (hmac_md5);
use Digest::MD4 qw (md4);
use Digest::MD5 qw (md5_hex);
use POSIX qw (strftime);
sub module_constraints { [[0, 256], [16, 16], [0, 27], [16, 16], [-1, -1]] }

View File

@ -11,8 +11,6 @@ use warnings;
use Digest::SHA qw (hmac_sha1);
use Crypt::Mode::CBC;
use Crypt::PBKDF2;
use Encode;
use POSIX qw (strftime);
sub byte2hex
{

View File

@ -11,8 +11,6 @@ use warnings;
use Digest::SHA qw (hmac_sha1);
use Crypt::Mode::CBC;
use Crypt::PBKDF2;
use Encode;
use POSIX qw (strftime);
sub byte2hex
{

View File

@ -11,8 +11,6 @@ use warnings;
use Digest::SHA qw (hmac_sha1);
use Crypt::Mode::CBC;
use Crypt::PBKDF2;
use Encode;
use POSIX qw (strftime);
sub byte2hex
{

View File

@ -11,8 +11,6 @@ use warnings;
use Digest::SHA qw (hmac_sha1);
use Crypt::Mode::CBC;
use Crypt::PBKDF2;
use Encode;
use POSIX qw (strftime);
sub byte2hex
{

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Crypt::PBKDF2;
use MIME::Base64 qw (encode_base64 decode_base64);
use MIME::Base64 qw (encode_base64);
use Encode;
sub module_constraints { [[0, 256], [128, 128], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Crypt::PBKDF2;
use MIME::Base64 qw (encode_base64 decode_base64);
use MIME::Base64 qw (encode_base64);
use Encode;
sub module_constraints { [[0, 256], [128, 128], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -9,7 +9,7 @@ use strict;
use warnings;
use Crypt::PBKDF2;
use MIME::Base64 qw (encode_base64 decode_base64);
use MIME::Base64 qw (encode_base64);
use Encode;
sub module_constraints { [[0, 256], [128, 128], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,8 +8,8 @@
use strict;
use warnings;
use Digest::SHA qw (sha256);
use MIME::Base64;
use Digest::SHA qw (sha256);
use MIME::Base64 qw (encode_base64);
sub module_constraints { [[0, 256], [0, 16], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,9 +8,9 @@
use strict;
use warnings;
use MIME::Base64 qw (encode_base64 decode_base64);
use MIME::Base64 qw (encode_base64);
use Digest::SHA qw (sha512);
use Crypt::PBKDF2;
use Digest::SHA qw (sha512);
use Encode;
sub module_constraints { [[0, 256], [0, 256], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,9 +8,9 @@
use strict;
use warnings;
use MIME::Base64 qw (encode_base64 decode_base64);
use MIME::Base64 qw (encode_base64);
use Digest::SHA qw (sha512);
use Crypt::PBKDF2;
use Digest::SHA qw (sha512);
use Encode;
sub module_constraints { [[0, 256], [16, 16], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,13 +8,10 @@
use strict;
use warnings;
use MIME::Base64 qw (encode_base64 decode_base64);
use Crypt::PBKDF2;
sub module_constraints { [[0, 256], [1, 15], [-1, -1], [-1, -1], [-1, -1]] }
#pbkdf2(1000,20,sha512)$a2a2ca127df6bc19$77bb5a3d129e2ce710daaefeefef8356c4c827ff";
sub module_generate_hash
{
my $word = shift;
@ -37,8 +34,6 @@ sub module_generate_hash
return $hash;
}
#pbkdf2(1000,20,sha512)$a2a2ca127df6bc19$77bb5a3d129e2ce710daaefeefef8356c4c827ff";
sub module_verify_hash
{
my $line = shift;

View File

@ -8,7 +8,6 @@
use strict;
use warnings;
use Digest::MD5 qw (md5_hex);
use Digest::MD5 qw (md5);
sub module_constraints { [[0, 256], [-1, -1], [0, 55], [-1, -1], [-1, -1]] }

View File

@ -9,9 +9,9 @@ use strict;
use warnings;
use Digest::SHA1 qw (sha1);
use Digest::HMAC qw (hmac hmac_hex);
use Encode qw (encode decode);
use MIME::Base64;
use Digest::HMAC qw (hmac);
use Encode qw (encode);
use MIME::Base64 qw (encode_base64);
sub module_constraints { [[0, 256], [0, 256], [0, 27], [0, 27], [0, 27]] }

View File

@ -7,7 +7,6 @@
use strict;
use warnings;
use MIME::Base64 qw (encode_base64 decode_base64);
use Digest::MD5 qw (md5);

View File

@ -8,9 +8,9 @@
use strict;
use warnings;
use Digest::MD5 qw (md5 md5_hex);
use Digest::SHA qw (sha1 sha1_hex);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::MD5 qw (md5 md5_hex);
use Digest::SHA qw (sha1 sha1_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[8, 256], [24, 3000], [-1, -1], [-1, -1], [-1, -1]] }
@ -18,13 +18,13 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $mode = shift // int(rand(1)) + 1;
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
my $mode = shift // int (rand (1)) + 1;
# make even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -50,15 +50,15 @@ sub module_generate_hash
if ($mode eq 2)
{
my $digest2 = sha1(pack("H*", $buf));
my $digest2 = sha1 (pack ("H*", $buf));
$digest = hmac_hex (pack("H*", $salt), $digest2, \&sha1);
$digest = hmac_hex (pack ("H*", $salt), $digest2, \&sha1);
}
elsif ($mode eq 1)
{
my $digest2 = md5(pack("H*", $buf));
my $digest2 = md5 (pack ("H*", $buf));
$digest = hmac_hex (pack("H*", $salt), $digest2, \&md5);
$digest = hmac_hex (pack ("H*", $salt), $digest2, \&md5);
}
$digest = substr ($digest, 0, 24);

View File

@ -8,8 +8,8 @@
use strict;
use warnings;
use Digest::MD5 qw (md5 md5_hex);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::MD5 qw (md5 md5_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[8, 256], [24, 3000], [-1, -1], [-1, -1], [-1, -1]] }
@ -17,12 +17,12 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
# make even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -35,9 +35,9 @@ sub module_generate_hash
my $buf = join '', $md5_digest1, $engineID, $md5_digest1;
my $md5_digest2 = md5(pack("H*", $buf));
my $md5_digest2 = md5 (pack ("H*", $buf));
my $digest = hmac_hex (pack("H*", $salt), $md5_digest2, \&md5);
my $digest = hmac_hex (pack ("H*", $salt), $md5_digest2, \&md5);
$digest = substr ($digest, 0, 24);

View File

@ -8,8 +8,8 @@
use strict;
use warnings;
use Digest::SHA qw (sha1 sha1_hex);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::SHA qw (sha1 sha1_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[8, 256], [24, 3000], [-1, -1], [-1, -1], [-1, -1]] }
@ -17,12 +17,12 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
# make even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -35,9 +35,9 @@ sub module_generate_hash
my $buf = join '', $sha1_digest1, $engineID, $sha1_digest1;
my $sha1_digest2 = sha1(pack("H*", $buf));
my $sha1_digest2 = sha1 (pack ("H*", $buf));
my $digest = hmac_hex (pack("H*", $salt), $sha1_digest2, \&sha1);
my $digest = hmac_hex (pack ("H*", $salt), $sha1_digest2, \&sha1);
$digest = substr ($digest, 0, 24);

View File

@ -8,8 +8,8 @@
use strict;
use warnings;
use MIME::Base64 qw (encode_base64 decode_base64);
use Digest::SHA qw (sha512);
use MIME::Base64 qw (encode_base64);
use Digest::SHA qw (sha512);
use Encode;
sub module_constraints { [[0, 64], [16, 16], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -99,11 +99,11 @@ sub pdf_compute_encryption_key_owner
my $o_key;
if ($R == 2)
{
$o_key = substr($o_digest, 0, 8); # rc4 key is always 5 for revision 2, but for 3 or greather is dependent on the value of the encryption dictionaries length entry
$o_key = substr ($o_digest, 0, 8); # rc4 key is always 5 for revision 2, but for 3 or greather is dependent on the value of the encryption dictionaries length entry
}
else
{
$o_key = substr($o_digest, 0, 16); #length is always 128 bits or 16 bytes
$o_key = substr ($o_digest, 0, 16); # length is always 128 bits or 16 bytes
}
return $o_key;
@ -175,15 +175,15 @@ sub module_generate_hash
if ($u eq "0000000000000000000000000000000000000000000000000000000000000000")
{
my $res;
if($u_pass eq "")
if ($u_pass eq "")
{
# we don't know the user-password so calculate $u based on the owner-password
$res = pdf_compute_encryption_key_user($word, $padding, $id, $u, $o, $P, $V, $R, $enc);
$res = pdf_compute_encryption_key_user ($word, $padding, $id, $u, $o, $P, $V, $R, $enc);
}
else
{
#we do know the user-password, so we can generate $u
$res = pdf_compute_encryption_key_user($u_pass, $padding, $id, $u, $o, $P, $V, $R, $enc);
# we do know the user-password, so we can generate $u
$res = pdf_compute_encryption_key_user ($u_pass, $padding, $id, $u, $o, $P, $V, $R, $enc);
}
my $digest = md5 ($padding . pack ("H*", $id));
@ -193,7 +193,7 @@ sub module_generate_hash
my @ress = split "", $res;
#do xor of rc4 19 times
# do xor of rc4 19 times
for (my $x = 1; $x <= 19; $x++)
{
my @xor;
@ -213,28 +213,28 @@ sub module_generate_hash
}
else
{
$u = pack("H*", $u)
$u = pack ("H*", $u)
}
################ OWNER PASSWORD #################
my $o_key = pdf_compute_encryption_key_owner($word, $padding, $id, $u, $o, $P, $V, $R, $enc);
my $o_key = pdf_compute_encryption_key_owner ($word, $padding, $id, $u, $o, $P, $V, $R, $enc);
my $n = Crypt::RC4->new ($o_key);
if($u_pass eq "")
if ($u_pass eq "")
{
$o = $n->RC4(substr ($padding, 0, 32 - length ""));
$o = $n->RC4 (substr ($padding, 0, 32 - length ""));
}
else
{
#dynamically add user password including padding to the RC4 input for the computation of the pdf o-value
$o = $n->RC4($u_pass.substr ($padding, 0, 32 - length $u_pass));
# dynamically add user password including padding to the RC4 input for the computation of the pdf o-value
$o = $n->RC4 ($u_pass . substr ($padding, 0, 32 - length $u_pass));
}
my @ress2 = split "", $o_key;
if ($R >= 3)
{
#do xor of rc4 19 times
# do xor of rc4 19 times
for (my $x = 1; $x <= 19; $x++)
{
my @xor;
@ -245,14 +245,14 @@ sub module_generate_hash
}
my $s = join ("", @xor);
my $n2 = Crypt::RC4->new ($s);
my $n2 = Crypt::RC4->new ($s);
$o = $n2->RC4 ($o);
}
}
my $hash;
if($u_pass eq "")
if ($u_pass eq "")
{
$hash = sprintf ('$pdf$%d*%d*128*%d*%d*16*%s*32*%s*32*%s', $V, $R, $P, $enc, $id, unpack ("H*", $u), unpack ("H*", $o));
}
@ -275,7 +275,7 @@ sub module_verify_hash
my @data = split /\*/, $hash_in;
my $i_data = scalar @data;
return unless ($i_data == 11) || ($i_data == 12); #or 12 if user-password is included
return unless ($i_data == 11) || ($i_data == 12); # or 12 if user-password is included
my $V = shift @data; $V = substr ($V, 5, 1);
my $R = shift @data;
@ -290,7 +290,8 @@ sub module_verify_hash
my $o = shift @data;
my $u_pass = "";
if($i_data == 12) {
if ($i_data == 12)
{
$u_pass = shift @data;
}

View File

@ -145,4 +145,3 @@ sub module_verify_hash
}
1;

View File

@ -58,12 +58,12 @@ sub module_generate_hash
}
else
{
$pt = "\xff" x ($ct_min_len + int(rand($ct_max_len - $ct_min_len)) + 1);
$pt = "\xff" x ($ct_min_len + int (rand ($ct_max_len - $ct_min_len)) + 1);
}
}
else
{
$pt = "\xff" x ($ct_min_len + int(rand($ct_max_len - $ct_min_len)) + 1);
$pt = "\xff" x ($ct_min_len + int (rand ($ct_max_len - $ct_min_len)) + 1);
}
my $aes = Crypt::AuthEnc::GCM->new ("AES", $key, $iv_bin);

View File

@ -8,8 +8,8 @@
use strict;
use warnings;
use Digest::SHA qw (sha224 sha224_hex);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::SHA qw (sha224 sha224_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[8, 256], [32, 3000], [-1, -1], [-1, -1], [-1, -1]] }
@ -17,12 +17,12 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
# make even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -35,9 +35,9 @@ sub module_generate_hash
my $buf = join '', $sha224_digest1, $engineID, $sha224_digest1;
my $sha224_digest2 = sha224(pack("H*", $buf));
my $sha224_digest2 = sha224 (pack ("H*", $buf));
my $digest = hmac_hex (pack("H*", $salt), $sha224_digest2, \&sha224);
my $digest = hmac_hex (pack ("H*", $salt), $sha224_digest2, \&sha224);
$digest = substr ($digest, 0, 32);

View File

@ -8,8 +8,8 @@
use strict;
use warnings;
use Digest::SHA qw (sha256 sha256_hex);
use Digest::HMAC qw (hmac hmac_hex);
use Digest::SHA qw (sha256 sha256_hex);
use Digest::HMAC qw (hmac_hex);
sub module_constraints { [[8, 256], [48, 3000], [-1, -1], [-1, -1], [-1, -1]] }
@ -17,12 +17,12 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
# make even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -35,9 +35,9 @@ sub module_generate_hash
my $buf = join '', $sha256_digest1, $engineID, $sha256_digest1;
my $sha256_digest2 = sha256(pack("H*", $buf));
my $sha256_digest2 = sha256 (pack ("H*", $buf));
my $digest = hmac_hex (pack("H*", $salt), $sha256_digest2, \&sha256);
my $digest = hmac_hex (pack ("H*", $salt), $sha256_digest2, \&sha256);
$digest = substr ($digest, 0, 48);

View File

@ -9,7 +9,6 @@ use strict;
use warnings;
use Digest::SHA qw (sha384 sha384_hex hmac_sha384_hex);
#use Digest::HMAC qw (hmac hmac_hex);
sub module_constraints { [[8, 256], [64, 3000], [-1, -1], [-1, -1], [-1, -1]] }
@ -17,8 +16,8 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
# padding engineID: fill with zero
@ -30,7 +29,7 @@ sub module_generate_hash
# make salt even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -43,9 +42,9 @@ sub module_generate_hash
my $buf = join '', $sha384_digest1, $engineID, $sha384_digest1;
my $sha384_digest2 = sha384(pack("H*", $buf));
my $sha384_digest2 = sha384 (pack ("H*", $buf));
my $digest = hmac_sha384_hex (pack("H*", $salt), $sha384_digest2);
my $digest = hmac_sha384_hex (pack ("H*", $salt), $sha384_digest2);
$digest = substr ($digest, 0, 64);

View File

@ -8,10 +8,8 @@
use strict;
use warnings;
use Digest::HMAC qw (hmac hmac_hex);
use Digest::MD5 qw (md5);
use Encode qw (encode);
use Crypt::ECB qw (encrypt);
use Digest::MD5 qw (md5);
use Crypt::ECB;
sub setup_des_key
{

View File

@ -87,4 +87,3 @@ sub random_client_challenge
}
1;

View File

@ -16,8 +16,8 @@ sub module_generate_hash
{
my $word = shift;
my $salt = shift;
my $pkt_num = shift // int(rand(100000000));
my $engineID = shift // random_hex_string(26, 34);
my $pkt_num = shift // int (rand (100000000));
my $engineID = shift // random_hex_string (26, 34);
# padding engineID: fill with zero
@ -27,7 +27,7 @@ sub module_generate_hash
# make salt even if needed
if (length($salt) %2 == 1)
if (length ($salt) % 2 == 1)
{
$salt = $salt . "8";
}
@ -40,9 +40,9 @@ sub module_generate_hash
my $buf = join '', $sha512_digest1, $engineID, $sha512_digest1;
my $sha512_digest2 = sha512(pack("H*", $buf));
my $sha512_digest2 = sha512 (pack ("H*", $buf));
my $digest = hmac_sha512_hex (pack("H*", $salt), $sha512_digest2);
my $digest = hmac_sha512_hex (pack ("H*", $salt), $sha512_digest2);
$digest = substr ($digest, 0, 96);

View File

@ -9,8 +9,7 @@ use strict;
use warnings;
use Crypt::PBKDF2;
use MIME::Base64 qw (encode_base64 decode_base64);
use Encode;
use MIME::Base64 qw (encode_base64);
sub module_constraints { [[0, 256], [64, 64], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -9,8 +9,7 @@ use strict;
use warnings;
use Crypt::PBKDF2;
use MIME::Base64 qw (encode_base64 decode_base64);
use Encode;
use MIME::Base64 qw (encode_base64);
sub module_constraints { [[0, 256], [64, 64], [-1, -1], [-1, -1], [-1, -1]] }

View File

@ -8,9 +8,8 @@
use strict;
use warnings;
use Digest::SHA1 qw (sha1 sha1_hex);
use Encode qw (encode decode);
use MIME::Base64;
use Digest::SHA1 qw (sha1);
use MIME::Base64 qw (encode_base64 decode_base64);
sub module_constraints { [[0, 256], [224, 224], [-1, -1], [-1, -1], [-1, -1]] }