Code:
loc_19C: # CODE XREF: scePspNpDrmInitFromGameIdMs4+94j
jal sceNpDrmVerifyAct
move $a0, $a1
bltz $v0, loc_288
move $a1, $v0
jal sceNpDrmVerifyRif
move $a0, $s0
bltz $v0, loc_288
move $a1, $v0
lui $a2, (KeyMac_2310 >> 16)
addiu $a1, $sp, 0x40+var_30
addiu $a0, $s0, 0x40
la $a2, KeyMac_2310
jal DecryptDataWithHashMac
# End of function RotR4Byte
# Segment type: Pure data
.data # .rodata
KeyHash_22D8: .word 0x9D9E3D07, 0x2F3BFDA8, 0x2E931863, 0x64A657F8 # 0
# DATA XREF: scePspNpDrmInitFromGameIdMs4+15Co
HashVrAct_22E8: .word 0xAB02762, 0xB06F8502, 0x67870841, 0x18A0E019 # 0
# DATA XREF: sceNpDrmVerifyAct+8o
# sceNpDrmVerifyAct+14o ...
.word 0xB9EE9132, 0xBF6A736E, 0xE90EF781, 0xDE0D1B16 # 4
.word 0x1A7626B0, 0x5BC87BFF # 8
KeyMac_2310: .word 0x5E4B7DDA, 0x534F9A49, 0x4AA1C1B1, 0x3B448474 # 0
# DATA XREF: scePspNpDrmInitFromGameIdMs4+C4o
# scePspNpDrmInitFromGameIdMs4+D4o
KeyVdoHash_2320:.word 0xCD5B20E8, 0x30355711, 0x16ED8DBE, 0xF66A9382 # 0
# DATA XREF: sceNpDrmVideoKey_driver_77743584+DCo
# sceNpDrmVideoKey_driver_77743584+E0o
aFlash2Act_dat: .ascii "flash2:/act.dat"<0>
# DATA XREF: sceNpDrmVideoKey_driver_77743584+48o
byte_2340: .byte 0x5E # DATA XREF: DecryptWithPsID+8o
# DecryptWithPsID+40r
4.20 4.30 key algo Code:
u8 erk_hkey[] = { 0xAA, 0xF6, 0x5A, 0x91, 0xEC, 0x37, 0x2C, 0x69, 0x09, 0x69, 0x09, 0x0F, 0x59, 0xE5, 0x3C, 0x3E };
u8 iv_hkey[] = { 0x66, 0xBC, 0xB4, 0x17, 0xD1, 0x4A, 0x2B, 0x59, 0x26, 0x40, 0x80, 0x1C, 0x11, 0xB7, 0xB4, 0x9B };
u8 erk_iv[] = { 0xA5, 0x79, 0x8C, 0x25, 0x43, 0x13, 0xBC, 0x54, 0x16, 0x95, 0x1E, 0x24, 0xEA, 0xD3, 0xC9, 0x85 };
u8 iv_iv[] = { 0x2F, 0xF2, 0x36, 0x15, 0x2A, 0x47, 0x76, 0xDA, 0xD3, 0x9B, 0x50, 0x92, 0x44, 0xE8, 0xF5, 0xC2 };
u8 ch73[0xa] = {?? }; //?? your can dump it with an appldr patch!!!
u8 key341s[] = { 0x54,0x6B,0x2F,0xF3,0xFE,0x21,0x6E,0xD2,0xBA,0x86,0x5C,0x79,0x36,0x81, 9,0xA1, //; erk secret NPKEY
0x5F,0x2B, 0xD,0x23,0xC2, 3,0x13,0x54,0xB1,0xF6,0xF3,0x6B, 0xF,0xDB,0x4D,0x46 ,// erk
0x9B,0x87,0x1D,0x64,0x14,0xB8,0xAA,0xCE,0x54,0x2C,0x18,0x10, 0xA,0xC2,0x18,0x93 };// iv
u8 key341[] = { 0xBB,0x4D,0xBF,0x66,0xB7,0x44,0xA3,0x39,0x34,0x17,0x2D,0x9F,0x83,0x79,0xA7,0xA5,
0xEA,0x74,0xCB,0xF,0x55,0x9B,0xB9,0x5D,0xE,0x7A,0xEC,0xE9,0x17, 2,0xB7, 6,
0xAD,0xF7,0xB2, 7,0xA1,0x5A,0xC6, 1,0x11,0xE,0x61,0xDD,0xFC,0x21,0xA,0xF6};
u8 keyd[0x30];
void key430()
{
AES_ctx ctxErk, ctxIv;
u8 ch73shErk[0x10], ch73shIv[0x10];
hmac_sha1(ch73,0xa,erk_hkey,0x10,ch73shErk,16); //16 = 128bit hash
AES_set_key(&ctxErk, ch73shErk, 128);
AES_cbc_decrypt_iv(&ctxErk, key341s, keyd, 0x20, erk_iv, 1);
hmac_sha1(ch73,0xa,iv_hkey,0x10,ch73shIv,16); //16 = 128bit hash
AES_set_key(&ctxIv, ch73shIv, 128);
AES_cbc_decrypt_iv(&ctxIv, key341s+0x20, keyd+0x20, 0x10, iv_iv, 1);
} From