[prev in list] [next in list] [prev in thread] [next in thread] 

List:       john-users
Subject:    Re: [john-users] A couple broken formats from jumbo-2
From:       "JFoug" <jfoug () cox ! net>
Date:       2009-11-08 3:11:08
Message-ID: E20543B1DAA04F9D8BF099042B8EF6E0 () ath64dual
[Download RAW message or body]

Here are working copies of mysql_fmt.c and mysql05_fmt.c   The ones in the 
current jumbo patch is broken for any MMX/SSE builds.  These correct that 
problem.

Jim. 

["mssql-postjumbo2-1.patch" (application/octet-stream)]

diff -urpN john-1.7.3.4.jumbo-2/src/mssql05_fmt.c john-1.7.3.4/src/mssql05_fmt.c
@@ -139,15 +144,12 @@ static void mssql05_set_key(char *key, i
 	if(len>PLAINTEXT_LENGTH)
 		len = PLAINTEXT_LENGTH;
 
-	total_len += (len*2+SALT_SIZE ) << ( ( (32/MMX_COEF) * index ) );
+	total_len += (len*2) << ( ( (32/MMX_COEF) * index ) );
 	for(i=0;i<len;i++)
 	{
 		saved_key[GETPOS((i*2), index)] = key[i];
 		saved_key[GETPOS((i*2+1), index)] = 0;
 	}
-	for(i=0;i<4;i++)
-		saved_key[GETPOS( (len*2+i), index)] = cursalt[i];
-	saved_key[GETPOS( (len*2+SALT_SIZE) , index)] = 0x80;
 #else
 	key_length = 0;
 	while( (((unsigned short *)saved_key)[key_length] = key[key_length] ENDIAN_SHIFT_L ))
@@ -218,6 +220,15 @@ static int mssql05_cmp_one(void * binary
 static void mssql05_crypt_all(int count) {
   // get plaintext input in saved_key put it into ciphertext crypt_key
 #ifdef MMX_COEF
+	unsigned i, index;
+	for (index = 0; index < count; ++index)
+	{
+		unsigned len = (total_len >> ((32/MMX_COEF)*index)) & 0xFF;
+		for(i=0;i<SALT_SIZE;i++)
+			saved_key[GETPOS((len+i), index)] = cursalt[i];
+		saved_key[GETPOS((len+SALT_SIZE) , index)] = 0x80;
+		total_len += (SALT_SIZE) << ( ( (32/MMX_COEF) * index ) );
+	}
 	shammx((unsigned char *) crypt_key, (unsigned char *) saved_key, total_len);
 #else
 	memcpy(saved_key+key_length*2, cursalt, SALT_SIZE);
diff -urpN john-1.7.3.4.jumbo-2/src/mssql_fmt.c john-1.7.3.4/src/mssql_fmt.c
@@ -147,15 +152,12 @@ static void mssql_set_key(char *key, int
 	if(len>PLAINTEXT_LENGTH)
 		len = PLAINTEXT_LENGTH;
 
-	total_len += (len*2+SALT_SIZE ) << ( ( (32/MMX_COEF) * index ) );
+	total_len += (len*2) << ( ( (32/MMX_COEF) * index ) );
 	for(i=0;i<len;i++)
 	{
 		saved_key[GETPOS((i*2), index)] = upper(key[i]);
 		saved_key[GETPOS((i*2+1), index)] = 0;
 	}
-	for(i=0;i<4;i++)
-		saved_key[GETPOS( (len*2+i), index)] = cursalt[i];
-	saved_key[GETPOS( (len*2+SALT_SIZE) , index)] = 0x80;
 #else
 	key_length = 0;
 	while( (((unsigned short *)saved_key)[key_length] = upper(key[key_length]) ENDIAN_SHIFT_L ))
@@ -226,6 +227,15 @@ static int mssql_cmp_one(void * binary, 
 static void mssql_crypt_all(int count) {
   // get plaintext input in saved_key put it into ciphertext crypt_key
 #ifdef MMX_COEF
+	unsigned i, index;
+	for (index = 0; index < count; ++index)
+	{
+		unsigned len = (total_len >> ((32/MMX_COEF)*index)) & 0xFF;
+		for(i=0;i<SALT_SIZE;i++)
+			saved_key[GETPOS((len+i), index)] = cursalt[i];
+		saved_key[GETPOS((len+SALT_SIZE) , index)] = 0x80;
+		total_len += (SALT_SIZE) << ( ( (32/MMX_COEF) * index ) );
+	}
 	shammx( (unsigned char *) crypt_key, (unsigned char *) saved_key, total_len);
 #else
 	memcpy(saved_key+key_length*2, cursalt, SALT_SIZE);





[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic