private void onKeyPacket(ByteBuffer packet) { packet.ReadByte(); this.cryptKey = packet.ReadBytes(16); this.cryptKey[8] = (byte)0xc8; this.cryptKey[9] = (byte)0x27; this.cryptKey[10] = (byte)0x93; this.cryptKey[11] = (byte)0x01; this.cryptKey[12] = (byte)0xa1; this.cryptKey[13] = (byte)0x6c; this.cryptKey[14] = (byte)0x31; this.cryptKey[15] = (byte)0x97; serverCrypt.setKey(this.cryptKey); clientCrypt.setKey(this.cryptKey); // ddcd packet.ReadInt32(); packet.ReadInt32(); packet.ReadByte(); this.obfusicateKey = packet.ReadInt32(); this.clientCrypt.generateOpcodeTable(this.obfusicateKey); }
public byte[] enableCrypt() { byte[] key = BlowFishKeygen.getRandomKey(); _crypt.setKey(key); return(key); }
/// <summary> /// Handles incoming packet. /// </summary> /// <param name="packet">Incoming packet.</param> protected override void Handle( Packet packet ) { Logger.WriteLine(Source.OuterNetwork, "Received: {0}", packet.ToString()); //Logger.WriteLine(Source.Debug, "packet.FirstOpcode = {0}", packet.FirstOpcode); switch ( State ) { case UserConnectionState.Disconnected: throw new InvalidOperationException(); case UserConnectionState.Connected: { switch ( packet.FirstOpcode ) { case 0x0e: // protocol { int revision = packet.ReadInt(); //Logger.WriteLine(Source.Debug, "Protocol Revision: {0}", revision); if ( revision == -2 ) { CloseConnection(); // remove from active connections list } if ( revision < Settings.Default.WorldMinProtoRev || revision > Settings.Default.WorldMaxProtoRev ) { CloseConnection(); // remove from active connections, log } byte[] keyIN = BlowFishKeygen.GetNext(); //byte[] keyOUT = BlowFishKeygen.GetNext(); m_Crypt = new GameCrypt(); m_Crypt.setKey(keyIN); SendNoCrypt(KeyPacket.Create(keyIN)); BeginReceive(); break; } case 0x2b: // login { new AuthLogin(packet).RunImpl(); break; } default: { Logger.WriteLine(Source.OuterNetwork, "Unknown packet on state {0}: Opcode = {1}", State, packet.FirstOpcode); break; } } return; } case UserConnectionState.Authed: { switch (packet.FirstOpcode) { default: { Logger.WriteLine(Source.OuterNetwork, "Unknown packet on state {0}: Opcode = {1}", State, packet.FirstOpcode); break; } } return; } } }
/// <summary> /// Handles incoming packet. /// </summary> /// <param name="packet">Incoming packet.</param> protected override void Handle(Packet packet) { Logger.WriteLine(Source.OuterNetwork, "Received: {0}", packet.ToString()); //Logger.WriteLine(Source.Debug, "packet.FirstOpcode = {0}", packet.FirstOpcode); switch (State) { case UserConnectionState.Disconnected: throw new InvalidOperationException(); case UserConnectionState.Connected: { switch (packet.FirstOpcode) { case 0x0e: // protocol { int revision = packet.ReadInt(); //Logger.WriteLine(Source.Debug, "Protocol Revision: {0}", revision); if (revision == -2) { CloseConnection(); // remove from active connections list } if (revision < Settings.Default.WorldMinProtoRev || revision > Settings.Default.WorldMaxProtoRev) { CloseConnection(); // remove from active connections, log } byte[] keyIN = BlowFishKeygen.GetNext(); //byte[] keyOUT = BlowFishKeygen.GetNext(); m_Crypt = new GameCrypt(); m_Crypt.setKey(keyIN); SendNoCrypt(KeyPacket.Create(keyIN)); BeginReceive(); break; } case 0x2b: // login { new AuthLogin(packet).RunImpl(); break; } default: { Logger.WriteLine(Source.OuterNetwork, "Unknown packet on state {0}: Opcode = {1}", State, packet.FirstOpcode); break; } } return; } case UserConnectionState.Authed: { switch (packet.FirstOpcode) { default: { Logger.WriteLine(Source.OuterNetwork, "Unknown packet on state {0}: Opcode = {1}", State, packet.FirstOpcode); break; } } return; } } }