public void checkoutN(byte[] buffer, int FirstLength) { int tamanho = buffer.Length; try { byte[] newPacketENC = new byte[tamanho - FirstLength - 4]; Array.Copy(buffer, FirstLength + 4, newPacketENC, 0, newPacketENC.Length); if (newPacketENC.Length == 0) { return; } int lengthPK = BitConverter.ToUInt16(newPacketENC, 0) & 0x7FFF; byte[] newPacketENC2 = new byte[lengthPK + 2]; Array.Copy(newPacketENC, 2, newPacketENC2, 0, newPacketENC2.Length); byte[] newPacketGO = new byte[lengthPK + 2]; Array.Copy(ComDiv.decrypt(newPacketENC2, Shift), 0, newPacketGO, 0, newPacketGO.Length); if (!CheckSeed(newPacketGO, false)) { return; } RunPacket(newPacketGO); checkoutN(newPacketENC, lengthPK); } catch {} }
public void checkoutN(byte[] buffer, int FirstLength) { int length = buffer.Length; try { byte[] numArray1 = new byte[length - FirstLength - 4]; Array.Copy((Array)buffer, FirstLength + 4, (Array)numArray1, 0, numArray1.Length); if (numArray1.Length == 0) { return; } int FirstLength1 = (int)BitConverter.ToUInt16(numArray1, 0) & (int)short.MaxValue; byte[] data = new byte[FirstLength1 + 2]; Array.Copy((Array)numArray1, 2, (Array)data, 0, data.Length); byte[] numArray2 = new byte[FirstLength1 + 2]; Array.Copy((Array)ComDiv.decrypt(data, this.Shift), 0, (Array)numArray2, 0, numArray2.Length); if (!this.CheckSeed(numArray2, false)) { return; } this.RunPacket(numArray2, numArray1); this.checkoutN(numArray1, FirstLength1); } catch { } }
private void OnReceiveCallback(IAsyncResult ar) { try { StateObject state = (StateObject)ar.AsyncState; int bytesCount = state.workSocket.EndReceive(ar); if (bytesCount > 0) { byte[] babyBuffer = new byte[bytesCount]; Array.Copy(state.buffer, 0, babyBuffer, 0, bytesCount); int length = BitConverter.ToUInt16(babyBuffer, 0) & 0x7FFF; byte[] buffer = new byte[length + 2]; Array.Copy(babyBuffer, 2, buffer, 0, buffer.Length); byte[] decrypted = ComDiv.decrypt(buffer, Shift); RunPacket(decrypted); checkoutN(babyBuffer, length); new Thread(read).Start(); } } catch { Close(0); } }
private void OnReceiveCallback(IAsyncResult ar) { try { GameClient.StateObject asyncState = (GameClient.StateObject)ar.AsyncState; int length = asyncState.workSocket.EndReceive(ar); if (length <= 0) { return; } byte[] buffer = new byte[length]; Array.Copy((Array)asyncState.buffer, 0, (Array)buffer, 0, length); int FirstLength = (int)BitConverter.ToUInt16(buffer, 0) & (int)short.MaxValue; byte[] numArray1 = new byte[FirstLength + 2]; Array.Copy((Array)buffer, 2, (Array)numArray1, 0, numArray1.Length); this.lastCompleteBuffer = buffer; byte[] numArray2 = ComDiv.decrypt(numArray1, this.Shift); if (!this.CheckSeed(numArray2, true)) { this.Close(0, false); } else { this.RunPacket(numArray2, numArray1); this.checkoutN(buffer, FirstLength); new Thread(new ThreadStart(this.read)).Start(); } } catch { this.Close(0, false); } }
private void OnReceiveCallback(IAsyncResult ar) { StateObject state = (StateObject)ar.AsyncState; try { int bytesCount = state.workSocket.EndReceive(ar); if (bytesCount < 1) { return; } byte[] babyBuffer = new byte[bytesCount]; Array.Copy(state.buffer, 0, babyBuffer, 0, bytesCount); int FirstLength = BitConverter.ToUInt16(babyBuffer, 0) & 0x7FFF; byte[] buffer = new byte[FirstLength + 2]; Array.Copy(babyBuffer, 2, buffer, 0, buffer.Length); if (buffer.Length < 4 || buffer.Length > 200) { SaveLog.warning(GetIPAddress() + " Pacote com tamanho suspeito [" + buffer.Length + "]"); Printf.warning(GetIPAddress() + " Pacote com tamanho suspeito [" + buffer.Length + "]"); } byte[] decrypted = ComDiv.decrypt(buffer, Shift); if (!CheckSeed(decrypted, true)) { Close(true); } else { RunPacket(decrypted); // Joga o packet decriptado pro case e toma a ação do opcode checkoutN(babyBuffer, FirstLength); new Thread(read).Start(); // Reinicia a thread de leitura } } catch { Close(true); } }