private void GetDefinition(ushort id, byte[] payload) { switch (id) { case 10100: using (Reader reader = new Reader(payload)) { Console.WriteLine($"Protocol: {reader.ReadInt32()}"); Console.WriteLine($"KeyVersion: {reader.ReadInt32()}"); Console.WriteLine($"MajorVersion: {reader.ReadInt32()}"); Console.WriteLine($"MinorVersion: {reader.ReadInt32()}"); Console.WriteLine($"BuildVersion: {reader.ReadInt32()}"); Console.WriteLine($"Hash: {reader.ReadString()}"); Console.WriteLine($"DeviceType: {reader.ReadInt32()}"); Console.WriteLine($"AppStore: {reader.ReadInt32()}"); } break; case 20103: using (Reader reader = new Reader(payload)) { Console.WriteLine($"Error Code: {reader.ReadVInt()}"); Console.WriteLine($"ResourceFingerprintData: {reader.ReadString()}"); Console.WriteLine($"RedirectDomain: {reader.ReadString()}"); Console.WriteLine($"ContentURL: {reader.ReadString()}"); Console.WriteLine($"UpdateURL: {reader.ReadString()}"); Console.WriteLine($"Reason: {reader.ReadString()}"); Console.WriteLine($"SecondsUntilMaintenanceEnd: {reader.ReadInt32()}"); reader.ReadByte(); reader.ReadString(); } break; case 10101: payload = EnDecrypt.Decrypt(encrypted); using (Reader reader = new Reader(payload)) { Console.WriteLine($"UserId: {reader.ReadInt64()}"); Console.WriteLine($"Token: {reader.ReadString()}"); Console.WriteLine($"MajorVersion: {reader.ReadVInt()}"); Console.WriteLine($"MinorVersion: {reader.ReadVInt()}"); Console.WriteLine($"BuildVersion: {reader.ReadVInt()}"); Console.WriteLine($"Hash: {reader.ReadString()}"); Console.WriteLine($"UDID: {reader.ReadString()}"); Console.WriteLine($"Open UdId: {reader.ReadString()}"); Console.WriteLine($"Mac Address: {reader.ReadString()}"); Console.WriteLine($"Device Model: {reader.ReadString()}"); Console.WriteLine($"Advertising GuId: {reader.ReadString()}"); Console.WriteLine($"OS Version: {reader.ReadString()}"); Console.WriteLine($"isAndroid: {reader.ReadBoolean()}"); reader.ReadString(); Console.WriteLine($"Android Id: {reader.ReadString()}"); Console.WriteLine($"Preferred device language: {reader.ReadString()}"); reader.ReadByte(); Console.WriteLine($"Preferred language: {reader.ReadByte()}"); Console.WriteLine($"Facebook attribution Id: {reader.ReadString()}"); Console.WriteLine($"Advertising enabled: {reader.ReadByte()}"); Console.WriteLine($"Apple IFV: {reader.ReadString()}"); Console.WriteLine($"AppStore: {reader.ReadVInt()}"); Console.WriteLine($"Kunlun SSO: {reader.ReadString()}"); Console.WriteLine($"Kunlun UID: {reader.ReadString()}"); reader.ReadString(); reader.ReadString(); reader.ReadByte(); } break; case 10108: Console.WriteLine("So, you want to see that what's inside the KeepAlive packet?\nIt's empty dude!"); break; case 20108: Console.WriteLine("So, you want to see that what's inside the KeepAlive packet?\nIt's empty dude!"); break; case 14315: payload = EnDecrypt.Decrypt(payload); Console.WriteLine(ByteArrayToHexString(payload)); using (var reader = new Reader(payload)) { Console.WriteLine($"Message: {reader.ReadString()}"); } break; case 20104: Console.WriteLine(BitConverter.ToString(payload).Replace("-", "")); using (var reader = new Reader(payload)) { Console.WriteLine($"UserId: {reader.ReadInt64()}"); Console.WriteLine($"HomeId: {reader.ReadInt64()}"); Console.WriteLine($"Token: {reader.ReadString()}"); Console.WriteLine($"GameCenter Id: {reader.ReadString()}"); Console.WriteLine($"Facebook ID: {reader.ReadString()}"); Console.WriteLine($"Server Major Version: {reader.ReadVInt()}"); Console.WriteLine($"Server Build Version: {reader.ReadVInt()}"); Console.WriteLine($"Server Type: {reader.ReadVInt()}"); Console.WriteLine($"Content Version: {reader.ReadVInt()}"); Console.WriteLine($"Environment: {reader.ReadString()}"); Console.WriteLine($"Session Count: {reader.ReadVInt()}"); Console.WriteLine($"Play Time Seconds: {reader.ReadVInt()}"); Console.WriteLine($"Days since started playing: {reader.ReadVInt()}"); Console.WriteLine($"Facebook App Id: {reader.ReadString()}"); Console.WriteLine($"Server Time: {reader.ReadString()}"); Console.WriteLine($"Account creation date: {reader.ReadString()}"); reader.ReadVInt(); Console.WriteLine($"Google service id: {reader.ReadString()}"); reader.ReadString(); reader.ReadString(); Console.WriteLine($"Region: {reader.ReadString()}"); reader.ReadString(); Console.WriteLine($"Content URL: {reader.ReadString()}"); Console.WriteLine($"Event Asset URL: {reader.ReadString()}"); reader.ReadByte(); } byte[] ohd = new byte[99999999]; int received = sck.Receive(ohd); Array.Resize(ref ohd, received); Console.WriteLine($"Encrypted OHD: {BitConverter.ToString(ohd).Replace("-","")}"); payload = Crypto.Decrypt(ohd, keyPair); ReadData(payload, 24101); Console.WriteLine($"Decrypted OHD: {BitConverter.ToString(payload).Replace("-","")}"); break; case 24101: using (var reader = new Reader(payload)) { Console.WriteLine($"User ID: {reader.ReadInt32()}/{reader.ReadInt32()}"); ECTSeed = reader.ReadVInt(); GenerateChecksum(); Console.WriteLine($"ECT Seed: {ECTSeed}"); Console.WriteLine($"Age/Time: {reader.ReadVInt()}"); Console.WriteLine($"Donation cooldown/Seconds until next free chest: {reader.ReadVInt()}"); Console.WriteLine($"Donation capacity: {reader.ReadVInt()}"); Console.WriteLine($"Login Time: {reader.ReadVInt()}"); reader.ReadByte(); Console.WriteLine($"Total Decks Amount: {reader.ReadVInt()}"); Console.WriteLine($"Deck 1 Cards Amount: {reader.ReadVInt()}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 1 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Cards Amount: {reader.ReadVInt()}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 2 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Cards Amount: {reader.ReadVInt()}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 3 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Cards Amount: {reader.ReadVInt()}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 4 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Cards Amount: {reader.ReadVInt()}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Deck 5 Card: {CardInfos.GetName(reader.ReadVInt())}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); Console.WriteLine($"Unknown: {reader.ReadVInt()}"); var baseStream = reader.BaseStream; Console.WriteLine(baseStream.Position); } break; } }