Example #1
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x01);
     wSock.writeShort(SharedLength);
     wSock.Send(SharedSecret);
     wSock.writeShort(VerifyLength);
     wSock.Send(VerifyToken);
     wSock.Purge();
 }
Example #2
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x00);
     wSock.writeVarInt(ProtocolVersion);
     wSock.writeString(ServerAddress);
     wSock.writeShort(ServerPort);
     wSock.writeVarInt(NextState);
     wSock.Purge();
 }
Example #3
0
        /// <summary>
        /// Starts the transparent proxy
        /// </summary>
        public void Start() {
            cbaseListener = new TcpListener(IPAddress.Any, CPort);
            cbaseListener.Start();
            cbaseSock = cbaseListener.AcceptTcpClient();

            sbaseSock = new TcpClient(IP, SPort);
            sbaseStream = sbaseSock.GetStream();

            cbaseStream = cbaseSock.GetStream(); // -- Client accepted successfully, woo.

            sSock = new Wrapped(sbaseStream);
            cSock = new Wrapped(cbaseStream);

            ServerThread = new Thread(ServerNetworkHandler);
            ClientThread = new Thread(ClientNetworkHandler);
            ServerThread.Start();
            ClientThread.Start();
        }
Example #4
0
        /// <summary>
        /// Starts the transparent proxy
        /// </summary>
        public void Start() {
            _cbaseListener = new TcpListener(IPAddress.Any, CPort);
            _cbaseListener.Start();
            _cbaseSock = _cbaseListener.AcceptTcpClient();

            _sbaseSock = new TcpClient(Ip, SPort);
            _sbaseStream = _sbaseSock.GetStream();

            _cbaseStream = _cbaseSock.GetStream(); // -- Client accepted successfully, woo.

            SSock = new Wrapped(_sbaseStream);
            CSock = new Wrapped(_cbaseStream);

            _serverThread = new Thread(ServerNetworkHandler);
            _clientThread = new Thread(ClientNetworkHandler);
            _serverThread.Start();
            _clientThread.Start();
        }
        public static object[] ReadEntityMetadata(Wrapped wSock) {
            var MetadataDict = new Dictionary<int, object>();

            do {
                var item = wSock.readByte();

                if (item == 127)
                    break;

                var index = item & 0x1F;
                var type = item >> 5;

                switch (type) {
                    case 0:
                        MetadataDict.Add(index, wSock.readByte());
                        break;
                    case 1:
                        MetadataDict.Add(index, wSock.readShort());
                        break;
                    case 2:
                        MetadataDict.Add(index, wSock.readInt());
                        break;
                    case 3:
                        MetadataDict.Add(index, wSock.readFloat());
                        break;
                    case 4:
                        MetadataDict.Add(index, wSock.readString());
                        break;
                    case 5:
                        MetadataDict.Add(index, ReadSlot(wSock));
                        break;
                    case 6:
                        MetadataDict.Add(index, new Vector(wSock.readInt(), wSock.readInt(), wSock.readInt()));
                        break;
                }
            } while (true);

            MetadataDict.OrderBy(o => o.Key); // -- Order the dictionary based on the index values
            return MetadataDict.Values.ToArray(); // -- Return the data as an array.
        }
        /// <summary>
        /// Starts the network handler. (Connects to a minecraft server)
        /// </summary>
        public void Start() {
            try {
                _baseSock = new TcpClient();
                var ar = _baseSock.BeginConnect(_mainMc.ServerIp, _mainMc.ServerPort, null, null);

                using (var wh = ar.AsyncWaitHandle) {
                    if (!ar.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5), false)) {
                        _baseSock.Close();
                        RaiseSocketError(this, "Failed to connect: Connection Timeout");
                        return;
                    }

                    _baseSock.EndConnect(ar);
                }

            } catch (Exception e) {
                RaiseSocketError(this, "Failed to connect: " + e.Message);
                return;
            }
            
            _mainMc.Running = true;

            RaiseSocketInfo(this, "Connected to server.");
            RaiseSocketDebug(this, string.Format("IP: {0} Port: {1}", _mainMc.ServerIp, _mainMc.ServerPort.ToString()));

            // -- Create our Wrapped socket.
            _baseStream = _baseSock.GetStream();
            WSock = new Wrapped(_baseStream);
            RaiseSocketDebug(this, "Socket Created");

            DoHandshake();

            _packetHandlers = new PacketEventHandler(this);

            // -- Start network parsing.
            _handler = new Thread(NetworkPacketHandler);
            _handler.Start();
            RaiseSocketDebug(this, "Handler thread started");
        }
 public static void WriteModifierData(Wrapped wSock, ModifierData Data) {
     wSock.Send(Data.UUID);
     wSock.writeDouble(Data.Amount);
     wSock.writeByte(Data.Operation);
 }
 public static void WritePropertyData(Wrapped wSock, PropertyData Data) {
     wSock.writeString(Data.Key);
     wSock.writeDouble(Data.Value);
     wSock.writeShort(Data.ListLength);
     
     for (int x = 0; x < Data.ListLength; x++)
         WriteModifierData(wSock, Data.Modifiers[x]);
 }
        public static ModifierData ReadModifierData(Wrapped wSock) {
            var Data = new ModifierData();

            Data.UUID = wSock.readByteArray(16); // -- Because f**k Minecraft.
            Data.Amount = wSock.readDouble();
            Data.Operation = wSock.readByte();

            return Data;
        }
 public static void WriteObjectMetadata(Wrapped wSock, ObjectMetadata Data) {
     wSock.writeInt(Data.ObjectID);
     
     if (Data.ObjectID != 0) {
         wSock.writeShort(Data.SpeedX);
         wSock.writeShort(Data.SpeedY);
         wSock.writeShort(Data.SpeedZ);
     }
 }
        public static PropertyData ReadPropertyData(Wrapped wSock) {
            var Data = new PropertyData();

            Data.Key = wSock.readString();
            Data.Value = wSock.readDouble();
            Data.ListLength = wSock.readShort();
            Data.Modifiers = new ModifierData[Data.ListLength];

            for (int x = 0; x < Data.ListLength; x++) 
                Data.Modifiers[x] = ReadModifierData(wSock);
            
            return Data;
        }
        public static Record ReadRecord(Wrapped wSock) {
            var Data = new Record();
            var RecordData = wSock.readInt();

            Data.Metadata = (byte)(RecordData & 0xF);
            Data.BlockID = (short)((RecordData >> 4) & 0xFFF);
            Data.Y = (byte)((RecordData >> 16) & 0xFF);
            Data.Z = (byte)((RecordData >> 24) & 0xF);
            Data.X = (byte)((RecordData >> 28) & 0xF);

            return Data;
        }
