Пример #1
0
        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);
        }
Пример #2
0
        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}");
        }
Пример #3
0
        private static async Task HandlePayload(SharedWelcomePayload payload, IManagedNetworkClient <PSOBBGamePacketPayloadClient, PSOBBGamePacketPayloadServer> client)
        {
            Console.WriteLine($"Server Vector: {payload.ServerVector.Aggregate("", (s, b) => $"{s} {b.ToString()}")}");
            Console.WriteLine($"Client Vector: {payload.ClientVector.Aggregate("", (s, b) => $"{s} {b.ToString()}")}");

            EncryptionKeyInitializer.Initialize(payload.ClientVector);
            DecryptionKeyInitializer.Initialize(payload.ServerVector);

            Console.WriteLine(payload.CopyrightMessage);

            if (hasSecurityData)
            {
                await client.SendMessage(new SharedLoginRequest93Payload(0x41, teamId, "glader", "playpso69", ClientVerification));
            }
            else
            {
                await client.SendMessage(new SharedLoginRequest93Payload(0x41, "glader", "playpso69", ClientVerificationData.FromVersionString("TethVer12510")));
            }
        }