public DownloadStreaming(string Symbol, ChartWinControl cwc, OnNewPacket onp, int interval) { alSymbols = new ArrayList(); AddSymbol(Symbol); ChartControl = cwc; this.OnNewPacket = onp; this.interval = interval; }
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(); }
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); } }
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); } }
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); } }
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); } }