diff -urpN jumbo-bleed1/src/dynamic_preloads.c jumbo-bleed0/src/dynamic_preloads.c --- jumbo-bleed1/src/dynamic_preloads.c 2012-07-09 16:15:12.609375000 +0000 +++ jumbo-bleed0/src/dynamic_preloads.c 2012-07-09 18:26:08.156250000 +0000 @@ -874,6 +874,83 @@ static struct fmt_tests _Preloads_34[] = {NULL} }; +/* Request from Dhiru Kholia, July 9, 2012 + 1. SHA-1(ManGOS) = sha1(strtoupper($username).':'.$pass) + Works for all private server projects that use the same hashing + method: trinity, ascent and others. (Done, Dyna-35) + + 2. SHA-1(ManGOS2) = sha1($username.':'.$pass) # already supported? + (Done, Dyna-36) + + 3. sha1(strtolower($username).$pass) + Example: Admin:6c7ca345f63f835cb353ff15bd6c5e052ec08e7a + Used in SMF. + Length: 20 bytes. + + 4. sha1($salt.sha1($salt.sha1($pass))) # thick format already exits + Used in Woltlab BB. + Length: 20 bytes. +*/ + +//$ ./pass_gen.pl 'dynamic=num=35,format=sha1($u.$c1.$p),usrname=uc,const1=:' +//dynamic_35 --> sha1(upr($u).:.$p) +static DYNAMIC_primitive_funcp _Funcs_35[] = +{ + //MGF_SHA1_40_BYTE_FINISH + //MGF_SALTED ??? + //MGF_USERNAME_UPCASE + DynamicFunc__clean_input, + DynamicFunc__append_userid, + DynamicFunc__append_input1_from_CONST1, + DynamicFunc__append_keys, + DynamicFunc__SHA1_crypt_input1_to_output1_FINAL, + NULL +}; +static struct fmt_tests _Preloads_35[] = +{ + {"$dynamic_35$a12c6e0d8a4bcabb7f588456cbd20eac3332724d$$UELEV__CHARS","test1"}, + {"$dynamic_35$9afbe0bf4e1f24e7e2d9df322b3b284037ac6e19$$UU1","thatsworking"}, + {"$dynamic_35$e01ff7a245202eb8b62a653473f078f6a71b5559$$UNINECHARS","test3"}, + {"$dynamic_35$a12c6e0d8a4bcabb7f588456cbd20eac3332724d","test1", {"ELEV__CHARS"}}, + {"$dynamic_35$9afbe0bf4e1f24e7e2d9df322b3b284037ac6e19","thatsworking", {"U1"}}, + {"$dynamic_35$e01ff7a245202eb8b62a653473f078f6a71b5559","test3", {"NINECHARS"}}, + {NULL} +}; +static DYNAMIC_Constants _Const_35[] = +{ + {1, ":"}, + {0, NULL} +}; + +//$ ./pass_gen.pl 'dynamic=num=36,format=sha1($u.$c1.$p),usrname=true,const1=:' +//dynamic_36 --> sha1($u.:.$p) +static DYNAMIC_primitive_funcp _Funcs_36[] = +{ + //MGF_SHA1_40_BYTE_FINISH + //MGF_USERNAME + DynamicFunc__clean_input, + DynamicFunc__append_userid, + DynamicFunc__append_input1_from_CONST1, + DynamicFunc__append_keys, + DynamicFunc__SHA1_crypt_input1_to_output1_FINAL, + NULL +}; +static struct fmt_tests _Preloads_36[] = +{ + {"$dynamic_36$9de18a2891ab0588a0b69938cda83ed9bdd99c32$$Uu3","test1"}, + {"$dynamic_36$3549e298740bb9e8148df04f43ba2fb82a052cc4$$UHank","thatsworking"}, + {"$dynamic_36$11ef4de4baf784d0a1ca33e99a7283ef6b01cdc5$$Usz110","test3"}, + {"$dynamic_36$9de18a2891ab0588a0b69938cda83ed9bdd99c32","test1", {"u3"}}, + {"$dynamic_36$3549e298740bb9e8148df04f43ba2fb82a052cc4","thatsworking", {"Hank"}}, + {"$dynamic_36$11ef4de4baf784d0a1ca33e99a7283ef6b01cdc5","test3", {"sz110"}}, + {NULL} +}; +static DYNAMIC_Constants _Const_36[] = +{ + {1, ":"}, + {0, NULL} +}; + // Here is a 'dummy' constant array. This will be 'linked' to any dynamic format that does not have any constants. static DYNAMIC_Constants _ConstDefault[] = { @@ -929,6 +1006,8 @@ static DYNAMIC_Setup Setups[] = { "dynamic_32: md4($p.$s)", _Funcs_32,_Preloads_32,_ConstDefault, MGF_SALTED, MGF_NO_FLAG, -24 }, { "dynamic_33: md4(unicode($p))", _Funcs_33,_Preloads_33,_ConstDefault, MGF_UTF8, MGF_NO_FLAG, 0, 27, 40 }, // if we are in utf8 mode, we triple this in the init() call { "dynamic_34: md5(md4($p))", _Funcs_34,_Preloads_34,_ConstDefault, MGF_NO_FLAG, MGF_KEYS_INPUT|MGF_SET_INP2LEN32 }, + { "dynamic_35: sha1($U.:.$p) (ManGOS)", _Funcs_35,_Preloads_35,_Const_35, MGF_SHA1_40_BYTE_FINISH|MGF_USERNAME_UPCASE }, + { "dynamic_36: sha1($u.:.$p) (ManGOS2)", _Funcs_36,_Preloads_36,_Const_36, MGF_SHA1_40_BYTE_FINISH|MGF_USERNAME }, }; char *dynamic_PRELOAD_SIGNATURE(int cnt) @@ -988,4 +1067,3 @@ int dynamic_IS_VALID(int i) return 1; } -