netmdocm
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
netmdocm [2011/01/15 13:11] – nopsled | netmdocm [2011/01/16 14:43] – nopsled | ||
---|---|---|---|
Line 904: | Line 904: | ||
===== maclist(1) ===== | ===== maclist(1) ===== | ||
+ | |||
+ | XOR the SalOmgId with a constant key, expand that to a symmetric key and apply to the SHA-1 hash of MACLIST. | ||
===== Sample input: ===== | ===== Sample input: ===== | ||
Line 929: | Line 931: | ||
} ; | } ; | ||
- | |||
- | XOR the SalOmgId with a constant key, expand that to a symmetric key and apply to the SHA-1 hash of MACLIST. | ||
===== maclist(8) ===== | ===== maclist(8) ===== | ||
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 1474: | Line 1476: | ||
- | ===== netmd.ocm Decompiled ===== | ||
- | < | ||
- | |||
- | Dict[0xf9] = {0x63, 0x81, 0x63, 0xB8, 0x2C, 0x4E, 0x31, | ||
- | 0x81, 0x0F, 0xBE, 0xE0, 0x1B, 0x2E, 0x7F, | ||
- | 0xC2, 0x5B, 0x87, 0x95, 0x86, 0xE3}; | ||
- | |||
- | |||
- | // CIPHERTEXT must be a serialized and encrypted blob (see dev_0xd8/ | ||
- | // The PLAINTEXT is appended to that blob and the serialized and encrypted result is returned. | ||
- | blob_t | ||
- | netmd_0x07 (blob_t key, blob_t some_plaintext, | ||
- | { | ||
- | static blob_t pad[16] = { 0x33, 0x4a, 0x18, 0x94, 0xc1, 0xf3, 0x83, 0xf6, | ||
- | 0xd3, 0xeb, 0x6a, 0xc2, 0xad, 0x13, 0x07, 0xca }; | ||
- | blob_t data = dev_0xd8 (some_ciphertext, | ||
- | data = CONCAT (data, some_plaintext); | ||
- | return dev_0xd9 (data, XOR (key, pad)); | ||
- | } | ||
- | </ | ||
- | |||
- | ===== icv.ocm Decompiled ===== | ||
- | |||
- | < | ||
- | |||
- | // | ||
- | // Generate a SalOmgId | ||
- | // | ||
- | // | ||
- | // | ||
- | // < | ||
- | // | ||
- | // Note: When OpenMG is used (trough the UI) for the first time this value is generated, | ||
- | // by calling the salwrap function getSalOmgId. | ||
- | // | ||
- | // const unsigned __int8 *__cdecl getSalOmgId() | ||
- | // | ||
- | blob_t icv(07) | ||
- | { | ||
- | | ||
- | | ||
- | data = BCX_01_Concat(PrefixSalOmgId, | ||
- | Push 1 | ||
- | | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | ===== maclist.ocm | ||
- | |||
- | // maclist(1) | ||
- | // | ||
- | // work in progress | ||
- | |||
- | < | ||
- | |||
- | int | ||
- | maclist_0x01(blob_t SalOmgId, blob_t maclist2dat, | ||
- | { | ||
- | static blob_t pad[16] = {0x20, 0xBE, 0xDE, 0x72, 0xA3, 0xB8, 0x62, 0x60, | ||
- | 0x71, 0x44, 0x3A, 0x33, 0xE9, 0xAC, 0x69, 0xCE}; | ||
- | static SHA1state, hash_maclist, | ||
- | |||
- | SHA1state | ||
- | BCX_1A_SHA1AddData(maclist, | ||
- | hash_maclist | ||
- | |||
- | xor_SalOmgId | ||
- | hash_maclist_salomgid = salenc_sha1(SalOmgId_xor, | ||
- | |||
- | hash_maclist == hash_xorSalOmgId? | ||
- | } | ||
- | </ |
netmdocm.txt · Last modified: 2024/05/21 14:50 by nopsled