XConfig

From Xenon Wiki
Revision as of 17:20, 29 July 2011 by imported>Stoker25
Jump to navigation Jump to search

practically the file format of the config blocks (although its not, since these are structured for use with ExGetXConfigSetting/ExSetXConfigSetting)

// xconfig.h
#ifndef _XCONFIG_H
#define _XCONFIG_H

#include "types.h"

//u16 XConfig_numEntr[] = {0x3, 0xA, 0xA, 0x31, 0x2, 0x2, 0xB, 0x8, 0x3, 0x5, 0x3}; // the number of entries in each category @ 9199

const char XConfig_names[][38] = { // names of categories
	"XCONFIG_STATIC_CATEGORY", 
	"XCONFIG_STATISTIC_CATEGORY", 
	"XCONFIG_SECURED_CATEGORY", 
	"XCONFIG_USER_CATEGORY", 
	"XCONFIG_XNET_MACHINE_ACCOUNT_CATEGORY", 
	"XCONFIG_XNET_PARAMETERS_CATEGORY", 
	"XCONFIG_MEDIA_CENTER_CATEGORY", 
	"XCONFIG_CONSOLE_CATEGORY", 
	"XCONFIG_DVD_CATEGORY", 
	"XCONFIG_IPTV_CATEGORY", 
	"XCONFIG_SYSTEM_CATEGORY"
};

enum { // category enumerator
	//XCONFIG_CATEGORY_TYPES
	XCONFIG_STATIC_CATEGORY = 0x0,					//_XCONFIG_STATIC_SETTINGS
	XCONFIG_STATISTIC_CATEGORY = 0x1,				//_XCONFIG_STATISTIC_SETTINGS
	XCONFIG_SECURED_CATEGORY = 0x2,					//_XCONFIG_SECURED_SETTINGS
	XCONFIG_USER_CATEGORY = 0x3,					//_XCONFIG_USER_SETTINGS
	XCONFIG_XNET_MACHINE_ACCOUNT_CATEGORY = 0x4,	//_XCONFIG_XNET_SETTINGS
	XCONFIG_XNET_PARAMETERS_CATEGORY = 0x5,			//_XCONFIG_XNET_SETTINGS
	XCONFIG_MEDIA_CENTER_CATEGORY = 0x6,			//_XCONFIG_MEDIA_CENTER_SETTINGS
	XCONFIG_CONSOLE_CATEGORY = 0x7, 				//_XCONFIG_CONSOLE_SETTINGS
	XCONFIG_DVD_CATEGORY = 0x8, 					//_XCONFIG_DVD_SETTINGS
	XCONFIG_IPTV_CATEGORY = 0x9, 					//_XCONFIG_IPTV_SETTINGS
	XCONFIG_SYSTEM_CATEGORY = 0xa,					//_XCONFIG_SYSTEM_SETTINGS
	XCONFIG_CATEGORY_MAX = 0xb,
};


#pragma warning(push)
#pragma warning(disable: 4201)  // unnamed struct/union
#pragma pack(push, 1)

/* **************************** _XCONFIG_SECURED_SETTINGS **************************** */
//XCONFIG_SECURED_ENTRIES
enum{
	XCONFIG_SECURED_DATA = 0x0,
	XCONFIG_SECURED_MAC_ADDRESS = 0x1,
	XCONFIG_SECURED_AV_REGION = 0x2,
	XCONFIG_SECURED_GAME_REGION = 0x3,
	XCONFIG_SECURED_DVD_REGION = 0x4,
	XCONFIG_SECURED_RESET_KEY = 0x5,
	XCONFIG_SECURED_SYSTEM_FLAGS = 0x6,
	XCONFIG_SECURED_POWER_MODE = 0x7,
	XCONFIG_SECURED_ONLINE_NETWORK_ID = 0x8,
	XCONFIG_SECURED_POWER_VCS_CONTROL = 0x9,
	XCONFIG_SECURED_ENTRIES_MAX = 0xa
};

// _XCONFIG_SECURED_SETTINGS macros for key pointers
#define XK_SECURED_1(x) &x.MACAddress			// key 0x1 6 bytes
#define XK_SECURED_2(x) &x.AVRegion				// key 0x2 4 bytes
#define XK_SECURED_3(x) &x.GameRegion			// key 0x3 2 bytes
#define XK_SECURED_4(x) &x.DVDRegion			// key 0x4 4 bytes
#define XK_SECURED_5(x) &x.ResetKey				// key 0x5 4 bytes
#define XK_SECURED_6(x) &x.OnlineNetworkID//??	// ??key 0x6 4 bytes?? key 0x8 4 bytes?? NOT SURE WHICH, 0x8 or 0x6
#define XK_SECURED_7(x) &x.PowerMode			// key 0x7 2 bytes
#define XK_SECURED_8(x) &x.SystemFlags //??		// ??key 0x6 4 bytes?? key 0x8 4 bytes?? NOT SURE WHICH, 0x8 or 0x6
#define XK_SECURED_9(x) &x.PowerVcsControl		// key 0x9 2 bytes

typedef struct _XCONFIG_POWER_MODE{ // used by _XCONFIG_SECURED_SETTINGS
	u8 VIDDelta;
	u8 Reserved;
} XCONFIG_POWER_MODE, *PXCONFIG_POWER_MODE;

typedef struct _XCONFIG_POWER_VCS_CONTROL{ // used by _XCONFIG_SECURED_SETTINGS
	u16 Configured : 1;
	u16 Reserved : 3;
	u16 Full : 4;
	u16 Quiet : 4;
	u16 Fuse : 4;
} XCONFIG_POWER_VCS_CONTROL, *PXCONFIG_POWER_VCS_CONTROL; // 2 bytes

typedef struct _XCONFIG_SECURED_SETTINGS{
	u32 Checksum; //0
	u32 Version; //4
	char OnlineNetworkID[4]; //??key 0x6 4 bytes?? key 0x8 4 bytes?? NOT SURE WHICH, 0x8 or 0x6
	char Reserved1[8]; //12
	char Reserved2[12]; //20
	u8 MACAddress[6]; // key 0x1 6 bytes
	char Reserved3[2]; //38
	u32 AVRegion; // key 0x2 4 bytes - 00 00 10 00 can/usa
	u16 GameRegion; // key 0x3 2 bytes - 0x00FF can/usa
	char Reserved4[6];//46
	u32 DVDRegion;// key 0x4 4 bytes - 0x00000001 can/usa
	u32 ResetKey;// key 0x5 4 bytes
	u32 SystemFlags;// ??key 0x6 4 bytes?? key 0x8 4 bytes?? NOT SURE WHICH, 0x8 or 0x6
	XCONFIG_POWER_MODE PowerMode;// key 0x07 2 bytes
	XCONFIG_POWER_VCS_CONTROL PowerVcsControl;// key 0x9 2 bytes
	char ReservedRegion[444];//68
} XCONFIG_SECURED_SETTINGS, *PXCONFIG_SECURED_SETTINGS; // XConfigSecuredSettings; 512 bytes


/* **************************** _XCONFIG_CONSOLE_SETTINGS **************************** */
//XCONFIG_CONSOLE_ENTRIES
enum{
	XCONFIG_CONSOLE_DATA = 0x0,
	XCONFIG_CONSOLE_SCREEN_SAVER = 0x1,
	XCONFIG_CONSOLE_AUTO_SHUT_OFF = 0x2,
	XCONFIG_CONSOLE_WIRELESS_SETTINGS = 0x3,
	XCONFIG_CONSOLE_CAMERA_SETTINGS = 0x4,
	XCONFIG_CONSOLE_PLAYTIMERDATA = 0x5,
	XCONFIG_CONSOLE_MEDIA_DISABLEAUTOLAUNCH = 0x6,
	XCONFIG_CONSOLE_KEYBOARD_LAYOUT = 0x7,
};

// _XCONFIG_CONSOLE_SETTINGS macros for key pointers
#define XK_CONSOLE_1(x) &x.ScreenSaver				// key 0x1 2 bytes
#define XK_CONSOLE_2(x) &x.AutoShutoff				// key 0x2 2 bytes
#define XK_CONSOLE_3(x) &x.WirelessSettings			// key 0x3 256 bytes
#define XK_CONSOLE_4(x) &x.CameraSettings			// key 0x4 4 bytes
#define XK_CONSOLE_5(x) &x.PlayTimerData			// key 0x5 20 bytes
#define XK_CONSOLE_6(x) &x.MediaDisableAutoLaunch	// key 0x6 2 bytes
#define XK_CONSOLE_7(x) &x.KeyboardLayout			// key 0x7 2 bytes

typedef struct _XCONFIG_PLAYTIMERDATA{ // used by _XCONFIG_CONSOLE_SETTINGS
	_ULARGE_INTEGER uliResetDate;
	u32 dwPlayTimerFrequency;
	u32 dwTotalPlayTime;
	u32 dwRemainingPlayTime;
} XCONFIG_PLAYTIMERDATA, *PXCONFIG_PLAYTIMERDATA;

typedef struct _XCONFIG_CONSOLE_SETTINGS{
	u32 CheckSum;
	u32 Version;
	s16 ScreenSaver; // key 0x1 2 bytes
	s16 AutoShutoff; // key 0x2 2 bytes
	u8 WirelessSettings[256]; // key 0x3 256 bytes
	u32 CameraSettings; // key 0x4 4 bytes
	u8 CameraSettingsReserved[28];
	XCONFIG_PLAYTIMERDATA PlayTimerData; // key 0x5 20 bytes
	s16 MediaDisableAutoLaunch; // key 0x6 2 bytes
	s16 KeyboardLayout; // key 0x7 2 bytes
} XCONFIG_CONSOLE_SETTINGS, *PXCONFIG_CONSOLE_SETTINGS; // XConfigConsoleSettings; 324 bytes


/* **************************** _XCONFIG_DVD_SETTINGS **************************** */
//XCONFIG_DVD_ENTRIES
enum{
	XCONFIG_DVD_ALL = 0x0,
	XCONFIG_DVD_VOLUME_ID = 0x1,
	XCONFIG_DVD_BOOKMARK = 0x2,
	XCONFIG_DVD_ENTRIES_MAX = 0x3
};

