private static void ProcessPacket(ClientManager MyClient, ReadPacket CPacket) { Header PacketHead = CPacket.GetHeader(); byte[] PacketBody = CPacket.GetBody(); byte PacketType = CPacket.GetPacketType(); //Console.WriteLine("Receive Packet len: " + PacketHead.len); //Console.WriteLine("Packet Type: " + PacketType); switch (PacketType) { case 10: // version receive ParseVersionReceived(MyClient, CPacket); break; case 21: // login request ParseLoginRequest(MyClient, CPacket); break; case 27: // Enter server request //Console.WriteLine("Enter server request!"); SendData.SendResponseEnterServer(MyClient); // send packet type 28 user_id (4bytes) + GMS_token (4 bytes) break; case 153: // login request 2 ParseLoginRequest2(MyClient, CPacket); break; case 151: // login request 3 ParseLoginRequest3(MyClient, CPacket); break; default: Console.WriteLine("packet unknow: " + PacketType); break; } }
private static void ParseLoginRequest3(ClientManager MyClient, ReadPacket CPacket) { using (MemoryStream stream = new MemoryStream(CPacket.GetBody())) { using (BinaryReader br = new BinaryReader(stream, Encoding.UTF8)) { br.ReadByte(); byte[] userbytes = br.ReadBytes(21); byte[] passbytes = br.ReadBytes(21); string Username = PacketFunctions.ExtractStringFromBytes(userbytes); string Password = PacketFunctions.ExtractStringFromBytes(passbytes); Credentials MyCredential = new Credentials(); MyCredential.Username = Username; MyCredential.Password = Password; //Console.WriteLine("login request mode 3: " + Username + " | " + Password); SendData.SendLoginResponse3(MyClient, MyCredential); } } }