diff -urpN 179-b/src/dynamic_fmt.c 179-a/src/dynamic_fmt.c --- 179-b/src/dynamic_fmt.c 2013-02-09 15:39:47.773181700 -0600 +++ 179-a/src/dynamic_fmt.c 2013-02-09 21:50:41.737065000 -0600 @@ -1102,6 +1102,7 @@ static void set_key(char *key, int index { unsigned int len; + //printf("idx=%d key=%s\n", index, key); #ifdef MMX_COEF if (curdat.store_keys_in_input==2) dynamic_use_sse = 3; @@ -2383,6 +2384,9 @@ static void * binary_b64(char *ciphertex b[bidx] = sixbits; sixbits = atoi64[ARCH_INDEX(*pos++)]; b[bidx] |= (sixbits<<6); + + //printf("\nciphertext=%s\n", ciphertext); + //dump_stuff_msg("binary", b, 16); return b; } @@ -5074,10 +5078,11 @@ void DynamicFunc__PHPassCrypt() // output, in big endian (thus needing no swapping). // we only have to 'fix up' the final crypt results. #if MD5_X2 - MD5_swap(input_buf_X86[0].x2.w2, input_buf_X86[0].x2.w2, 4); -#endif + MD5_swap2(input_buf_X86[0].x1.w, input_buf_X86[0].x2.w2, input_buf_X86[0].x1.w, input_buf_X86[0].x2.w2, 4); +#else MD5_swap(input_buf_X86[0].x1.w, input_buf_X86[0].x1.w, 4); #endif +#endif --Lcount; while(--Lcount) @@ -5091,9 +5096,12 @@ void DynamicFunc__PHPassCrypt() // is found in the input buf to the output buf. DynamicFunc__crypt_md5_to_input_raw_Overwrite_NoLen(); #if MD5_X2 - MD5_swap(input_buf_X86[0].x2.w2, crypt_key_X86[0].x2.w2, 4); -#endif + MD5_swap2(input_buf_X86[0].x1.w, input_buf_X86[0].x2.w2, crypt_key_X86[0].x1.w, crypt_key_X86[0].x2.w2, 4); +#else MD5_swap(input_buf_X86[0].x1.w, crypt_key_X86[0].x1.w, 4); +#endif + //dump_stuff_msg("crypt0", crypt_key_X86[0].x1.w, 16); + //dump_stuff_msg("crypt1", crypt_key_X86[0].x2.w2, 16); #else // little endian can use 'original' crypt function. DynamicFunc__crypt_md5(); diff -urpN 179-b/src/dynamic_preloads.c 179-a/src/dynamic_preloads.c --- 179-b/src/dynamic_preloads.c 2013-02-01 10:00:01.701417900 -0600 +++ 179-a/src/dynamic_preloads.c 2013-02-09 21:50:36.826895000 -0600 @@ -1423,7 +1423,11 @@ static DYNAMIC_Setup Setups[] = #endif { "dynamic_15: md5($u.md5($p).$s)", _Funcs_15,_Preloads_15,_ConstDefault, MGF_SALTED|MGF_USERNAME|MGF_NOTSSE2Safe|MGF_FULL_CLEAN_REQUIRED, MGF_KEYS_BASE16_IN1, -12, 55, 80 }, // 26 is 12+12+2 so 24+52 'fits { "dynamic_16: md5(md5(md5($p).$s).$s2)", _Funcs_16,_Preloads_16,_ConstDefault, MGF_SALTED|MGF_SALTED2|MGF_NOTSSE2Safe, MGF_KEYS_BASE16_IN1, -23, 55, 80 }, + #if !ARCH_LITTLE_ENDIAN + { "dynamic_17: phpass ($P$ or $H$)", _Funcs_17,_Preloads_17,_ConstDefault, MGF_SALTED|MGF_INPBASE64, MGF_PHPassSetup, 9, 38, 38 }, + #else { "dynamic_17: phpass ($P$ or $H$)", _Funcs_17,_Preloads_17,_ConstDefault, MGF_SALTED|MGF_INPBASE64, MGF_PHPassSetup, 9, 38 }, + #endif { "dynamic_18: md5($s.Y.$p.0xF7.$s)(Post.Office MD5)", _Funcs_18,_Preloads_18,_Const_18, MGF_SALTED|MGF_NOTSSE2Safe, MGF_POSetup, 32, 32 }, { "dynamic_19: Cisco PIX (MD5)", _Funcs_19,_Preloads_19,_ConstDefault, MGF_INPBASE64_4x6, MGF_NO_FLAG, 0, 16, 16 }, { "dynamic_20: Cisco PIX (MD5 salted)", _Funcs_20,_Preloads_20,_ConstDefault, MGF_INPBASE64_4x6|MGF_SALTED, MGF_NO_FLAG, 4, 12, 12 },