// _XCONFIG_DVD_SETTINGS macros for key pointers
#define XK_DVD_1(x) &x.VolumeId	// key 0x1 20 bytes
#define XK_DVD_2(x) &x.Data		// key 0x2 640 bytes

typedef struct _XCONFIG_DVD_SETTINGS{
	u32 Version;
	u8 VolumeId[20]; // key 0x1 20 bytes
	u8 Data[640]; // key 0x2 640 bytes
} XCONFIG_DVD_SETTINGS, *PXCONFIG_DVD_SETTINGS; // XConfigDvdSettings; 664 bytes


/* **************************** _XCONFIG_IPTV_SETTINGS **************************** */
//XCONFIG_IPTV_ENTRIES
enum{
	XCONFIG_IPTV_DATA = 0x0,
	XCONFIG_IPTV_SERVICE_PROVIDER_NAME = 0x1,
	XCONFIG_IPTV_PROVISIONING_SERVER_URL = 0x2,
	XCONFIG_IPTV_SUPPORT_INFO = 0x3,
	XCONFIG_IPTV_BOOTSTRAP_SERVER_URL = 0x4,
	XCONFIG_IPTV_ENTRIES_MAX = 0x5
};

// _XCONFIG_IPTV_SETTINGS macros for key pointers
#define XK_IPTV_1(x) &x.ServiceProviderName		// key 0x1 120 bytes
#define XK_IPTV_2(x) &x.ProvisioningServerURL	// key 0x2 128 bytes
#define XK_IPTV_3(x) &x.SupportInfo				// key 0x3 128 bytes
#define XK_IPTV_4(x) &x.BootstrapServerURL		// key 0x4 128 bytes

typedef struct _XCONFIG_IPTV_SETTINGS{
	u32 CheckSum;
	u32 Version;
	wchar_t	ServiceProviderName[60];  // key 0x1 120 bytes
	wchar_t	ProvisioningServerURL[64]; // key 0x2 128 bytes
	wchar_t	SupportInfo[64]; // key 0x3 128 bytes
	wchar_t	BootstrapServerURL[64]; // key 0x4 128 bytes
} XCONFIG_IPTV_SETTINGS, *PXCONFIG_IPTV_SETTINGS; // XConfigIPTVSettings; 512 bytes


/* **************************** _XCONFIG_MEDIA_CENTER_SETTINGS **************************** */
//XCONFIG_MEDIA_CENTER_ENTRIES
enum{
	XCONFIG_MEDIA_CENTER_DATA = 0x0,
	XCONFIG_MEDIA_CENTER_MEDIA_PLAYER = 0x1,
	XCONFIG_MEDIA_CENTER_XESLED_VERSION = 0x2,
	XCONFIG_MEDIA_CENTER_XESLED_TRUST_SECRET = 0x3,
	XCONFIG_MEDIA_CENTER_XESLED_TRUST_CODE = 0x4,
	XCONFIG_MEDIA_CENTER_XESLED_HOST_ID = 0x5,
	XCONFIG_MEDIA_CENTER_XESLED_KEY = 0x6,
	XCONFIG_MEDIA_CENTER_XESLED_HOST_MAC_ADDRESS = 0x7,
	XCONFIG_MEDIA_CENTER_SERVER_UUID = 0x8,
	XCONFIG_MEDIA_CENTER_SERVER_NAME = 0x9,
	XCONFIG_MEDIA_CENTER_SERVER_FLAG = 0xa,
	XCONFIG_MEDIA_ENTRIES_MAX = 0xb
};

// _XCONFIG_MEDIA_CENTER_SETTINGS macros for key pointers
#define XK_MC_1(x) &x.MediaPlayer			// key 0x1 20 bytes
#define XK_MC_2(x) &x.XeSledVersion			// key 0x2 10 bytes
#define XK_MC_3(x) &x.XeSledTrustSecret		// key 0x3 20 bytes
#define XK_MC_4(x) &x.XeSledTrustCode		// key 0x4 8 bytes
#define XK_MC_5(x) &x.XeSledHostID			// key 0x5 20 bytes
#define XK_MC_6(x) &x.XeSledKey				// key 0x6 1628 bytes
#define XK_MC_7(x) &x.XeSledHostMACAddress	// key 0x7 6 bytes
#define XK_MC_8(x) &x.ServerUUID			// key 0x8 16 bytes
#define XK_MC_9(x) &x.ServerName			// key 0x9 128 bytes
#define XK_MC_A(x) &x.ServerFlag			// key 0xa 4 bytes

