
Data Structures | |
| struct | aes_s |
| struct | shuffle_s |
| struct | drms_s |
Defines | |
| #define | Digest DigestMD5 |
| #define | SWAP(a, b) { (a) ^= (b); (b) ^= (a); (a) ^= (b); } |
| #define | REVERSE(p, n) |
| #define | ROT13(c) |
| #define | DRMS_DIRNAME ".drms" |
| #define | ISCINFO "iSCInfo" |
| #define | PROD_NAME "iPod" |
| #define | VENDOR_NAME "Apple Computer, Inc." |
Functions | |
| static void | InitAES (struct aes_s *, uint32_t *) |
| static void | DecryptAES (struct aes_s *, uint32_t *, const uint32_t *) |
| static void | InitShuffle (struct shuffle_s *, uint32_t *, uint32_t) |
| static void | DoShuffle (struct shuffle_s *, uint32_t *, uint32_t) |
| static uint32_t | FirstPass (uint32_t *) |
| static void | SecondPass (uint32_t *, uint32_t) |
| static void | ThirdPass (uint32_t *) |
| static void | FourthPass (uint32_t *) |
| static void | TinyShuffle1 (uint32_t *) |
| static void | TinyShuffle2 (uint32_t *) |
| static void | TinyShuffle3 (uint32_t *) |
| static void | TinyShuffle4 (uint32_t *) |
| static void | TinyShuffle5 (uint32_t *) |
| static void | TinyShuffle6 (uint32_t *) |
| static void | TinyShuffle7 (uint32_t *) |
| static void | TinyShuffle8 (uint32_t *) |
| static void | DoExtShuffle (uint32_t *) |
| static int | GetSystemKey (uint32_t *, bool) |
| static int | WriteUserKey (void *, uint32_t *) |
| static int | ReadUserKey (void *, uint32_t *) |
| static int | GetUserKey (void *, uint32_t *) |
| static int | GetSCIData (char *, uint32_t **, uint32_t *) |
| static int | HashSystemInfo (uint32_t *) |
| static int | GetiPodID (int64_t *) |
| static void | BlockXOR (uint32_t *p_dest, uint32_t *p_s1, uint32_t *p_s2) |
| void * | drms_alloc (const char *psz_homedir) |
| void | drms_free (void *_p_drms) |
| void | drms_decrypt (void *_p_drms, uint32_t *p_buffer, uint32_t i_bytes, uint32_t *p_key) |
| void | drms_get_p_key (void *_p_drms, uint32_t *p_key) |
| int | drms_init (void *_p_drms, uint32_t i_type, uint8_t *p_info, uint32_t i_len) |
| #define Digest DigestMD5 |
| #define DRMS_DIRNAME ".drms" |
Referenced by ReadUserKey(), and WriteUserKey().
| #define ISCINFO "iSCInfo" |
Referenced by GetSCIData().
| #define PROD_NAME "iPod" |
Referenced by GetiPodID().
| #define REVERSE | ( | p, | |||
| n | ) |
| #define ROT13 | ( | c | ) |
Value:
Referenced by DoShuffle().
Referenced by FourthPass(), ThirdPass(), TinyShuffle6(), TinyShuffle7(), and TinyShuffle8().
| #define VENDOR_NAME "Apple Computer, Inc." |
Referenced by GetiPodID().
| static void BlockXOR | ( | uint32_t * | p_dest, | |
| uint32_t * | p_s1, | |||
| uint32_t * | p_s2 | |||
| ) | [inline, static] |
Referenced by drms_decrypt(), and GetUserKey().
| static void DecryptAES | ( | struct aes_s * | p_aes, | |
| uint32_t * | p_dest, | |||
| const uint32_t * | p_src | |||
| ) | [static] |
References AES_KEY_COUNT, AES_XOR_ROR, p_aes_decrypt, p_aes_itable, aes_s::pp_dec_keys, and aes_s::pp_enc_keys.
Referenced by drms_decrypt(), and GetUserKey().
| static void DoExtShuffle | ( | uint32_t * | p_bordel | ) | [static] |
| static void DoShuffle | ( | struct shuffle_s * | p_shuffle, | |
| uint32_t * | p_buffer, | |||
| uint32_t | i_size | |||
| ) | [static] |
References AddMD5(), DoExtShuffle(), EndMD5(), shuffle_s::i_version, InitMD5(), shuffle_s::p_bordel, shuffle_s::p_commands, md5_s::p_digest, p_shuffle_add, p_shuffle_sub, p_shuffle_xor, REVERSE, ROT13, and U32_AT().
Referenced by GetUserKey().
| void* drms_alloc | ( | const char * | psz_homedir | ) |
References drms_s::psz_homedir.
Referenced by MP4_ReadBox_sample_soun(), and MP4_ReadBox_sample_vide().
| void drms_decrypt | ( | void * | _p_drms, | |
| uint32_t * | p_buffer, | |||
| uint32_t | i_bytes, | |||
| uint32_t * | p_key | |||
| ) |
References drms_s::aes, BlockXOR(), DecryptAES(), drms_s::p_key, and REVERSE.
Referenced by Demux(), and drms_init().
| void drms_free | ( | void * | _p_drms | ) |
References drms_s::p_name.
Referenced by MP4_FreeBox_sample_soun(), MP4_FreeBox_sample_vide(), and MP4_ReadBox_drms().
| void drms_get_p_key | ( | void * | _p_drms, | |
| uint32_t * | p_key | |||
| ) |
| int drms_init | ( | void * | _p_drms, | |
| uint32_t | i_type, | |||
| uint8_t * | p_info, | |||
| uint32_t | i_len | |||
| ) |
References AddMD5(), drms_s::aes, drms_decrypt(), EndMD5(), FOURCC_iviv, FOURCC_key, FOURCC_name, FOURCC_priv, FOURCC_user, GetUserKey(), drms_s::i_key, drms_s::i_user, InitAES(), InitMD5(), md5_s::p_digest, drms_s::p_iviv, drms_s::p_key, drms_s::p_name, REVERSE, strdup(), and U32_AT().
Referenced by MP4_ReadBox_drms().
| static uint32_t FirstPass | ( | uint32_t * | p_bordel | ) | [static] |
| static void FourthPass | ( | uint32_t * | p_bordel | ) | [static] |
| static int GetiPodID | ( | int64_t * | p_ipod_id | ) | [static] |
| static int GetSCIData | ( | char * | psz_ipod, | |
| uint32_t ** | pp_sci, | |||
| uint32_t * | pi_sci_size | |||
| ) | [static] |
| static int GetSystemKey | ( | uint32_t * | p_sys_key, | |
| bool | b_ipod | |||
| ) | [static] |
References AddMD5(), EndMD5(), GetiPodID(), HashSystemInfo(), InitMD5(), md5_s::p_digest, and U64_AT().
Referenced by GetUserKey().
| static int GetUserKey | ( | void * | _p_drms, | |
| uint32_t * | p_user_key | |||
| ) | [static] |
References BlockXOR(), DecryptAES(), DoShuffle(), getenv(), GetSCIData(), GetSystemKey(), drms_s::i_key, drms_s::i_user, InitAES(), InitShuffle(), ReadUserKey(), REVERSE, U32_AT(), and WriteUserKey().
Referenced by drms_init().
| static int HashSystemInfo | ( | uint32_t * | p_system_hash | ) | [static] |
| static void InitAES | ( | struct aes_s * | p_aes, | |
| uint32_t * | p_key | |||
| ) | [static] |
References AES_KEY_COUNT, AES_ROR, p_aes_encrypt, p_aes_table, aes_s::pp_dec_keys, and aes_s::pp_enc_keys.
Referenced by drms_init(), and GetUserKey().
| static void InitShuffle | ( | struct shuffle_s * | p_shuffle, | |
| uint32_t * | p_sys_key, | |||
| uint32_t | i_version | |||
| ) | [static] |
References AddMD5(), EndMD5(), shuffle_s::i_version, InitMD5(), shuffle_s::p_bordel, shuffle_s::p_commands, md5_s::p_digest, REVERSE, and U32_AT().
Referenced by GetUserKey().
| static int ReadUserKey | ( | void * | _p_drms, | |
| uint32_t * | p_user_key | |||
| ) | [static] |
References DRMS_DIRNAME, drms_s::i_key, drms_s::i_user, drms_s::psz_homedir, and vlc_fopen().
Referenced by GetUserKey().
| static void SecondPass | ( | uint32_t * | p_bordel, | |
| uint32_t | i_tmp | |||
| ) | [static] |
| static void ThirdPass | ( | uint32_t * | p_bordel | ) | [static] |
| static void TinyShuffle1 | ( | uint32_t * | p_bordel | ) | [static] |
Referenced by FirstPass().
| static void TinyShuffle2 | ( | uint32_t * | p_bordel | ) | [static] |
Referenced by FirstPass().
| static void TinyShuffle3 | ( | uint32_t * | p_bordel | ) | [static] |
Referenced by SecondPass().
| static void TinyShuffle4 | ( | uint32_t * | p_bordel | ) | [static] |
Referenced by SecondPass().
| static void TinyShuffle5 | ( | uint32_t * | p_bordel | ) | [static] |
Referenced by SecondPass().
| static void TinyShuffle6 | ( | uint32_t * | p_bordel | ) | [static] |
| static void TinyShuffle7 | ( | uint32_t * | p_bordel | ) | [static] |
| static void TinyShuffle8 | ( | uint32_t * | p_bordel | ) | [static] |
| static int WriteUserKey | ( | void * | _p_drms, | |
| uint32_t * | p_user_key | |||
| ) | [static] |
References DRMS_DIRNAME, drms_s::i_key, drms_s::i_user, drms_s::psz_homedir, and vlc_fopen().
Referenced by GetUserKey().
1.5.6