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 [2009/06/16 01:45] – some info on maclists marcusnetmdocm [2010/06/09 07:35] megadiscman
Line 166: Line 166:
 ASN.1 Sequence with a data structure that is setup and manipulated by functions called through DICT 187 (these functions are in DICT 188). ASN.1 Sequence with a data structure that is setup and manipulated by functions called through DICT 187 (these functions are in DICT 188).
  
-30 80 +  30 80 
-      02 02 03E9 +        02 02 03E9 
-      04 14 43EA428F71EE7B665D10752E85AB16E5A50C6249 ; MAC +        04 14 43EA428F71EE7B665D10752E85AB16E5A50C6249 ; MAC 
-      04 14 638163B82C4E31810FBEE01B2E7FC25B879586E3 +        04 14 638163B82C4E31810FBEE01B2E7FC25B879586E3 ; Enc(CKEY) ? Offset 0x1E according to Jan (// key is at offset 0x1E! (OMGDecrypter.cpp) 
-      30 80 02 01 6B ; 17 (some time stamp) + 
-            02 04 48C2298F +        30 80 02 01 6B ; 17 (some time stamp) 
-            02 01 07 ; 7 == creation time of structure +              02 04 48C2298F 
-            02 04 48C2298F +              02 01 07 ; 7 == creation time of structure 
-            02 01 6D ; 109 +              02 04 48C2298F 
-            02 01 00 +              02 01 6D ; 109 
-            02 01 65 ; 101 +              02 01 00 
-            04 14 C04B513EDE54342D709D0CB8621E646FDDCB345E +              02 01 65 ; 101 
-            02 01 00 ; 0 == scrambled form of the maclist id == SalOmgId +              04 14 C04B513EDE54342D709D0CB8621E646FDDCB345E 
-            04 14 010F50000004000000EFF3C3244C602635178457 +              02 01 00 ; 0 == scrambled form of the maclist id == SalOmgId 
-            02 01 68 ; 104 +              04 14 010F50000004000000EFF3C3244C602635178457 
-            02 02 1FD7 +              02 01 68 ; 104 
-            02 01 06 ; 6 == source name +              02 02 1FD7 
-            04 15 72617720636F6E74656E7420696D706F7274696E67 +              02 01 06 ; 6 == source name 
-                   r a w   c o n t e n t   i m p o r t i n g +              04 15 72617720636F6E74656E7420696D706F7274696E67 
-            02 01 67 ; 103 == flags? +                     r a w   c o n t e n t   i m p o r t i n g 
-            02 01 02 +              02 01 67 ; 103 == flags? 
-            02 01 01 ; 1 == max checkout? +              02 01 02 
-            02 01 03 +              02 01 01 ; 1 == max checkout? 
-            02 01 08 ; 8 == checkout count? +              02 01 03 
-            02 01 03 +              02 01 08 ; 8 == checkout count? 
-            02 01 05 ; 5 == flags (1|2|4) +              02 01 03 
-            02 01 04 +              02 01 05 ; 5 == flags (1|2|4) 
-            0000 ; End array +              02 01 04 
-      30 80 0000 ; Empty array +              0000 ; End array 
-      0000 ; End array+        30 80 0000 ; Empty array 
 +        0000 ; End array
  
 ===== maclist1.dat ===== ===== maclist1.dat =====
Line 1063: Line 1064:
 } ; } ;
  
-===== nc_omgtomsa(4) =====+===== nc_omgtomsa(0) =====
  
 /* /*
Line 1157: Line 1158:
 { {
  0: short int 1001b;  0: short int 1001b;
- 1: blob_t key_or_id_20; // = SHA1( dec_pf2 + SHA1( dec_pf2 + Pf3_serialized ) ) + 1: blob_t key_or_id_20;    // = HMAC(ProcessFile[3], SalEnc(Key)) = HMAC(ProcessFile[3], ProcessFile[2]) 
- 2: blob_t key_or_id_20; +                                   // 
- 3: struct { // 26+                                   //              = SHA1( dec_pf2 + SHA1( dec_pf2 + Pf3_serialized ) ) 
 + 2: blob_t key_or_id_20;    // Key 
 +                                   // 
 + 3: struct {    // 26
       dd 6Bh const_107       dd 6Bh const_107
       dd 4400AFA0h timestamp       dd 4400AFA0h timestamp
Line 1210: Line 1214:
  dict[3] = OpfImage;  dict[3] = OpfImage;
  
- // Seems to check the integrity of the data in the usage-rights file (.opf). + //  
- //+ // Calculate HMAC for the opf[3] usage informationCheck 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 dec_pf2 = devicesal_220_decrypt_hook_249(ProcessFile[2],  EkbCapTableBody);
  blob_t serialized_opf3 = BCSerialize(ProcessFile[3]);  blob_t serialized_opf3 = BCSerialize(ProcessFile[3]);
- 
  blob_t key = concat ( dec_pf2, serialized_opf3 );  blob_t key = concat ( dec_pf2, serialized_opf3 );
  blob_t hasked_key = inline::SHA-1 ( key, 0);  blob_t hasked_key = inline::SHA-1 ( key, 0);
-  
  blob_t key_pf2 = concat ( dec_pf2, hashed_key );  blob_t key_pf2 = concat ( dec_pf2, hashed_key );
  blob_t hashed_key_pf2 = inline:SHA-1 (key_pf2);  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   if (compare_blob (hashed_key_pf2, ProcessFile[1])  == 0) // 0xffff 
  // Test_Small_Int_For_Zero -> 0 (acc)  // Test_Small_Int_For_Zero -> 0 (acc)
Line 1237: Line 1244:
 netmd(0) netmd(0)
  
-Process file, unknown blob, Ekb capability table, 00010002ekb, unknown blob, Content id, SalOmgId -> unknown blob+Process file, unknown blob, Ekb capability table, 00010002ekb, unknown blob, Content id, SalOmgId -> ASN.1([status,nonce,checkout_context]) 
 + 
 +status = 0: Success, nonce will be used to authenticate NetMD unit, checkout_context contains all data to continue processing. 
 +status != 0: Error, nonce and checkout_context don't exist
  
 Procedure prototype: Procedure prototype:
netmdocm.txt · Last modified: 2024/05/21 14:50 by nopsled

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki