Ejemplo n.º 1
0
        private void HandleEncryption(EncryptionRequestPacket packet)
        {
            var random = RandomNumberGenerator.Create();

            _sharedSecret = new byte[16];
            random.GetBytes(_sharedSecret);

            if (packet.ServerId != "")
            {
                throw new NotImplementedException("Online mode is not implemented");
            }

            var parser = new AsnKeyParser(packet.PublicKey);
            var key    = parser.ParseRSAPublicKey();

            // Encrypt shared secret and verification token
            var crypto = new RSACryptoServiceProvider();

            crypto.ImportParameters(key);
            WritePacket(new EncryptionResponsePacket
            {
                SharedSecret = crypto.Encrypt(_sharedSecret, false),
                VerifyToken  = crypto.Encrypt(packet.VerifyToken, false),
            });

            _baseStream = new AesStream(_networkStream, _sharedSecret);
            _writer     = new MinecraftStreamWriter(_baseStream);
            _reader     = new MinecraftStreamReader(_baseStream);
        }
Ejemplo n.º 2
0
        public void WritePacket(IMinecraftStreamWriter writer)
        {
            writer.WriteVarInt((int)Action);
            writer.WriteVarInt(PlayerList.Count);

            foreach (var listItem in PlayerList)
            {
                writer.WriteByteArray(listItem.Uuid.ToByteArray());
                listItem.ToStream(writer);
            }
        }
Ejemplo n.º 3
0
 public void ToStream(IMinecraftStreamWriter stream)
 {
     stream.WriteString(Name);
     Properties.ToStream(stream);
     stream.WriteVarInt(Gamemode);
     stream.WriteVarInt(Ping);
     stream.WriteBool(HasDisplayName);
     if (HasDisplayName)
     {
         stream.WriteString(DisplayName);
     }
 }
Ejemplo n.º 4
0
        public void Connect(IPEndPoint endPoint)
        {
            _client = new TcpClient();
            _client.Connect(endPoint);

            _networkStream = _client.GetStream();
            _baseStream    = _networkStream;
            _writer        = new MinecraftStreamWriter(_baseStream);
            _reader        = new MinecraftStreamReader(_baseStream);

            _networkThread = new Thread(NetworkThread);
            _networkThread.Start();
        }
Ejemplo n.º 5
0
        public void ToStream(IMinecraftStreamWriter stream)
        {
            stream.WriteVarInt(Count);

            foreach (var entry in _entries)
            {
                stream.WriteString(entry.Name);
                stream.WriteString(entry.Value);
                stream.WriteBool(entry.IsSigned);
                if (entry.IsSigned)
                {
                    stream.WriteString(entry.Signature);
                }
            }
        }
Ejemplo n.º 6
0
        public void WritePacketToStream(IPacket packet, IMinecraftStreamWriter writer)
        {
            var manualPacket = packet as IManualPacket;

            if (manualPacket != null)
            {
                manualPacket.WritePacket(writer);

                return;
            }

            foreach (var packetFieldAction in FieldActions)
            {
                packetFieldAction.WriterAction(packet, writer);
            }
        }
Ejemplo n.º 7
0
 public void ToStream(IMinecraftStreamWriter stream)
 {
 }
Ejemplo n.º 8
0
 public void ToStream(IMinecraftStreamWriter stream)
 {
     stream.WriteBool(HasDisplayName);
     stream.WriteString(DisplayName);
 }
Ejemplo n.º 9
0
 public void ToStream(IMinecraftStreamWriter stream)
 {
     stream.WriteVarInt(Ping);
 }
Ejemplo n.º 10
0
 public void ToStream(IMinecraftStreamWriter stream)
 {
     stream.WriteVarInt(Gamemode);
 }