Ejemplo n.º 1
0
        internal static void Main(string[] args)
        {
            Console.WriteLine("Test");
            XedState state = new XedState
            {
                Mode = MachineMode.Legacy32,
                StackAddressWidth = AddressWidth.Width32
            };

            EncoderRequest enc = new EncoderRequest(state);

            enc.Class = InstClass.Push;
            enc.SetOperandOrder(0, OperandName.Reg0);
            enc.SetReg(OperandName.Reg0, Register.Eax);
            byte[] bytes = enc.Encode();

            DecodedInstruction inst = new DecodedInstruction(state);

            inst.Decode(bytes);

            enc = new EncoderRequest(inst);
            enc.SetBase0(Register.Edx);
            bytes = enc.Encode();
            inst  = new DecodedInstruction(state);
            inst.Decode(bytes);

            Console.ReadLine();
        }
        public void DiscoveryServerOnDataAvailable(TcpServerConnection connection)
        {
            Logger.Trace("DiscoveryServer.OnDataAvailable: {0}", connection.ClientAddress.ToString());

            var client = connection.Socket;

            using (var stream = client.GetStream())
                using (var sw = new StreamWriter(stream))
                {
                    if (stream.DataAvailable)
                    {
                        var data = new byte[5013];

                        try
                        {
                            var bytesRead = stream.Read(data, 0, data.Length);

                            Logger.Debug("{1} Bytes Received: {0}", bytesRead, connection.ClientAddress);

                            var request = new EncoderRequest();
                            request.Deserialize(ref data);

                            foreach (var device in _settings.Devices)
                            {
                                foreach (var tuner in device.Tuners)
                                {
                                    if (tuner.Enabled)
                                    {
                                        var response = new EncoderResponse
                                        {
                                            Name    = tuner.Name,
                                            Length  = tuner.Name.Length,
                                            Prefix  = request.Prefix,
                                            Version = "210",
                                            Port    = (uint)tuner.ListenerPort
                                        };

                                        Logger.Debug("Sending:{0}", response);
                                        sw.Write(response);
                                    }
                                }
                            }

                            connection.ForceDisconnect();
                        }

                        catch (IOException ex)
                        {
                            Logger.Warn("IOException while reading stream", ex);
                        }
                    }
                }
        }