public DownloadStreaming(string Symbol, ChartWinControl cwc, OnNewPacket onp, int interval)
 {
     alSymbols = new ArrayList();
     AddSymbol(Symbol);
     ChartControl     = cwc;
     this.OnNewPacket = onp;
     this.interval    = interval;
 }
Beispiel #2
0
        void Read()
        {
            var fileStream = File.Open("/dev/CSI_dev", FileMode.Open, FileAccess.Read);

            while (!ThreadCancellation.IsCancellationRequested)
            {
                var packet = ReadCSIPacket(fileStream);
                if (packet != null)
                {
                    OnNewPacket?.Invoke(this, packet);
                }
            }

            fileStream.Dispose();
        }
Beispiel #3
0
        public void handlePacketData(byte[] Data, bool deciphered = false)
        {
            try
            {
                if (OnNewPacket == null)
                {
                    return;
                }

                if (Data.Length >= 2)
                {
                    if (Data[0] == 60 && Data[1] == 112)
                    {
                        this.currentClient.GetConnection().SendData(Encoding.Default.GetBytes(GetXmlPolicy()));
                    }
                }

                if (currentClient != null && !deciphered)
                {
                    //currentClient.RC4Client.Decrypt(ref Data);
                }

                if (this._halfDataRecieved)
                {
                    byte[] FullDataRcv = new byte[this._halfData.Length + Data.Length];
                    Buffer.BlockCopy(this._halfData, 0, FullDataRcv, 0, this._halfData.Length);
                    Buffer.BlockCopy(Data, 0, FullDataRcv, this._halfData.Length, Data.Length);

                    this._halfDataRecieved = false; // mark done this round
                    handlePacketData(FullDataRcv);  // repeat now we have the combined array
                    return;
                }

                using (BinaryReader Reader = new BinaryReader(new MemoryStream(Data)))
                {
                    if (Data.Length < 4)
                    {
                        return;
                    }

                    int MsgLen = HabboEncoding.DecodeInt32(Reader.ReadBytes(4));
                    if (MsgLen <= 0 || MsgLen > (5120 * 2))
                    {
                        return;
                    }

                    if ((Reader.BaseStream.Length - 4) < MsgLen)
                    {
                        this._halfData         = Data;
                        this._halfDataRecieved = true;
                        return;
                    }

                    byte[] Packet = Reader.ReadBytes(MsgLen);

                    using (BinaryReader R = new BinaryReader(new MemoryStream(Packet)))
                    {
                        int Header = HabboEncoding.DecodeInt16(R.ReadBytes(2));

                        byte[] Content = new byte[Packet.Length - 2];
                        Buffer.BlockCopy(Packet, 2, Content, 0, Packet.Length - 2);

                        ClientPacket Message = new ClientPacket(Header, Content);
                        OnNewPacket.Invoke(Message);
                    }

                    if (Reader.BaseStream.Length - 4 > MsgLen)
                    {
                        byte[] Extra = new byte[Reader.BaseStream.Length - Reader.BaseStream.Position];
                        Buffer.BlockCopy(Data, (int)Reader.BaseStream.Position, Extra, 0, ((int)Reader.BaseStream.Length - (int)Reader.BaseStream.Position));

                        handlePacketData(Extra, true);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Packet Error! " + e);
            }
        }
Beispiel #4
0
        public void handlePacketData(byte[] Data)
        {
            try
            {
                if (currentClient.RC4Client != null && !_deciphered)
                {
                    currentClient.RC4Client.Decrypt(ref Data);
                    _deciphered = true;
                }

                if (_halfDataRecieved)
                {
                    byte[] FullDataRcv = new byte[_halfData.Length + Data.Length];
                    Buffer.BlockCopy(_halfData, 0, FullDataRcv, 0, _halfData.Length);
                    Buffer.BlockCopy(Data, 0, FullDataRcv, _halfData.Length, Data.Length);

                    _halfDataRecieved = false;     // mark done this round
                    handlePacketData(FullDataRcv); // repeat now we have the combined array
                    return;
                }

                using (BinaryReader Reader = new BinaryReader(new MemoryStream(Data)))
                {
                    if (Data.Length < 4)
                    {
                        return;
                    }

                    int MsgLen = HabboEncoding.DecodeInt32(Reader.ReadBytes(4));
                    if ((Reader.BaseStream.Length - 4) < MsgLen)
                    {
                        _halfData         = Data;
                        _halfDataRecieved = true;
                        return;
                    }
                    else if (MsgLen < 0 || MsgLen > 5120)//TODO: Const somewhere.
                    {
                        return;
                    }

                    byte[] Packet = Reader.ReadBytes(MsgLen);

                    using (BinaryReader R = new BinaryReader(new MemoryStream(Packet)))
                    {
                        int Header = HabboEncoding.DecodeInt16(R.ReadBytes(2));

                        byte[] Content = new byte[Packet.Length - 2];
                        Buffer.BlockCopy(Packet, 2, Content, 0, Packet.Length - 2);

                        ClientPacket Message = new ClientPacket(Header, Content);
                        OnNewPacket.Invoke(Message);

                        _deciphered = false;
                    }

                    if (Reader.BaseStream.Length - 4 > MsgLen)
                    {
                        byte[] Extra = new byte[Reader.BaseStream.Length - Reader.BaseStream.Position];
                        Buffer.BlockCopy(Data, (int)Reader.BaseStream.Position, Extra, 0, (int)(Reader.BaseStream.Length - Reader.BaseStream.Position));

                        _deciphered = true;
                        handlePacketData(Extra);
                    }
                }
            }
            catch (Exception e)
            {
                log.Error("Packet Error!", e);
            }
        }
Beispiel #5
0
        public void HandlePacketData(byte[] data)
        {
            try
            {
                if (_client.Rc4Client != null && !_deciphered)
                {
                    _client.Rc4Client.Decrypt(ref data);
                    _deciphered = true;
                }

                if (_halfDataRecieved)
                {
                    byte[] fullDataRcv = new byte[_halfData.Length + data.Length];
                    Buffer.BlockCopy(_halfData, 0, fullDataRcv, 0, _halfData.Length);
                    Buffer.BlockCopy(data, 0, fullDataRcv, _halfData.Length, data.Length);

                    _halfDataRecieved = false;     // mark done this round
                    HandlePacketData(fullDataRcv); // repeat now we have the combined array
                    return;
                }

                using (BinaryReader reader = new BinaryReader(new MemoryStream(data)))
                {
                    if (data.Length < 4)
                    {
                        return;
                    }

                    int msgLen = HabboEncoding.DecodeInt32(reader.ReadBytes(4));
                    if ((reader.BaseStream.Length - 4) < msgLen)
                    {
                        _halfData         = data;
                        _halfDataRecieved = true;
                        return;
                    }

                    if (msgLen < 0 || msgLen > 5120)//TODO: Const somewhere.
                    {
                        return;
                    }

                    byte[] packet = reader.ReadBytes(msgLen);

                    using (BinaryReader r = new BinaryReader(new MemoryStream(packet)))
                    {
                        int header = HabboEncoding.DecodeInt16(r.ReadBytes(2));

                        byte[] content = new byte[packet.Length - 2];
                        Buffer.BlockCopy(packet, 2, content, 0, packet.Length - 2);

                        ClientPacket message = new ClientPacket(header, content);
                        OnNewPacket.Invoke(message);

                        _deciphered = false;
                    }

                    if (reader.BaseStream.Length - 4 > msgLen)
                    {
                        byte[] extra = new byte[reader.BaseStream.Length - reader.BaseStream.Position];
                        Buffer.BlockCopy(data, (int)reader.BaseStream.Position, extra, 0, (int)(reader.BaseStream.Length - reader.BaseStream.Position));

                        _deciphered = true;
                        HandlePacketData(extra);
                    }
                }
            }
#pragma warning disable CS0168 // The variable 'e' is declared but never used
            catch (Exception e)
#pragma warning restore CS0168 // The variable 'e' is declared but never used
            {
                //log.Error("Packet Error!", e);
            }
        }
Beispiel #6
0
        public void HandlePacketData(byte[] Data)
        {
            try
            {
                if (CurrentClient.RC4Client != null && !Deciphered)
                {
                    CurrentClient.RC4Client.Decrypt(ref Data);
                    Deciphered = true;
                }

                if (HalfDataRecieved)
                {
                    byte[] FullDataRcv = new byte[HalfData.Length + Data.Length];
                    Buffer.BlockCopy(HalfData, 0, FullDataRcv, 0, HalfData.Length);
                    Buffer.BlockCopy(Data, 0, FullDataRcv, HalfData.Length, Data.Length);
                    HalfDataRecieved = false;
                    HandlePacketData(FullDataRcv);

                    return;
                }

                using (BinaryReader Reader = new BinaryReader(new MemoryStream(Data)))
                {
                    if (Data.Length < 4)
                    {
                        return;
                    }

                    int MsgLen = HabboEncoding.DecodeInt32(Reader.ReadBytes(4));

                    if ((Reader.BaseStream.Length - 4) < MsgLen)
                    {
                        HalfData         = Data;
                        HalfDataRecieved = true;

                        return;
                    }
                    else if (MsgLen < 0 || MsgLen > 5120)
                    {
                        return;
                    }

                    byte[] Packet = Reader.ReadBytes(MsgLen);

                    using (BinaryReader R = new BinaryReader(new MemoryStream(Packet)))
                    {
                        int    Header  = HabboEncoding.DecodeInt16(R.ReadBytes(2));
                        byte[] Content = new byte[Packet.Length - 2];
                        Buffer.BlockCopy(Packet, 2, Content, 0, Packet.Length - 2);
                        ClientPacket Message = new ClientPacket(Header, Content);
                        OnNewPacket.Invoke(Message);
                        Deciphered = false;
                    }

                    if (Reader.BaseStream.Length - 4 > MsgLen)
                    {
                        byte[] Extra = new byte[Reader.BaseStream.Length - Reader.BaseStream.Position];
                        Buffer.BlockCopy(Data, (int)Reader.BaseStream.Position, Extra, 0, (int)(Reader.BaseStream.Length - Reader.BaseStream.Position));
                        Deciphered = true;
                        HandlePacketData(Extra);
                    }
                }
            }
            catch (Exception e)
            {
                //log.Error("Packet Error!", e);
            }
        }