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 ClientPacket.TransferInitiate { Packet = new Packet(dataBuffer, 2) } as ClientPacket.TransferInitiate; transferInit.Read(); if (transferInit.Msg == clientToServer) { State = SessionState.Initiated; isTransferInitiated[1] = true; e.Completed -= OnConnection; e.Completed += Process; Log.Debug($"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 ServerPacket.AuthChallenge { Challenge = Challenge, DosChallenge = ClientSeed.Combine(ServerSeed) }); } else { Log.Debug($"Wrong initial packet transfer data for Client '{GetClientInfo()}'."); Dispose(); } } else { Dispose(); } }
public override void OnConnection(object sender, SocketAsyncEventArgs e) { if (!isTransferInitiated[1]) { var clientToServer = "WORLD OF WARCRAFT CONNECTION - CLIENT TO SERVER"; var data = new byte[0x32]; Buffer.BlockCopy(dataBuffer, 0, data, 0, data.Length); var transferInit = new ClientPacket.TransferInitiate { Packet = new Packet(data, false) }.Read() as ClientPacket.TransferInitiate; if (transferInit.Msg == clientToServer) { isTransferInitiated[1] = true; e.Completed -= OnConnection; e.Completed += Process; Log.Message(LogType.Debug, "Initial packet transfer for Client '{0}' successfully initialized.", GetClientIP()); 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); Send(new ServerPacket.AuthChallenge { Challenge = Challenge, DosChallenge = ClientSeed.Combine(ServerSeed) }); } else { Log.Message(LogType.Debug, "Wrong initial packet transfer data for Client '{0}'.", GetClientIP()); 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 ClientPacket.TransferInitiate { Packet = new Packet(dataBuffer, 2) } as ClientPacket.TransferInitiate; transferInit.Read(); if (transferInit.Msg == clientToServer) { State = SessionState.Initiated; isTransferInitiated[1] = true; e.Completed -= OnConnection; e.Completed += Process; Log.Debug($"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 ServerPacket.AuthChallenge { Challenge = Challenge, DosChallenge = ClientSeed.Combine(ServerSeed) }); } else { Log.Debug($"Wrong initial packet transfer data for Client '{GetClientInfo()}'."); Dispose(); } } else Dispose(); }