private static async Task HandlePayload(SharedConnectionRedirectPayload payload, IManagedNetworkClient <PSOBBGamePacketPayloadClient, PSOBBGamePacketPayloadServer> client) { Console.WriteLine($"Redirect: {payload.EndpointAddress}:{payload.EndpointerPort}"); EncryptionKeyInitializer.Uninitialize(); DecryptionKeyInitializer.Uninitialize(); //Redirects to character the first time await client.ConnectAsync(payload.EndpointAddress, payload.EndpointerPort); }
private static async Task HandlePayload(SharedLoginResponsePayload payload, IManagedNetworkClient <PSOBBGamePacketPayloadClient, PSOBBGamePacketPayloadServer> client) { Console.WriteLine($"Login Response: {payload.ResponseCode}"); if (hasSecurityData && hasAskedForChars && !hasSelectedCharacter) { hasSelectedCharacter = true; await client.SendMessage(new CharacterCharacterSelectionRequestPayload(0, CharacterSelectionType.PlaySelection)); Task.Factory.StartNew(async() => { await Task.Delay(3000); DecryptionKeyInitializer.Uninitialize(); EncryptionKeyInitializer.Uninitialize(); await client.ConnectAsync("158.69.215.131", 12001); }); return; } if (hasSecurityData && !hasAskedForChars) { hasAskedForChars = true; for (int i = 0; i < 4; i++) { await client.SendMessage(new CharacterCharacterSelectionRequestPayload((byte)i, CharacterSelectionType.Preview)); } Task.Factory.StartNew(async() => { await Task.Delay(6000); await client.ConnectAsync("158.69.215.131", 12001); DecryptionKeyInitializer.Uninitialize(); EncryptionKeyInitializer.Uninitialize(); }); } //We should recieve a 19 redirect after this //We should use the bytes from the response for future sessions ClientVerification = new ClientVerificationData(0x41, payload.SecurityData); //.Take(32).Reverse().Concat(payload.SecurityData.Skip(32)).ToArray()); hasSecurityData = true; teamId = payload.TeamId; Console.WriteLine($"Set 32bit key: {payload.TeamId}"); }