typedef struct _XCONFIG_MEDIA_CENTER_SETTINGS{
	u32 CheckSum;
	u32 Version;
	char MediaPlayer[20];// key 0x1 20 bytes
	u8 XeSledVersion[10];// key 0x2 10 bytes
	u8 XeSledTrustSecret[20];// key 0x3 20 bytes
	u8 XeSledTrustCode[8];// key 0x4 8 bytes
	u8 XeSledHostID[20];// key 0x5 20 bytes
	u8 XeSledKey[1628];// key 0x6 1628 bytes
	u8 XeSledHostMACAddress[6];// key 0x7 6 bytes
	char ServerUUID[16];// key 0x8 16 bytes
	char ServerName[128]; // key 0x9 128 bytes
	char ServerFlag[4]; // key 0xa 4 bytes
} XCONFIG_MEDIA_CENTER_SETTINGS, *PXCONFIG_MEDIA_CENTER_SETTINGS; // XConfigMediaCenterSettings; 1868 bytes


/* **************************** _XCONFIG_SYSTEM_SETTINGS **************************** */
//XCONFIG_SYSTEM_ENTRIES
enum{
	XCONFIG_SYSTEM_ALL = 0x0,
	XCONFIG_SYSTEM_ALARM_TIME = 0x1,
	XCONFIG_SYSTEM_PREVIOUS_FLASH_VERSION = 0x2,
	XCONFIG_SYSTEM_ENTRIES_MAX = 0x3
};

// _XCONFIG_SYSTEM_SETTINGS macros for key pointers
#define XK_SYSTEM_1(x) &x.AlarmTime				// key 0x1  8 bytes
#define XK_SYSTEM_2(x) &x.PreviousFlashVersion	// key 0x2 4 bytes

typedef struct _XCONFIG_SYSTEM_SETTINGS{
	u32 Version;
	union _LARGE_INTEGER AlarmTime; // key 0x1  8 bytes
	u32 PreviousFlashVersion; // key 0x2 4 bytes
} XCONFIG_SYSTEM_SETTINGS, *PXCONFIG_SYSTEM_SETTINGS; // XConfigSystemSettings; 16 bytes


/* **************************** _XCONFIG_USER_SETTINGS **************************** */
//XCONFIG_USER_ENTRIES
enum{
	XCONFIG_USER_DATA = 0x0,
	XCONFIG_USER_TIME_ZONE_BIAS = 0x1,
	XCONFIG_USER_TIME_ZONE_STD_NAME = 0x2,
	XCONFIG_USER_TIME_ZONE_DLT_NAME = 0x3,
	XCONFIG_USER_TIME_ZONE_STD_DATE = 0x4,
	XCONFIG_USER_TIME_ZONE_DLT_DATE = 0x5,
	XCONFIG_USER_TIME_ZONE_STD_BIAS = 0x6,
	XCONFIG_USER_TIME_ZONE_DLT_BIAS = 0x7,
	XCONFIG_USER_DEFAULT_PROFILE = 0x8,
	XCONFIG_USER_LANGUAGE = 0x9,
	XCONFIG_USER_VIDEO_FLAGS = 0xa,
	XCONFIG_USER_AUDIO_FLAGS = 0xb,
	XCONFIG_USER_RETAIL_FLAGS = 0xc,
	XCONFIG_USER_DEVKIT_FLAGS = 0xd,
	XCONFIG_USER_COUNTRY = 0xe,
	XCONFIG_USER_PC_FLAGS = 0xf,
	XCONFIG_USER_SMB_CONFIG = 0x10,
	XCONFIG_USER_LIVE_PUID = 0x11,
	XCONFIG_USER_LIVE_CREDENTIALS = 0x12,
	XCONFIG_USER_AV_COMPOSITE_SCREENSZ = 0x13,
	XCONFIG_USER_AV_COMPONENT_SCREENSZ = 0x14,
	XCONFIG_USER_AV_VGA_SCREENSZ = 0x15,
	XCONFIG_USER_PC_GAME = 0x16,
	XCONFIG_USER_PC_PASSWORD = 0x17,
	XCONFIG_USER_PC_MOVIE = 0x18,
	XCONFIG_USER_PC_GAME_RATING = 0x19,
	XCONFIG_USER_PC_MOVIE_RATING = 0x1a,
	XCONFIG_USER_PC_HINT = 0x1b,
	XCONFIG_USER_PC_HINT_ANSWER = 0x1c,
	XCONFIG_USER_PC_OVERRIDE = 0x1d,
	XCONFIG_USER_MUSIC_PLAYBACK_MODE = 0x1e,
	XCONFIG_USER_MUSIC_VOLUME = 0x1f,
	XCONFIG_USER_MUSIC_FLAGS = 0x20,
	XCONFIG_USER_ARCADE_FLAGS = 0x21,
	XCONFIG_USER_PC_VERSION = 0x22,
	XCONFIG_USER_PC_TV = 0x23,
	XCONFIG_USER_PC_TV_RATING = 0x24,
	XCONFIG_USER_PC_EXPLICIT_VIDEO = 0x25,
	XCONFIG_USER_PC_EXPLICIT_VIDEO_RATING = 0x26,
	XCONFIG_USER_PC_UNRATED_VIDEO = 0x27,
	XCONFIG_USER_PC_UNRATED_VIDEO_RATING = 0x28,
	XCONFIG_USER_VIDEO_OUTPUT_BLACK_LEVELS = 0x29,
	XCONFIG_USER_VIDEO_PLAYER_DISPLAY_MODE = 0x2a,
	XCONFIG_USER_ALTERNATE_VIDEO_TIMING_ID = 0x2b,
	XCONFIG_USER_VIDEO_DRIVER_OPTIONS = 0x2c,
	XCONFIG_USER_MUSIC_UI_FLAGS = 0x2d,
	XCONFIG_USER_VIDEO_MEDIA_SOURCE_TYPE = 0x2e,
	XCONFIG_USER_MUSIC_MEDIA_SOURCE_TYPE = 0x2f,
	XCONFIG_USER_PHOTO_MEDIA_SOURCE_TYPE = 0x30,
	XCONFIG_USER_ENTRIES_MAX = 0x31
};

// _XCONFIG_USER_SETTINGS macros for key pointers
#define XK_USER_1(x) &x.TimeZoneBias				// key 0x1 4 bytes
#define XK_USER_2(x) &x.TimeZoneStdName				// key 0x2 4 bytes
#define XK_USER_3(x) &x.TimeZoneDltName				// key 0x3 4 bytes
#define XK_USER_4(x) &x.TimeZoneStdDate				// key 0x4 4 bytes
#define XK_USER_5(x) &x.TimeZoneDltDate				// key 0x5 4 bytes
#define XK_USER_6(x) &x.TimeZoneStdBias				// key 0x6 4 bytes
#define XK_USER_7(x) &x.TimeZoneDltBias				// key 0x7 4 bytes
#define XK_USER_8(x) &x.DefaultProfile				// key 0x8 8 bytes
#define XK_USER_9(x) &x.Language					// key 0x9 4 bytes
#define XK_USER_A(x) &x.VideoFlags					// key 0xa 4 bytes
#define XK_USER_B(x) &x.AudioFlags					// key 0xb 4 bytes
#define XK_USER_C(x) &x.RetailFlags					// key 0xc 4 bytes
#define XK_USER_D(x) &x.DevkitFlags					// key 0xd 4  bytes
#define XK_USER_E(x) &x.Country						// key 0xe 1 bytes
#define XK_USER_F(x) &x.ParentalControlFlags		// key 0xf 1 bytes
#define XK_USER_10(x) &x.SMBConfig					// key 0x10 256 bytes
#define XK_USER_11(x) &x.LivePUID					// key 0x11 8 bytes
#define XK_USER_12(x) &x.LiveCredentials			// key 0x12 16 bytes
#define XK_USER_13(x) &x.AvPackHDMIScreenSz			// key 0x13 4 bytes
#define XK_USER_14(x) &x.AvPackComponentScreenSz	// key 0x14 4 bytes
#define XK_USER_15(x) &x.AvPackVGAScreenSz			// key 0x15 4 bytes
#define XK_USER_16(x) &x.ParentalControlGame		// key 0x16 4 bytes
#define XK_USER_17(x) &x.ParentalControlPassword	// key 0x17 4 bytes
#define XK_USER_18(x) &x.ParentalControlMovie		// key 0x18 4 bytes
#define XK_USER_19(x) &x.ParentalControlGameRating	// key 0x19 4 bytes
#define XK_USER_1A(x) &x.ParentalControlMovieRating	// key 0x1a 4 bytes
#define XK_USER_1B(x) &x.ParentalControlHint		// key 0x1b 1 bytes
#define XK_USER_1C(x) &x.ParentalControlHintAnswer	// key 0x1c 32 bytes
#define XK_USER_1D(x) &x.ParentalControlOverride	// key 0x1d 32  bytes
#define XK_USER_1E(x) &x.MusicPlaybackMode			// key 0x1e 4 bytes
#define XK_USER_1F(x) &x.MusicVolume				// key 0x1f 4 bytes
#define XK_USER_20(x) &x.MusicFlags					// key 0x20 4 bytes
#define XK_USER_21(x) &x.ArcadeFlags				// key 0x21 4 bytes
#define XK_USER_22(x) &x.ParentalControlVersion		// key 0x22 4 bytes
#define XK_USER_23(x) &x.ParentalControlTV			// key 0x23 4 bytes
#define XK_USER_24(x) &x.ParentalControlTVRating	// key 0x24 4 bytes
#define XK_USER_25(x) &x.ParentalControlExplicitVideo// key 0x25 4 bytes
#define XK_USER_26(x) &x.ParentalControlExplicitVideoRating// key 0x26 4 bytes
#define XK_USER_27(x) &x.ParentalControlUnratedVideo// key 0x27 4 bytes
#define XK_USER_28(x) &x.ParentalControlUnratedVideoRating// key 0x28 4 bytes
#define XK_USER_29(x) &x.VideoOutputBlackLevels		// key 0x29 4 bytes
#define XK_USER_2A(x) &x.VideoPlayerDisplayMode		// key 0x2a 1 bytes
#define XK_USER_2B(x) &x.AlternateVideoTimingIDs	// key 0x2b 4 bytes
#define XK_USER_2C(x) &x.VideoDriverOptions			// key 0x2c 4 bytes
#define XK_USER_2D(x) &x.MusicUIFlags				// key 0x2d 4 bytes
#define XK_USER_2E(x) &x.VideoMediaSourceType		// key 0x2e 1 bytes
#define XK_USER_2F(x) &x.MusicMediaSourceType		// key 0x2f 1 bytes
#define XK_USER_30(x) &x.PhotoMediaSourceType		// key 0x30 1 bytes

typedef struct _XCONFIG_TIMEZONE_DATE{ // used by _XCONFIG_USER_SETTINGS
	u8 Month;
	u8 Day;
	u8 DayOfWeek;
	u8 Hour;
} XCONFIG_TIMEZONE_DATE, *PXCONFIG_TIMEZONE_DATE;

typedef struct _XCONFIG_USER_SETTINGS{
	u32 CheckSum;
	u32 Version;
	u32 TimeZoneBias; // key 0x1 4 bytes
	char TimeZoneStdName[4];// key 0x2 4 bytes
	char TimeZoneDltName[4];// key 0x3 4 bytes
	XCONFIG_TIMEZONE_DATE TimeZoneStdDate;// key 0x4 4 bytes
	XCONFIG_TIMEZONE_DATE TimeZoneDltDate;// key 0x5 4 bytes
	u32 TimeZoneStdBias;// key 0x6 4 bytes
	u32 TimeZoneDltBias;// key 0x7 4 bytes
	u64 DefaultProfile;// key 0x8 8 bytes
	u32 Language;// key 0x9 4 bytes
	u32 VideoFlags;// key 0xa 4 bytes
	u32 AudioFlags;// key 0xb 4 bytes
	u32 RetailFlags;// key 0xc 4 bytes
	u32 DevkitFlags;// key 0xd 4 bytes
	char Country;// key 0xe 1 bytes
	char ParentalControlFlags;// key 0xf 1 bytes
	u8 ReservedFlags[2];
	char SMBConfig[256];// key 0x10 256 bytes
	u64 LivePUID;// key 0x11 8 bytes
	char LiveCredentials[16];// key 0x12 16 bytes
	s16 AvPackHDMIScreenSz[2];// key 0x13 4 bytes
	s16 AvPackComponentScreenSz[2];// key 0x14 4 bytes
	s16 AvPackVGAScreenSz[2];// key 0x15 4 bytes (1440x900? = 0780 fbc8)
	u32 ParentalControlGame;// key 0x16 4 bytes
	u32 ParentalControlPassword;// key 0x17 4 bytes
	u32 ParentalControlMovie;// key 0x18 4 bytes
	u32 ParentalControlGameRating;// key 0x19 4 bytes
	u32 ParentalControlMovieRating;// key 0x1a 4 bytes
	char ParentalControlHint;// key 0x1b 1 bytes
	char ParentalControlHintAnswer[32];// key 0x1c 32 bytes
	char ParentalControlOverride[32];// key 0x1d 32  bytes
	u32 MusicPlaybackMode;// key 0x1e 4 bytes
	s32 MusicVolume;// key 0x1f 4 bytes
	u32 MusicFlags;// key 0x20 4 bytes
	u32 ArcadeFlags;// key 0x21 4 bytes
	u32 ParentalControlVersion;// key 0x22 4 bytes
	u32 ParentalControlTV;// key 0x23 4 bytes
	u32 ParentalControlTVRating;// key 0x24 4 bytes
	u32 ParentalControlExplicitVideo;// key 0x25 4 bytes
	u32 ParentalControlExplicitVideoRating;// key 0x26 4 bytes
	u32 ParentalControlUnratedVideo;// key 0x27 4 bytes
	u32 ParentalControlUnratedVideoRating;// key 0x28 4 bytes
	u32 VideoOutputBlackLevels;// key 0x29 4 bytes
	u8 VideoPlayerDisplayMode;// key 0x2a 1 bytes
	u32 AlternateVideoTimingIDs;// key 0x2b 4 bytes
	u32 VideoDriverOptions;// key 0x2c 4 bytes
	u32 MusicUIFlags;// key 0x2d 4 bytes
	char VideoMediaSourceType;// key 0x2e 1 bytes
	char MusicMediaSourceType;// key 0x2f 1 bytes
	char PhotoMediaSourceType;// key 0x30 1 bytes
} XCONFIG_USER_SETTINGS, *PXCONFIG_USER_SETTINGS; // XConfigUserSettings; 509 bytes


/* **************************** _XCONFIG_XNET_SETTINGS **************************** */
//XCONFIG_XNET_ENTRIES
enum{
	XCONFIG_XNET_ALL = 0x0,
	XCONFIG_XNET_DATA = 0x1,
	XCONFIG_XNET_ENTRIES_MAX = 0x2
};

// _XCONFIG_XNET_SETTINGS macros for key pointers
#define XK_XNET_1(x) &x.Data // key 0x01 492 bytes

typedef struct _XCONFIG_XNET_SETTINGS{
	u32 version;
	u8 Data[492]; // key 0x01 492 bytes
} XCONFIG_XNET_SETTINGS, *PXCONFIG_XNET_SETTINGS; // 496 bytes


/* **************************** _XCONFIG_STATISTIC_SETTINGS **************************** */
//XCONFIG_STATISTIC_ENTRIES
enum{
	XCONFIG_STATISTICS_DATA = 0x0,
	XCONFIG_STATISTICS_XUID_MAC_ADDRESS = 0x1,
	XCONFIG_STATISTICS_XUID_COUNT = 0x2,
	XCONFIG_STATISTICS_ODD_FAILURES = 0x3,
	XCONFIG_STATISTICS_HDD_SMART_DATA = 0x4,
	XCONFIG_STATISTICS_UEM_ERRORS = 0x5,
	XCONFIG_STATISTICS_FPM_ERRORS = 0x6,
	XCONFIG_STATISTICS_LAST_REPORT_TIME = 0x7,
	XCONFIG_STATISTICS_BUG_CHECK_DATA = 0x8,
	XCONFIG_STATISTICS_TEMPERATURE = 0x9,
	XCONFIG_STATISTICS_ENTRIES_MAX = 0xa
};

// _XCONFIG_STATISTIC_SETTINGS macros for key pointers
#define XK_STATISTIC_1(x) &x.XUIDMACAddress		// key 0x1 6 bytes
#define XK_STATISTIC_2(x) &x.XUIDCount			// key 0x2 4 bytes
#define XK_STATISTIC_3(x) &x.ODDFailures		// key 0x3 32 bytes
#define XK_STATISTIC_4(x) &x.HDDSmartData		// key 0x4 512 bytes
#define XK_STATISTIC_5(x) &x.UEMErrors			// key 0x5 100 bytes
#define XK_STATISTIC_6(x) &x.FPMErrors			// key 0x6 56 bytes - 9199 increased 0x38 to 0x60
#define XK_STATISTIC_7(x) &x.LastReportTime		// key 0x7 8 bytes
#define XK_STATISTIC_8(x) &x.BugCheckData		// key 0x8 101 bytes 
#define XK_STATISTIC_9(x) &x.TemperatureData	// key 0x9 200 bytes

typedef struct _XCONFIG_STATISTIC_SETTINGS{
	u32 CheckSum;
	u32 Version;
	char XUIDMACAddress[6]; // key 0x1 6 bytes
	char Reserved[2];
	u32 XUIDCount;// key 0x2 4 bytes
	u8 ODDFailures[32];// key 0x3 32 bytes
	u8 BugCheckData[101];// key 0x8 101  bytes
	u8 TemperatureData[200];// key 0x9 200 bytes
	char Unused[467];
	char HDDSmartData[512];// key 0x4 512 bytes
	char UEMErrors[100];// key 0x5 100 bytes
	char FPMErrors[96];// key 0x6 56 bytes/96 bytes 9199
	u64 LastReportTime;// key 0x7 8 bytes
} XCONFIG_STATISTIC_SETTINGS, *PXCONFIG_STATISTIC_SETTINGS; // XConfigStatisticSettings; 1496 bytes


/* **************************** _XCONFIG_STATIC_SETTINGS **************************** */
//XCONFIG_STATIC_ENTRIES
enum{
	XCONFIG_STATIC_DATA = 0x0,
	XCONFIG_STATIC_FIRST_POWER_ON_DATE = 0x1,
	XCONFIG_STATIC_SMC_CONFIG = 0x2,
	XCONFIG_STATIC_ENTRIES_MAX = 0x3
};

// _XCONFIG_STATIC_SETTINGS macros for key pointers
#define XK_STATIC_1(x) &x.FirstPowerOnDate // key 0x1 5 bytes
#define XK_STATIC_2(x) &x.SMCConfig // key 0x2 256 bytes

typedef struct _FanOverride{ // used by _XCONFIG_STATIC_SETTINGS // 01111111 <- normally disabled as 0x7F
	u8 Enable : 1; // says 7 is bit 0
	u8 Speed : 7; // says 0 bit 7
} FanOverride, *PFanOverride; // 1 byte

typedef struct _TempCalData{ // used by _XCONFIG_STATIC_SETTINGS
	u16 Gain;
	u16 Offset; 
} TempCalData, *PTempCalData; // 4 bytes

typedef struct _Temperature{ // used by _XCONFIG_STATIC_SETTINGS
	TempCalData Cpu;
	TempCalData Gpu;
	TempCalData Edram;
	TempCalData Board; // 16 bytes
} Temperature, *PTemperature;

typedef struct _Thermal{ // used by _XCONFIG_STATIC_SETTINGS
	u8 Cpu;
	u8 Gpu;
	u8 Edram; // 3 bytes
} Thermal, *PThermal;

typedef struct _Viper{ // used by _XCONFIG_STATIC_SETTINGS
	u8 GpuVoltageNotSetting : 1; // bit 7
	u8 MemoryVoltageNotSetting : 1; // bit 6 (bit 5 thru 0 unused
	//u8 unknown : 6; // 1 byte
	u8 GpuTarget;
	u8 MemoryTarget;
	u8 CheckSum;	
} Viper, *PViper; // 4 bytes

typedef struct _ThermalCalData{ // used by _XCONFIG_STATIC_SETTINGS
	Temperature therm; // 16 bytes
	char AnaFuseValue;
	Thermal SetPoint; // 3 bytes
	Thermal Overload; // 3 bytes
} ThermalCalData, *PThermalCalData;

typedef struct _SMCBlock{ // STATIC key 0x2 256 bytes // used by _XCONFIG_STATIC_SETTINGS
	u8 StructureVersion;
	u8 ConfigSource;
	char ClockSelect;
	FanOverride fanOrCpu; // 1 byte
	FanOverride fanOrGpu; // 1 byte
	char pad1[1];
	char unknownBits : 2;// 1 byte total for this bitfield
	char ScreenToolExecutionCount : 2;
	char ScreenToolFinished : 1;
	char ScreenToolStarted : 1;
	char UseTempCalDefaults : 1;
	char RadioEnable : 1; 
	char pad2[3];
	ThermalCalData mainTemp; // 23 bytes
	u8 pad3[1];
	Viper vFlags;
	u8 pad4[190];
	ThermalCalData backupTemp; // 23 bytes
	u8 pad5[3];
	u8 DoNotUse[2];
} SMCBlock, *PSMCBlock;

typedef struct _XCONFIG_STATIC_SETTINGS{
	u32 CheckSum; // *** see below ***
	u32 Version;
	char FirstPowerOnDate[5]; // key 0x1 5 bytes
	char reserved;
	SMCBlock SMCConfig;  // key 0x2 256 bytes
} XCONFIG_STATIC_SETTINGS, *PXCONFIG_STATIC_SETTINGS; // XConfigStaticSettings; 270 bytes

#pragma warning(pop)  // unnamed struct/union
#pragma pack(pop)

// this and internal SMCBlock checksums seem to be the only ones used at this point
//
// use this to calculate XCONFIG_STATIC_SETTINGS.CheckSum
// where data is a BYTE pointer to the full XCONFIG_STATIC_SETTINGS struct
//UINT XConfigStaticMainChecksumCalc(PBYTE data)
//{
//	UINT i, len, sum = 0;
//	data += 0x10;
//	for(i=0, len=252; i<len; i++)
//		sum += data[i]&0xFF;
//	sum = (~sum)&0xFFFF;
//	return ((sum&0xFF00)<<8)+((sum&0xFF)<<24);
//}

#endif // _XCONFIG_H

from pastebin.com, not marked private:

	struct MacAccount {
		UINT    ServiceID;
		in_addr ServiceAddress;
		USHORT  ServicePort;
		USHORT  Flags;
		char    ConsoleId[16]; // "XE.{ConsoleID}"
		char    OnlineDomain[20]; // "xbox.com"
		char    OnlineKerberosRealm[24]; // "PASSPORT.NET"
		BYTE    OnlineKey[16];
		BYTE    Padding[376];
	};

	struct EncryptedMacAccount {
		BYTE			Digest[0x14];
		BYTE			Confounder[0x08];
		MacAccount	Account;
	};

	BOOL GetMachineAccount(MacAccount* Account) {
		
		// Get our setting
		int settingCategory = 0x04;
		EncryptedMacAccount ea; USHORT sizeOut;
		if(!NT_SUCCESS(ExGetXConfigSetting((USHORT)settingCategory, 1, 
			(BYTE*)&ea, sizeof(EncryptedMacAccount), &sizeOut))) {
			return FALSE;
		}

		// Get our key for RC4
		BYTE key[0x14];
		if(!NT_SUCCESS(XeKeysHmacSha(0x17, ea.Confounder, 8, 
			(BYTE*)&settingCategory, sizeof(int), NULL, NULL, key, 0x14))) {
			return FALSE;
		}

		// Decrypt
		if(!NT_SUCCESS(XeCryptRc4(key, 0x14, (BYTE*)&ea.Account, sizeof(MacAccount)))) {
			return FALSE;
		}

		// Now lets check our hash to make sure we did it right
		BYTE hash[0x14];
		if(!NT_SUCCESS(XeCryptSha(ea.Confounder, sizeof(ea.Confounder), 
			(BYTE*)&ea.Account, sizeof(MacAccount), NULL, NULL, hash, 0x14))) {
			return FALSE;
		}

		// Compare our hash
		if(memcmp(hash, ea.Digest, 0x14) != 0)
			return FALSE;

		// Alright its a good account lets copy
		memcpy(Account, &ea.Account, sizeof(MacAccount));
		return TRUE;
	}

"XCONFIG_XNET_MACHINE_ACCOUNT_CATEGORY"
encrypted data at entry 0 and 1 using HMAC-SHA, data matches except entry 0 has version field in front of data (00000001)
digest used for HMAC-SHA is at 0x0 (0x4 for entry 0), confounder is at 0x14 (0x18 entry 0) data encrypted using XeKey 0x17
doesn't actually seem to be used in live auth at all

"XCONFIG_XNET_PARAMETERS_CATEGORY"
looks the same as MACHINE_ACCOUNT, but encrypted with different key?

if your impatient and need more, pastebin is a good friend :)