public override async void OnConnection(object sender, SocketAsyncEventArgs e) { var recievedBytes = e.BytesTransferred; if (!isTransferInitiated[1]) { var clientToServer = "WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER\0"; var transferInit = new Packets.Client.Authentication.TransferInitiate { Packet = new Packet(dataBuffer, 2) } as Packets.Client.Authentication.TransferInitiate; transferInit.Read(); if (transferInit.Msg == clientToServer) { State = SessionState.Initiated; isTransferInitiated[1] = true; e.Completed -= OnConnection; e.Completed += Process; Log.Message($"Initial packet transfer for Client '{GetClientInfo()}' successfully initialized."); client.ReceiveAsync(e); // Assign server challenge for auth digest calculations Challenge = BitConverter.ToUInt32(new byte[0].GenerateRandomKey(4), 0); ClientSeed = new byte[16].GenerateRandomKey(16); ServerSeed = new byte[16].GenerateRandomKey(16); await Send(new Packets.Server.Authentication.AuthChallenge { Challenge = Challenge, DosChallenge = ClientSeed.Combine(ServerSeed) }); } else { Log.Error($"Wrong initial packet transfer data for Client '{GetClientInfo()}'."); Dispose(); } } else { Dispose(); } }
public override async void OnConnection(object sender, SocketAsyncEventArgs e) { var recievedBytes = e.BytesTransferred; if (!isTransferInitiated[1]) { var clientToServer = "WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER\0"; var transferInit = new Packets.Client.Authentication.TransferInitiate { Packet = new Packet(dataBuffer, 2) } as Packets.Client.Authentication.TransferInitiate; transferInit.Read(); if (transferInit.Msg == clientToServer) { State = SessionState.Initiated; isTransferInitiated[1] = true; e.Completed -= OnConnection; e.Completed += Process; Log.Message($"Initial packet transfer for Client '{GetClientInfo()}' successfully initialized."); client.ReceiveAsync(e); // Assign server challenge for auth digest calculations Challenge = BitConverter.ToUInt32(new byte[0].GenerateRandomKey(4), 0); ClientSeed = new byte[16].GenerateRandomKey(16); ServerSeed = new byte[16].GenerateRandomKey(16); await Send(new Packets.Server.Authentication.AuthChallenge { Challenge = Challenge, DosChallenge = ClientSeed.Combine(ServerSeed) }); } else { Log.Error($"Wrong initial packet transfer data for Client '{GetClientInfo()}'."); Dispose(); } } else Dispose(); }