User Tools

Site Tools


netmdocm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
netmdocm [2011/01/16 14:34] nopslednetmdocm [2024/05/21 14:32] nopsled
Line 210: Line 210:
  
  
-There is a 40-byte header (MACLIST\0, followed by 4 DWORDs with unknown meaning, followed by (DWORD)2, followed by the number of operations done on the maclist (in this case 3), followed by the number of MACs (here: 0), followed by 0 (unknown field).  Then come the 8-byte macs, but in this case there are none.  Then follow extensions, which have this structure: a DWORD with the type of the extension, and a DWORD with the length (excluding this 8 byte extension header).  In this case, there is only an extension of type 0 which contains 0x18 bytes.  The extension 0 maps ekb device/leaf IDs to status codes in a yet to be determined manner, in this case: 0x00000002 -> 1, 0x00010001 -> 3, 0x00010002 -> 1.+There is a 40-byte header (MACLIST\0, followed by 16 bytes of the  SalOmgID (omg_id.dat), followed by (DWORD)2, followed by the number of operations done on the maclist (in this case 3), followed by the number of MACs (here: 0), followed by 0 (unknown field).  Then come the 8-byte macs, but in this case there are none.  Then follow extensions, which have this structure: a DWORD with the type of the extension, and a DWORD with the length (excluding this 8 byte extension header).  In this case, there is only an extension of type 0 which contains 0x18 bytes.  The extension 0 maps ekb device/leaf IDs to status codes in a yet to be determined manner, in this case: 0x00000002 -> 1, 0x00010001 -> 3, 0x00010002 -> 1.
  
 ===== maclist2.dat ===== ===== maclist2.dat =====
Line 937: Line 937:
  
 In other words, this extracts the 0-extension of a MACLIST and an encrypted hash of that. In other words, this extracts the 0-extension of a MACLIST and an encrypted hash of that.
 +
 +See pcmaclist(6)
  
 /* /*
Line 1085: Line 1087:
  
 ===== querycif(09) - Get KEK encrypted content key ===== ===== querycif(09) - Get KEK encrypted content key =====
- 
-/* 
-Procedure prototype: 
- querycif(09) 
- 
-Input: 
- 
-SalPointer const &, 
-SalPointer const &, 
-long, 
-long, 
-SalPointer const &, 
-SalOmgId const &, 
-SalPointer const &, 
-long, 
-SalExtrinsicsProg const &, 
- 
-Output: 
- 
-SalAsnSeqBegin, 
-long &, 
-OmgString & 
-querycif(09) 
- 
-Process File, SalOmgId, param3, long (3), long (3), Ekb capability table, 00010001_EKB -> Enc(CKEY, KEK) 
-  
-*/ 
-  
- 
-unsigned char param3[24] = 
-{ 
-    0x46, 0x73, 0xE4, 0x89, 0x6A, 0xA9, 0x0B, 0x96, 0x69, 0x43, 0xAA, 0x39, 0x99, 0xE2, 0x08, 0xC4,  
-    0xF8, 0xCA, 0x19, 0x2E, 0x38, 0xE2, 0x3E, 0x4C,  
-} ; 
- 
-unsigned char param6_EkbCapabilityTable[24] = 
-{ 
-    0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00,  
-    0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,  
-} ; 
- 
- 
-/* Return value. TODO: double check */ 
- 
-unsigned char return_value[11] = 
-{ 
-    0x30, 0x80, 0x02, 0x01, 0x00, 0x04, 0x08, 0x82, 0x19, 0x23, 0xFD,  
-} ; 
  
 <code> <code>
Line 1185: Line 1139:
  
  
- 
- 
-function GetKekEncCKEY(blob_t OpfImage (arg_2), blob_t EkbCapTableBody (arg_3)) 
-{ 
- Array ProcessFile[5]; 
-  
- dict[4] = EkbCapTableBody; 
- ProcessFile = decode_asn1(opf_image); 
- dict[3] = OpfImage; 
- 
- //  
- // Calculate HMAC for the opf[3] usage information. Check if it matches with the HMAC value in opf[1] 
-        // 
-        // ProcessFile[1]:  HMAC(opf[3], saldec(opf[2])) 
- 
- blob_t dec_pf2 = devicesal_220_decrypt_hook_249(ProcessFile[2],  EkbCapTableBody); 
- blob_t serialized_opf3 = BCSerialize(ProcessFile[3]); 
- blob_t key = concat ( dec_pf2, serialized_opf3 ); 
- blob_t hasked_key = inline::SHA-1 ( key, 0); 
- blob_t key_pf2 = concat ( dec_pf2, hashed_key ); 
- blob_t hashed_key_pf2 = inline:SHA-1 (key_pf2); 
-  
-        // if( HMAC(opf[3], saldec(opf[2]) == ProcessFile[1]) 
-        // 
-        // 
- if (compare_blob (hashed_key_pf2, ProcessFile[1])  == 0) // 0xffff  
- // Test_Small_Int_For_Zero -> 0 (acc) 
- { 
- ... todo 
- } 
-} 
  
 </code> </code>
netmdocm.txt · Last modified: 2024/05/21 14:50 by nopsled

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki