The Account file is a HMAC-RC4 encrypted file stored in profiles to hold things such as the profiles gamertag, PUID (Passport User ID), online key and more.
The file is encrypted with a custom form of HMAC-RC4, which is handled by the XeKeysUnobfuscate function. The key differs between retail and development consoles and is stored in key index 0x19.
0xE1 0xBC 0x15 0x9C 0x73 0xB1 0xEA 0xE9 0xAB 0x31 0x70 0xF3 0xAD 0x47 0xEB 0xF3
0xDA 0xB6 0x9A 0xD9 0x8E 0x28 0x76 0x4F 0x97 0x7E 0xE2 0x48 0x7E 0x4F 0x3F 0x68
To decrypt the file:
To encrypt the file:
Offset |
Length |
Type |
Information |
---|---|---|---|
0 |
4 |
UInt32 |
Reserved(Flags) |
4 |
4 |
UInt32 |
LiveFlags |
8 |
16 chars/32 bytes |
Unicode |
Gamertag |
40 |
8 |
ulong |
XUID |
48 |
4 |
UInt32 |
Cached User Flags |
52 |
4 |
ASCII string |
Xbox Live Service Provider |
56 |
4 |
PasscodeKeys[4] |
Passcode |
60 |
20 |
ASCII string |
Online Domain |
80 |
24 |
ASCII string |
Online Kerberos Realm |
104 |
16 |
Bytes |
Online Key |
120 |
114 |
ASCII string |
User Passport Membername |
234 |
32 |
ASCII string |
User Passport Password |
266 |
114 |
ASCII string |
Owner Passport Membername |
Name | Value |
---|---|
Passcode Enabled | 0x10000000 |
LIVE Enabled | 0x20000000 |
Recovering | 0x40000000 |
The flag at bit0 seems to be always set, not sure what it means though.
Bits Used Indices | Field Name |
---|---|
0 | Payment Instrument Credit Card |
8-15 | Country |
16-19 | Subscription Teir |
24 | Parental Controls Enabled |
25-29 | Language |
The other bits are used, I’m just not sure what they all represent.
The passcode is made up of these bytes:
Byte | Button |
---|---|
0 | Null |
1 | DPad Up |
2 | DPad Down |
3 | DPad Left |
4 | DPad Right |
5 | X |
6 | Y |
7 | A |
8 | B |
9 | Left Trigger |
10 | Right Trigger |
11 | Left Bumper |
12 | Right Bumper |
public class XUID
{
public System.UInt64 Value;
public XUID(System.UInt64 _Value)
{
Value = _Value;
}
public System.Boolean IsOfflineXuid
{
get
{
return (Value & 17293822569102704640L) == 16140901064495857664L;
}
}
public System.Boolean IsOnline
{
get
{
return (Value & 18446462598732840960L) == 2533274790395904L;
}
}
public System.Boolean IsTeam//Guess this is todo with devs
{
get
{
return (Value & 18374686479671624000L) == 18302628885633696000L;
}
}
public System.Boolean IsValidXuid
{
get
{
return IsOfflineXuid != IsOnlineXuid;
}
}
}
public enum XboxLiveCountry
{
Albania = 2,
Algeria = 0x1b,
Argentina = 4,
Armenia = 3,
Australia = 6,
Austria = 5,
Azerbaijan = 7,
Bahrain = 10,
Belarus = 14,
Belgium = 8,
Belize = 15,
Bolivia = 12,
Brazil = 13,
BruneiDarussalam = 11,
Bulgaria = 9,
Canada = 0x10,
Chile = 0x13,
China = 20,
Colombia = 0x15,
CostaRica = 0x16,
Croatia = 0x29,
CzechRepublic = 0x17,
Denmark = 0x19,
DominicanRepublic = 0x1a,
Ecuador = 0x1c,
Egypt = 30,
ElSalvador = 0x5f,
Estonia = 0x1d,
FaroeIslands = 0x21,
Finland = 0x20,
France = 0x22,
Georgia = 0x24,
Germany = 0x18,
Greece = 0x25,
Guatemala = 0x26,
Honduras = 40,
HongKong = 0x27,
Hungary = 0x2a,
Iceland = 0x31,
India = 0x2e,
Indonesia = 0x2b,
Iran = 0x30,
Iraq = 0x2f,
Ireland = 0x2c,
Israel = 0x2d,
Italy = 50,
Jamaica = 0x33,
Japan = 0x35,
Jordan = 0x34,
Kazakhstan = 0x3a,
Kenya = 0x36,
Korea = 0x38,
Kuwait = 0x39,
Kyrgyzstan = 0x37,
Latvia = 0x3f,
Lebanon = 0x3b,
LibyanArabJamahiriya = 0x40,
Liechtenstein = 60,
Lithuania = 0x3d,
Luxembourg = 0x3e,
Macao = 0x45,
Macedonia = 0x43,
Malaysia = 0x48,
Maldives = 70,
Mexico = 0x47,
Monaco = 0x42,
Mongolia = 0x44,
Morocco = 0x41,
Netherlands = 0x4a,
NewZealand = 0x4c,
Nicaragua = 0x49,
Norway = 0x4b,
Oman = 0x4d,
Pakistan = 0x51,
Panama = 0x4e,
Paraguay = 0x55,
Peru = 0x4f,
Philippines = 80,
Poland = 0x52,
Portugal = 0x54,
PuertoRico = 0x53,
Qatar = 0x56,
Romania = 0x57,
RussianFederation = 0x58,
SaudiArabia = 0x59,
Singapore = 0x5b,
Slovakia = 0x5d,
Slovenia = 0x5c,
SouthAfrica = 0x6d,
Spain = 0x1f,
Sweden = 90,
Switzerland = 0x12,
SyrianArabRepublic = 0x60,
Taiwan = 0x65,
Thailand = 0x61,
TrinidadAndTobago = 100,
Tunisia = 0x62,
Turkey = 0x63,
Ukraine = 0x66,
UnitedArabEmirates = 1,
UnitedKingdom = 0x23,
UnitedStates = 0x67,
Unknown = 0,
Uruguay = 0x68,
Uzbekistan = 0x69,
Venezuela = 0x6a,
Vietnam = 0x6b,
Yemen = 0x6c,
Zimbabwe = 110
}
enum SubscriptionTeir
{
NoSubcription,
Silver = 3,
Gold = 6,
FamilyGold = 9
};
enum ConsoleLanguage
{
None,
English,
Japanese,
German,
French,
Spanish,
Italian,
Korean,
TChinese,
Portuguese,
SChinese,
Polish,
Russian
};