LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
xb360.h
Go to the documentation of this file.
1/*
2 * xb360.h
3 *
4 * Created on: Sep 4, 2008
5 */
6
7#ifndef __XB360_H
8#define __XB360_H
9
10#define XEKEY_MANUFACTURING_MODE 0x00
11#define XEKEY_ALTERNATE_KEY_VAULT 0x01
12#define XEKEY_RESERVED_BYTE2 0x02
13#define XEKEY_RESERVED_BYTE3 0x03
14#define XEKEY_RESERVED_WORD1 0x04
15#define XEKEY_RESERVED_WORD2 0x05
16#define XEKEY_RESTRICTED_HVEXT_LOADER 0x06
17#define XEKEY_RESERVED_DWORD2 0x07
18#define XEKEY_RESERVED_DWORD3 0x08
19#define XEKEY_RESERVED_DWORD4 0x09
20#define XEKEY_RESTRICTED_PRIVILEDGES 0x0A
21#define XEKEY_RESERVED_QWORD2 0x0B
22#define XEKEY_RESERVED_QWORD3 0x0C
23#define XEKEY_RESERVED_QWORD4 0x0D
24#define XEKEY_RESERVED_KEY1 0x0E
25#define XEKEY_RESERVED_KEY2 0x0F
26#define XEKEY_RESERVED_KEY3 0x10
27#define XEKEY_RESERVED_KEY4 0x11
28#define XEKEY_RESERVED_RANDOM_KEY1 0x12
29#define XEKEY_RESERVED_RANDOM_KEY2 0x13
30#define XEKEY_CONSOLE_SERIAL_NUMBER 0x14
31#define XEKEY_MOBO_SERIAL_NUMBER 0x15
32#define XEKEY_GAME_REGION 0x16
33#define XEKEY_CONSOLE_OBFUSCATION_KEY 0x17
34#define XEKEY_KEY_OBFUSCATION_KEY 0x18
35#define XEKEY_ROAMABLE_OBFUSCATION_KEY 0x19
36#define XEKEY_DVD_KEY 0x1A
37#define XEKEY_PRIMARY_ACTIVATION_KEY 0x1B
38#define XEKEY_SECONDARY_ACTIVATION_KEY 0x1C
39#define XEKEY_GLOBAL_DEVICE_2DES_KEY1 0x1D
40#define XEKEY_GLOBAL_DEVICE_2DES_KEY2 0x1E
41#define XEKEY_WIRELESS_CONTROLLER_MS_2DES_KEY1 0x1F
42#define XEKEY_WIRELESS_CONTROLLER_MS_2DES_KEY2 0x20
43#define XEKEY_WIRED_WEBCAM_MS_2DES_KEY1 0x21
44#define XEKEY_WIRED_WEBCAM_MS_2DES_KEY2 0x22
45#define XEKEY_WIRED_CONTROLLER_MS_2DES_KEY1 0x23
46#define XEKEY_WIRED_CONTROLLER_MS_2DES_KEY2 0x24
47#define XEKEY_MEMORY_UNIT_MS_2DES_KEY1 0x25
48#define XEKEY_MEMORY_UNIT_MS_2DES_KEY2 0x26
49#define XEKEY_OTHER_XSM3_DEVICE_MS_2DES_KEY1 0x27
50#define XEKEY_OTHER_XSM3_DEVICE_MS_2DES_KEY2 0x28
51#define XEKEY_WIRELESS_CONTROLLER_3P_2DES_KEY1 0x29
52#define XEKEY_WIRELESS_CONTROLLER_3P_2DES_KEY2 0x2A
53#define XEKEY_WIRED_WEBCAM_3P_2DES_KEY1 0x2B
54#define XEKEY_WIRED_WEBCAM_3P_2DES_KEY2 0x2C
55#define XEKEY_WIRED_CONTROLLER_3P_2DES_KEY1 0x2D
56#define XEKEY_WIRED_CONTROLLER_3P_2DES_KEY2 0x2E
57#define XEKEY_MEMORY_UNIT_3P_2DES_KEY1 0x2F
58#define XEKEY_MEMORY_UNIT_3P_2DES_KEY2 0x30
59#define XEKEY_OTHER_XSM3_DEVICE_3P_2DES_KEY1 0x31
60#define XEKEY_OTHER_XSM3_DEVICE_3P_2DES_KEY2 0x32
61#define XEKEY_CONSOLE_PRIVATE_KEY 0x33
62#define XEKEY_XEIKA_PRIVATE_KEY 0x34
63#define XEKEY_CARDEA_PRIVATE_KEY 0x35
64#define XEKEY_CONSOLE_CERTIFICATE 0x36
65#define XEKEY_XEIKA_CERTIFICATE 0x37
66#define XEKEY_CARDEA_CERTIFICATE 0x38
67
68unsigned int xenon_get_kv_size();
69unsigned int xenon_get_kv_offset();
70
71#define KV_FLASH_SIZE xenon_get_kv_size()
72#define KV_FLASH_OFFSET xenon_get_kv_offset()
73#define KV_FLASH_PAGES KV_FLASH_SIZE / 0x200
74#define KV_FLASH_PTR 0x6C
75#define VFUSES_SIZE 0x60
76#define VFUSES_OFFSET 0x95000
77
78#define XELL_SIZE (256*1024)
79#define XELL_FOOTER_OFFSET (256*1024-16)
80#define XELL_FOOTER_LENGTH 16
81#define XELL_FOOTER "xxxxxxxxxxxxxxxx"
82
83#define XELL_OFFSET_COUNT 6
84static const unsigned int xelloffsets[XELL_OFFSET_COUNT] = {0x70000, // ggBoot main xell-gggggg
85 0x95060, // FreeBOOT Single-NAND main xell-2f
86 0x100000, // XeLL-Only Image
87 0xC0000,
88 0xE0000,
89 0xB80000};
90
91#define REV_XENON 0
92#define REV_ZEPHYR 1
93#define REV_FALCON 2
94#define REV_JASPER 3
95#define REV_TRINITY 4
96#define REV_CORONA 5
97#define REV_CORONA_PHISON 6
98#define REV_WINCHESTER 7
99#define REV_WINCHESTER_MMC 8
100#define REV_UNKNOWN (-1)
101
102typedef struct kventry {
103 char id;
107
108
109void print_key(char *name, unsigned char *data);
110int cpu_get_key(unsigned char *data);
111int get_virtual_cpukey(unsigned char *data);
112int kv_read(unsigned char *data, int virtualcpukey);
113int kv_get_dvd_key(unsigned char *dvd_key);
114int kv_get_key(unsigned char keyid, unsigned char *keybuf, int *keybuflen, unsigned char *keyvault);
115void print_cpu_dvd_keys(void);
116//int updateXeLL(void * addr, unsigned len);
117int updateXeLL(char *path);
118unsigned int xenon_get_DVE();
119unsigned int xenon_get_PCIBridgeRevisionID();
120unsigned int xenon_get_CPU_PVR();
121unsigned int xenon_get_XenosID();
122int xenon_get_console_type(void);
123
124int xenon_get_logical_nand_data(void* buf, unsigned int offset, unsigned int len);
126#define MMC_FLASH_SIZE 0x3000000
127
128#endif /* XB360_H_ */
Definition: xb360.h:102
int offset
Definition: xb360.h:104
int length
Definition: xb360.h:105
char id
Definition: xb360.h:103
int xenon_get_logical_nand_data(void *buf, unsigned int offset, unsigned int len)
Definition: xb360.c:528
unsigned int xenon_get_CPU_PVR()
Definition: xb360.c:468
int xenon_get_console_type(void)
Definition: xb360.c:480
void print_key(char *name, unsigned char *data)
Definition: xb360.c:86
#define XELL_OFFSET_COUNT
Definition: xb360.h:83
int get_virtual_cpukey(unsigned char *data)
Definition: xb360.c:102
int updateXeLL(char *path)
Definition: xb360.c:342
unsigned int xenon_get_PCIBridgeRevisionID()
Definition: xb360.c:463
unsigned int xenon_get_kv_offset()
Definition: xb360.c:545
unsigned int xenon_get_XenosID()
Definition: xb360.c:475
int kv_read(unsigned char *data, int virtualcpukey)
Definition: xb360.c:138
void print_cpu_dvd_keys(void)
Definition: xb360.c:241
int kv_get_key(unsigned char keyid, unsigned char *keybuf, int *keybuflen, unsigned char *keyvault)
Definition: xb360.c:122
unsigned int xenon_get_DVE()
Definition: xb360.c:454
unsigned int xenon_get_kv_size()
Definition: xb360.c:537
int xenon_logical_nand_data_ok()
Definition: xb360.c:519
int cpu_get_key(unsigned char *data)
Definition: xb360.c:95
int kv_get_dvd_key(unsigned char *dvd_key)
Definition: xb360.c:206
union @15 data