Example #13
0
 public void Read(Wrapped wSock) {
     EntityID = wSock.readVarInt();
     Animation = wSock.readByte();
 }
Example #14
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x0D);
     wSock.writeInt(CollectedEntityID);
     wSock.writeInt(CollectorEntityID);
     wSock.Purge();
 }
Example #15
0
 public void Read(Wrapped wSock) {
     EntityID = wSock.readInt();
     X = wSock.readInt();
     Y = wSock.readByte();
     Z = wSock.readInt();
 }
Example #16
0
 public void Read(Wrapped wSock) {
     ServerID = wSock.readString();
     PublicLength = wSock.readShort();
     PublicKey = wSock.readByteArray(PublicLength);
     VerifyLength = wSock.readShort();
     VerifyToken = wSock.readByteArray(VerifyLength);
 }
Example #17
0
 public void Read(Wrapped wSock) {
     CollectedEntityID = wSock.readInt();
     CollectorEntityID = wSock.readInt();
 }
Example #18
0
        public void Write(Wrapped wSock) {
            wSock.writeVarInt(0x0C);
            wSock.writeVarInt(EntityID);
            wSock.writeString(PlayerUUID);
            wSock.writeString(PlayerName);
            wSock.writeVarInt(Data.Length);

            for (int i = 0; i < Data.Length; i++) {
                wSock.writeString(Data[i].Name);
                wSock.writeString(Data[i].Value);
                wSock.writeString(Data[i].Signature);
            }

            wSock.writeInt(X);
            wSock.writeInt(Y);
            wSock.writeInt(Z);
            wSock.writeSByte(Yaw);
            wSock.writeSByte(Pitch);
            wSock.writeShort(CurrentItem);
            WrappedExtension.WriteEntityMetadata(wSock, Metadata);
            wSock.Purge();
        }
Example #19
0
        public void Read(Wrapped wSock) {
            EntityID = wSock.readVarInt();
            PlayerUUID = wSock.readString();
            PlayerName = wSock.readString();
            Datacount = wSock.readVarInt();
            Data = new PlayerData[Datacount];

            for (int i = 0; i < Datacount; i++) {
                Data[i].Name = wSock.readString();
                Data[i].Value = wSock.readString();
                Data[i].Signature = wSock.readString();
            }

            X = wSock.readInt();
            Y = wSock.readInt();
            Z = wSock.readInt();
            Yaw = wSock.readSByte();
            Pitch = wSock.readSByte();
            CurrentItem = wSock.readShort();
            Metadata = WrappedExtension.ReadEntityMetadata(wSock);
        }
Example #20
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x0B);
     wSock.writeVarInt(EntityID);
     wSock.writeByte(Animation);
     wSock.Purge();
 }
        public static SlotData ReadSlot(Wrapped wSock) {
            var Data = new SlotData();
            Data.ID = wSock.readShort();

            if (Data.ID == -1) {
                Data.ID = 0;
                Data.ItemCount = 0;
                Data.ItemDamage = 0;
                return Data;
            }

            Data.ItemCount = wSock.readByte();
            Data.ItemDamage = wSock.readShort();
            var NBTLength = wSock.readShort();

            if (NBTLength == -1)
                return Data;

            Data.NbtData = wSock.readByteArray(NBTLength);
            return Data;
        }
        public static ObjectMetadata ReadObjectMetadata(Wrapped wSock) {
            var Data = new ObjectMetadata();
            Data.ObjectID = wSock.readInt();

            if (Data.ObjectID != 0) {
                Data.SpeedX = wSock.readShort();
                Data.SpeedY = wSock.readShort();
                Data.SpeedZ = wSock.readShort();
            }

            return Data;
        }
        public static void WriteSlot(Wrapped wSock, SlotData Data) {
            if (Data.ID == -1) {
                wSock.writeShort(-1);
                return;
            }

            wSock.writeShort(Data.ID);
            wSock.writeByte(Data.ItemCount);
            wSock.writeShort(Data.ItemDamage);

            if (Data.NbtData == null) {
                wSock.writeShort(-1);
                return;
            }

            wSock.writeShort((short)Data.NbtData.Length);
            wSock.Send(Data.NbtData);
        }
Example #24
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x09);
     wSock.writeSByte(Slot);
     wSock.Purge();
 }
 public static void WriteRecord(Wrapped wSock, Record Data) {
     int RecordData = Data.Metadata & 0xF | (Data.BlockID & 0xFFF) << 4 | (Data.Y & 0xFF) << 16 | (Data.Z & 0xF) << 24 | (Data.X & 0xF) << 28;
     wSock.writeInt(RecordData);
 }
Example #26
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x0A);
     wSock.writeInt(EntityID);
     wSock.writeInt(X);
     wSock.writeByte(Y);
     wSock.writeInt(Z);
     wSock.Purge();
 }
 public static void WriteEntityMetadata(Wrapped wSock, object[] Metadata) {
     throw new NotImplementedException("Not quite done here yet.");
 }
Example #28
0
 public void Write(Wrapped wSock) {
     wSock.writeVarInt(0x08);
     wSock.writeDouble(X);
     wSock.writeDouble(Y);
     wSock.writeDouble(Z);
     wSock.writeFloat(Yaw);
     wSock.writeFloat(Pitch);
     wSock.writeBool(OnGround);
     wSock.Purge();
 }
Example #29
0
        /// <summary>
        /// Stops the network handler. (Disconnects from a minecraft server)
        /// </summary>
        public void Stop() {
            DebugMessage(this, "Stopping network handler...");
            _handler.Abort();

            WSock = null;
            _baseStream = null;

            _baseSock.Close();
            InfoMessage(this, "Disconnected from Minecraft Server.");

        }
Example #30
0
 public void Read(Wrapped wSock) {
     Slot = wSock.readSByte();
 }