public bool ProcessClientData() { switch (State) { case -1: //Garbage. Drop it. GetClientData(ClientBuffer.Length); return(false); case 0: if (ClientBuffer.Length < 128) { // garbage from a running game session. we ignore it. //If we open a hex File we handle it diffrent ;) if (OpenFileMode == false) { GetClientData(ClientBuffer.Length); } return(false); } SecSession.ClientKey1 = GetClientData(128); return(true); case 1: if (ClientBuffer.Length < 128) { return(false); } SecSession.ClientKey2 = GetClientData(128); return(true); } if (ClientBuffer.Length < 4) { return(false); } int length = BitConverter.ToUInt16(ClientBuffer, 0); if (ClientBuffer.Length < length) { return(false); } ushort opCode = BitConverter.ToUInt16(ClientBuffer, 2); string opcodename = PacketTranslator.GetOpcodeName(MainWindow, opCode); Packet_old tmpPacket = new Packet_old(false, opCode, opcodename, GetClientData(length), false); string itemText = string.Format("[C] {0} [{1}]" , tmpPacket.Name , tmpPacket.Data.Length ); MainWindow.AppendPacket(Colors.WhiteSmoke, itemText, tmpPacket); return(false); }
public bool ProcessServerData() { switch (State) { case -1: //Garbage. Drop it. GetServerData(ServerBuffer.Length); return(false); case 0: if (ServerBuffer.Length < 128) { //First Dword 1 Options Packet. Ignore it. if (OpenFileMode == false) { GetServerData(ServerBuffer.Length); } return(false); } SecSession.ServerKey1 = GetServerData(128); State++; return(true); case 1: if (ServerBuffer.Length < 128) { return(false); } SecSession.ServerKey2 = GetServerData(128); SecSession.Init(); State++; return(true); } if (ServerBuffer.Length < 4) { return(false); } int length = BitConverter.ToUInt16(ServerBuffer, 0); if (ServerBuffer.Length < length) { return(false); } ushort opCode = BitConverter.ToUInt16(ServerBuffer, 2); string opcodename = PacketTranslator.GetOpcodeName(MainWindow, opCode); Packet_old tmpPacket = new Packet_old(true, opCode, opcodename, GetServerData(length), false); ; string itemText = string.Format("[S] {0} [{1}]" , tmpPacket.Name , tmpPacket.Data.Length ); MainWindow.AppendPacket(Colors.LightBlue, itemText, tmpPacket); return(false); }