Profile:Account: Difference between revisions
Jump to navigation
Jump to search
imported>Godzcheater m (→Decrypted File) |
imported>Godzcheater m (→Decrypted File: Country) |
||
Line 46: | Line 46: | ||
|- | |- | ||
| 48 | | 48 | ||
| | | 1 | ||
| byte | | byte | ||
| unknown | | unknown(XVER?) | ||
|- | |- | ||
| 49 | | 49 | ||
Line 56: | Line 56: | ||
|- | |- | ||
| 50 | | 50 | ||
| | | 1 | ||
| | | byte | ||
| Country | |||
|- | |||
| 52 | |||
| 1 | |||
| byte | |||
| unknown | | unknown | ||
|- | |- | ||
Line 169: | Line 174: | ||
} | } | ||
} | } | ||
==Country== | |||
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 | |||
} | |||
[[Category:Xbox System Software]] | [[Category:Xbox System Software]] | ||
[[Category:File formats]] | [[Category:File formats]] |
Revision as of 17:36, 16 February 2012
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.
Encryption
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.
- Retail key
0xE1 0xBC 0x15 0x9C 0x73 0xB1 0xEA 0xE9 0xAB 0x31 0x70 0xF3 0xAD 0x47 0xEB 0xF3
- Devkit key
0xDA 0xB6 0x9A 0xD9 0x8E 0x28 0x76 0x4F 0x97 0x7E 0xE2 0x48 0x7E 0x4F 0x3F 0x68
To decrypt the file:
- Copy the first 16 bytes of the file to a buffer. This is the HMAC-SHA1 hash of the file which is made using one of the keys above.
- Use HMAC-SHA1 on that buffer with a key from above to create the RC4 key, which is 0x10 bytes.
- Decrypt 8 bytes after the hash of the file (at offset 0x10) using RC4. This is the confounder.
- Decrypt 380 bytes after the confounder using RC4. This is the decrypted account data.
- Make a hash of the confounder and decrypted data using HMAC-SHA1 and a key above and compare it to the first 16 bytes of the file, if it doesn't match then the decryption failed.
To encrypt the file:
- Copy the decrypted data to offset 0x18
- Create a random 8 byte confounder and copy this to offset 0x10.
- Make a hash of the confounder and decrypted data using HMAC-SHA1 and a key above, resize it to 16 bytes and then copy that to the beginning of the file.
- Use HMAC-SHA1 on that hash with a key from above to create the RC4 key, which is 0x10 bytes.
- Encrypt 388 bytes from position 0x10 using RC4.
Decrypted File
Offset | Length | Type | Information |
---|---|---|---|
0 | 2 | ushort | Status (Recovering: 0, Offline: 0x1000, Online: 0x2000, Password Protected: 0x3000) |
8 | 16 chars/32 bytes | Unicode | Gamertag |
40 | 8 | ulong | XUID |
48 | 1 | byte | unknown(XVER?) |
49 | 0x1 | byte | Membership type (Offline: 0, Silver: 0x30, Gold: 0x60, Gold Family: 0x90) |
50 | 1 | byte | Country |
52 | 1 | byte | unknown |
52 | 4 | ASCII string | Service |
56 | 4 | Bytes | Password |
60 | 20 | ASCII string | Server |
80 | 24 | ASCII string | Passport |
104 | 16 | Bytes | Online Key |
Passcode
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 |
Note A and B are not valid for passwords.
XUID
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; } } }
Country
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 }