#ifndef _FSB_KEYS_H_ #define _FSB_KEYS_H_ typedef struct { int is_fsb5; /* FSB5 or FSB4/3*/ int is_alt; /* alt XOR mode (seemingly not tied to FSB version or anything) */ size_t fsbkey_size; const uint8_t *fsbkey; } fsbkey_info; /** * List of known keys, found in aluigi's site (http://aluigi.altervista.org), forums and with guessfsb.exe */ /* DJ Hero 2 (X360) */ //"nos71RiT" static const uint8_t key_dj2[] = { 0x6E,0x6F,0x73,0x37,0x31,0x52,0x69,0x54 }; /* Double Fine Productions: Brutal Legend, Massive Chalice, etc (multi) */ //"DFm3t4lFTW" static const uint8_t key_dfp[] = { 0x44,0x46,0x6D,0x33,0x74,0x34,0x6C,0x46,0x54,0x57 }; /* N++ (PC?) */ //"H$#FJa%7gRZZOlxLiN50&g5Q" static const uint8_t key_npp[] = { 0x48,0x24,0x23,0x46,0x4A,0x61,0x25,0x37,0x67,0x52,0x5A,0x5A,0x4F,0x6C,0x78,0x4C,0x69,0x4E,0x35,0x30,0x26,0x67,0x35,0x51 }; /* Slightly Mad Studios: Project CARS (PC?), World of Speed (PC) */ //"sTOoeJXI2LjK8jBMOk8h5IDRNZl3jq3I" static const uint8_t key_sms[] = { 0x73,0x54,0x4F,0x6F,0x65,0x4A,0x58,0x49,0x32,0x4C,0x6A,0x4B,0x38,0x6A,0x42,0x4D,0x4F,0x6B,0x38,0x68,0x35,0x49,0x44,0x52,0x4E,0x5A,0x6C,0x33,0x6A,0x71,0x33,0x49 }; /* Ghost in the Shell: First Assault (PC) */ //"%lAn2{Pi*Lhw3T}@7*!kV=?qS$@iNlJ" static const uint8_t key_gfs[] = { 0x25,0x6C,0x41,0x6E,0x32,0x7B,0x50,0x69,0x2A,0x4C,0x68,0x77,0x33,0x54,0x7D,0x40,0x37,0x2A,0x21,0x6B,0x56,0x3D,0x3F,0x71,0x53,0x24,0x40,0x69,0x4E,0x6C,0x4A }; /* RevHeadz Engine Sounds (Mobile) */ //"1^7%82#&5$~/8sz" static const uint8_t key_rev[] = { 0x31,0x5E,0x37,0x25,0x38,0x32,0x23,0x26,0x35,0x24,0x7E,0x2F,0x38,0x73,0x7A }; /* Dark Souls 3 (PC) */ //"FDPrVuT4fAFvdHJYAgyMzRF4EcBAnKg" static const uint8_t key_ds3[] = { 0x46,0x44,0x50,0x72,0x56,0x75,0x54,0x34,0x66,0x41,0x46,0x76,0x64,0x48,0x4A,0x59,0x41,0x67,0x79,0x4D,0x7A,0x52,0x46,0x34,0x45,0x63,0x42,0x41,0x6E,0x4B,0x67 }; /* Mortal Kombat X */ static const uint8_t key_mkx[] = { 0x99,0x61,0x64,0xB5,0xFC,0x0F,0x40,0x29,0x83,0xF6,0x1F,0x22,0x0B,0xB5,0x1D,0xC6 }; /* Xian Xia Chuan (PC) */ //"gat@tcqs2010" static const uint8_t key_xxc[] = { 0x67,0x61,0x74,0x40,0x74,0x63,0x71,0x73,0x32,0x30,0x31,0x30 }; /* Mirror War Reincarnation of Holiness (PC) */ //"logicsounddesignmwsdev" static const uint8_t key_mwr[] = { 0x6C,0x6F,0x67,0x69,0x63,0x73,0x6F,0x75,0x6E,0x64,0x64,0x65,0x73,0x69,0x67,0x6E,0x6D,0x77,0x73,0x64,0x65,0x76 }; /* Need for Speed Shift 2 Unleashed (PC demo?) */ //"p&oACY^c4LK5C2v^x5nIO6kg5vNH$tlj" static const uint8_t key_n2u[] = { 0x70,0x26,0x6F,0x41,0x43,0x59,0x5E,0x63,0x34,0x4C,0x4B,0x35,0x43,0x32,0x76,0x5E,0x78,0x35,0x6E,0x49,0x4F,0x36,0x6B,0x67,0x35,0x76,0x4E,0x48,0x24,0x74,0x6C,0x6A }; /* Critter Crunch, Superbrothers: Sword & Sworcery */ //"j1$Mk0Libg3#apEr42mo" static const uint8_t key_ccr[] = { 0x6A,0x31,0x24,0x4D,0x6B,0x30,0x4C,0x69,0x62,0x67,0x33,0x23,0x61,0x70,0x45,0x72,0x34,0x32,0x6D,0x6F }; /* Cyphers */ //"@kdj43nKDN^k*kj3ndf02hd95nsl(NJG" static const uint8_t key_cyp[] = { 0x40,0x6B,0x64,0x6A,0x34,0x33,0x6E,0x4B,0x44,0x4E,0x5E,0x6B,0x2A,0x6B,0x6A,0x33,0x6E,0x64,0x66,0x30,0x32,0x68,0x64,0x39,0x35,0x6E,0x73,0x6C,0x28,0x4E,0x4A,0x47 }; /* Xuan Dou Zhi Wang / King of Combat */ //"Xiayuwu69252.Sonicli81223#$*@*0" static const uint8_t key_xdz[] = { 0x58,0x69,0x61,0x79,0x75,0x77,0x75,0x36,0x39,0x32,0x35,0x32,0x2E,0x53,0x6F,0x6E,0x69,0x63,0x6C,0x69,0x38,0x31,0x32,0x32,0x33,0x23,0x24,0x2A,0x40,0x2A,0x30 }; /* Ji Feng Zhi Ren / Kritika Online */ //"kri_tika_5050_" static const uint8_t key_jzz[] = { 0x6B,0x72,0x69,0x5F,0x74,0x69,0x6B,0x61,0x5F,0x35,0x30,0x35,0x30,0x5F }; /* Invisible Inc. */ //"mint78run52" static const uint8_t key_inv[] = { 0x6D,0x69,0x6E,0x74,0x37,0x38,0x72,0x75,0x6E,0x35,0x32 }; /* Guitar Hero 3 */ //"5atu6w4zaw" static const uint8_t key_gh3[] = { 0x35,0x61,0x74,0x75,0x36,0x77,0x34,0x7A,0x61,0x77 }; /* Supreme Commander 2 */ //"B2A7BB00" static const uint8_t key_sc2[] = { 0x42,0x32,0x41,0x37,0x42,0x42,0x30,0x30 }; /* Cookie Run: Ovenbreak */ //"ghfxhslrghfxhslr" static const uint8_t key_cro[] = { 0x67,0x68,0x66,0x78,0x68,0x73,0x6C,0x72,0x67,0x68,0x66,0x78,0x68,0x73,0x6C,0x72 }; /* Monster Jam (PS2) */ //"truck/impact/carbody" static const uint8_t key_mtj[] = { 0x74,0x72,0x75,0x63,0x6B,0x2F,0x69,0x6D,0x70,0x61,0x63,0x74,0x2F,0x63,0x61,0x72,0x62,0x6F,0x64,0x79 }; /* Guitar Hero 5 (X360) */ static const uint8_t key_gh5[] = { 0xFC,0xF9,0xE4,0xB3,0xF5,0x57,0x5C,0xA5,0xAC,0x13,0xEC,0x4A,0x43,0x19,0x58,0xEB,0x4E,0xF3,0x84,0x0B,0x8B,0x78,0xFA,0xFD,0xBB,0x18,0x46,0x7E,0x31,0xFB,0xD0 }; // Unknown: // - Battle: Los Angeles // - Guitar Hero: Warriors of Rock, DJ hero FSB // - Longmenkezhan // - Gas Guzzlers: Combat Carnage (PC?) "C5FA83EA64B34EC2BFE" hex or text? [FSB5] static const fsbkey_info fsbkey_list[] = { { 0,0, sizeof(key_dj2),key_dj2 }, { 0,0, sizeof(key_dfp),key_dfp }, { 1,0, sizeof(key_dfp),key_dfp },//untested { 1,1, sizeof(key_dfp),key_dfp },//untested { 1,0, sizeof(key_npp),key_npp }, { 1,0, sizeof(key_sms),key_sms }, { 1,0, sizeof(key_gfs),key_gfs }, { 1,0, sizeof(key_rev),key_rev }, { 1,0, sizeof(key_ds3),key_ds3 },//untested { 1,1, sizeof(key_ds3),key_ds3 }, { 1,0, sizeof(key_mkx),key_mkx },//untested { 1,1, sizeof(key_mkx),key_mkx },//untested { 0,0, sizeof(key_xxc),key_xxc },//untested { 0,1, sizeof(key_xxc),key_xxc },//untested { 1,0, sizeof(key_xxc),key_xxc },//untested { 1,1, sizeof(key_xxc),key_xxc },//untested { 0,0, sizeof(key_mwr),key_mwr },//untested { 0,1, sizeof(key_mwr),key_mwr },//untested { 1,0, sizeof(key_mwr),key_mwr },//untested { 1,1, sizeof(key_mwr),key_mwr },//untested { 0,0, sizeof(key_n2u),key_n2u },//untested { 0,1, sizeof(key_n2u),key_n2u },//untested { 1,0, sizeof(key_n2u),key_n2u },//untested { 1,1, sizeof(key_n2u),key_n2u },//untested { 0,0, sizeof(key_ccr),key_ccr },//untested { 0,1, sizeof(key_ccr),key_ccr },//untested { 1,0, sizeof(key_ccr),key_ccr },//untested { 1,1, sizeof(key_ccr),key_ccr },//untested { 0,0, sizeof(key_cyp),key_cyp },//untested { 0,1, sizeof(key_cyp),key_cyp },//untested { 1,0, sizeof(key_cyp),key_cyp },//untested { 1,1, sizeof(key_cyp),key_cyp },//untested { 0,0, sizeof(key_xdz),key_xdz },//untested { 0,1, sizeof(key_xdz),key_xdz },//untested { 1,0, sizeof(key_xdz),key_xdz },//untested { 1,1, sizeof(key_xdz),key_xdz },//untested { 0,0, sizeof(key_jzz),key_jzz },//untested { 0,1, sizeof(key_jzz),key_jzz },//untested { 1,0, sizeof(key_jzz),key_jzz },//untested { 1,1, sizeof(key_jzz),key_jzz },//untested { 0,0, sizeof(key_inv),key_inv },//untested { 0,1, sizeof(key_inv),key_inv },//untested { 1,0, sizeof(key_inv),key_inv },//untested { 1,1, sizeof(key_inv),key_inv },//untested { 0,0, sizeof(key_gh3),key_gh3 },//untested { 0,1, sizeof(key_gh3),key_gh3 },//untested { 1,0, sizeof(key_gh3),key_gh3 },//untested { 1,1, sizeof(key_gh3),key_gh3 },//untested { 0,0, sizeof(key_sc2),key_sc2 },//untested { 0,1, sizeof(key_sc2),key_sc2 },//untested { 1,0, sizeof(key_sc2),key_sc2 },//untested { 1,1, sizeof(key_sc2),key_sc2 },//untested { 1,0, sizeof(key_cro),key_cro }, { 0,1, sizeof(key_mtj),key_mtj },// FSB3 { 0,1, sizeof(key_gh5),key_gh5 },// FSB4 }; static const int fsbkey_list_count = sizeof(fsbkey_list) / sizeof(fsbkey_list[0]); #endif /* _FSB_KEYS_H_ */