コード例 #1
0
ファイル: TCPDecoder.cs プロジェクト: zhyupe/machina
        /// <summary>
        /// Takes one TCP packet as a byte array, filters it based on source/destination ports, and stores it for stream reassembly.
        /// </summary>
        /// <param name="buffer"></param>
        public unsafe void FilterAndStoreData(byte[] buffer)
        {
            // There is one TCP packet per buffer.
            if (buffer?.Length < sizeof(TCPHeader))
            {
                Trace.WriteLine("TCPDecoder: Buffer length smaller than TCP header: Length=[" + (buffer?.Length ?? 0).ToString() + "].", "DEBUG-MACHINA");
                return;
            }

            fixed(byte *ptr = buffer)
            {
                TCPHeader header = *(TCPHeader *)(ptr);

                if (_sourcePort != header.source_port ||
                    _destinationPort != header.destination_port)
                {
                    return;
                }

                // if there is no data, we can discard the packet - this will likely be an ACK, but it shouldnt affect stream processing.
                if (buffer.Length - header.DataOffset == 0)
                {
                    if ((header.flags & (byte)TCPFlags.SYN) == 0)
                    {
                        return;
                    }
                }

                //TEMP debugging
                //Trace.WriteLine("TCPDecoder: TCP Sequence # " + header.SequenceNumber.ToString() + " received with " + (buffer.Length - header.DataOffset).ToString() + " bytes.");

                Packets.Add(buffer);
            }
        }
コード例 #2
0
        private void ParseBits()
        {
            var parser = new Parser(_bits);

            Packets.Add(parser.ParsedPacket);

            Ignored = _bits[parser.Consumed..];
コード例 #3
0
        /// <summary>
        /// Store a captured CAN packet
        /// </summary>
        /// <param name="TimeInMicroseconds">Time registered by PEAK device</param>
        /// <param name="CANId">Id of the packet</param>
        /// <param name="DataLength">Length of data</param>
        /// <param name="Data">Captured data</param>
        /// <returns>Reference to the packet</returns>
        Packet UpdatePackets(ulong TimeInMicroseconds, uint CANId, byte DataLength, byte[] Data)
        {
            Packet packet;

            if (overwriteLastPacket)
            {
                //Update packet list by overwriting last value
                packet = Packets.Find(x => x.Id == CANId);
                if (packet == null)
                {
                    packet = new Packet();
                    Packets.Add(packet);
                }
            }
            else
            {
                //store as new values
                packet = new Packet();
                Packets.Add(packet);
            }
            //add/update values
            packet.Microseconds = TimeInMicroseconds;
            packet.Id           = CANId;
            packet.Length       = DataLength;
            packet.Data         = Data;

            //remember first packet for diff calc
            if (DiffPacket == null)
            {
                AddMessage(Feedback, "First packet received " + PacketToString(packet));
                DiffPacket = Packet.Clone(packet);
            }
            return(packet);
        }
コード例 #4
0
        /// <summary>
        /// For designer only
        /// </summary>
        public SimpleTextCaptureViewModel()
        {
            RefreshCommand = new RelayCommand(Refresh);

            Packets.Add(new PacketViewModel(new byte[] { 1, 2, 3, 4, 5 }));
            Packets.Add(new PacketViewModel(new byte[] { 1, 2, 3, 4, 5 }));
        }
コード例 #5
0
ファイル: MainViewModel.cs プロジェクト: otbr/Sniffer
        public void AddToPackets(PacketType type, byte[] data)
        {
            var packet = new Packet(type, data);

            Application.Current.Dispatcher.Invoke(delegate
            {
                Packets.Add(packet);
            });

            var filterType = (PacketType)(SelectedPacketTypeIndex - 1);

            if (filterType == type || SelectedPacketTypeIndex == 0)
            {
                if (_filterOpCode > 0)
                {
                    if (_filterOpCode == packet.OpCode)
                    {
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            FilteredPackets.Add(packet);
                        });
                    }
                }
                else
                {
                    Application.Current.Dispatcher.Invoke(delegate
                    {
                        FilteredPackets.Add(packet);
                    });
                }
            }
        }
コード例 #6
0
ファイル: NetworkService.cs プロジェクト: jwoff78/MyvarCraft
 public static void EnqueuePacket(Packet p)
 {
     lock (_Locker)
     {
         Packets.Add(p);
     }
 }
コード例 #7
0
ファイル: TelemetryLap.cs プロジェクト: trv/F1Speed
 public void AddPacket(TelemetryPacket packet)
 {
     lock (syncLock)
     {
         Packets.Add(packet);
         //while (_packets.Any() && _packets.First().Distance < 0)
         //    _packets.Remove(_packets.First());
     }
 }
コード例 #8
0
ファイル: OSCBundle.cs プロジェクト: Iam1337/extOSC
        public void AddPacket(IOSCPacket packet)
        {
            if (packet == null)
            {
                throw new NullReferenceException(nameof(packet));
            }

            Packets.Add(packet);
        }
コード例 #9
0
 public void PushPacket(Packet stream)
 {
     if (stream.peer != null)
     {
         lock (Packets)
         {
             Packets.Add(stream);
         }
     }
 }
コード例 #10
0
        private void Refresh()
        {
            //var output = new StringBuilder();
            Packets.Clear();

            //Create the reader
            using (var captureReader = new CaptureFileReader(_captureFilePath))
            {
                var sample = captureReader.Read();

                //Keep track of the last sample so we now how far apart they are
                Sample lastSample = null;

                var buffer = new List <byte>();

                var captureTimerInfo = new CaptureTimerInfo(captureReader.StartTime, captureReader.TicksPerSecond);

                while (sample != null)
                {
                    if (lastSample != null)
                    {
                        //Get the elapsed Ms
                        var elapsedMs = captureTimerInfo.TicksToMilliseconds(sample.Ticks - lastSample.Ticks);

                        if (elapsedMs >= _packetThreshold)
                        {
                            Packets.Add(new PacketViewModel(buffer.ToArray()));
                            buffer.Clear();
                        }
                    }

                    //Add an item to the buffer
                    buffer.Add(sample.Value);

                    //Save this sample for next time
                    lastSample = sample;

                    //Get the next sample
                    sample = captureReader.Read();

                    //See if we have any last bits... (might take this out)
                    if (sample == null && buffer.Any())
                    {
                        Packets.Add(new PacketViewModel(buffer.ToArray()));
                        buffer.Clear();
                    }
                }
            }
        }
コード例 #11
0
        public MessageListResponse(Span <byte> data)
        {
            const int recordSize = 8;

            for (int i = 0; i <= data.Length - recordSize; i += recordSize)
            {
                Packets.Add(new PacketInfo
                {
                    recordType = (PacketTypes)data[i],
                    stationID  = data[i + 1],
                    timestamp  = DateTimeOffset.FromUnixTimeSeconds(BitConverter.ToUInt32(data.Slice(i + 2))),
                    address    = BitConverter.ToUInt16(data.Slice(i + 6))
                });
            }
        }
コード例 #12
0
 private void PrinterControllerService_ReceivedData(
     object sender,
     PrinterControllerReceivedDataEventArgs e)
 {
     TerminalListBox.Dispatcher.Invoke(() =>
     {
         Packets.Add(e.Packet);
         if (VisualTreeHelper.GetChildrenCount(TerminalListBox) > 0)
         {
             Border border             = (Border)VisualTreeHelper.GetChild(TerminalListBox, 0);
             ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
             scrollViewer.ScrollToBottom();
         }
     });
 }
コード例 #13
0
        public void Send(Packet packet)
        {
            var pType = packet.GetType();

            if (NotifiedTypes.Add(pType))
            {
                Packets.Add(new TypeRegistrationPacket()
                {
                    FullTypeName = pType.AssemblyQualifiedName
                });
            }

            Registry.Register(pType);
            Packets.Add(packet);
        }
コード例 #14
0
 public void ParseAllPackets()
 {
     try
     {
         while (HexDigits.Peek() != -1)
         {
             Packet p = ParsePaket();
             Packets.Add(p);
         }
     }
     catch (Exception ex)
     {
         Debug.WriteLine(ex.Message);
     }
 }
コード例 #15
0
ファイル: SpyHelper.cs プロジェクト: deccer/SpyUO
        /// <summary>
        /// Adds packet to list.
        /// </summary>
        /// <param name="packet">Packet to add.</param>
        public void AddPacket(UltimaPacket packet)
        {
            try
            {
                Count++;
                Packets.Add(packet);

                if (OnPacket != null)
                {
                    OnPacket(packet);
                }
            }
            catch (Exception ex)
            {
                App.Window.ShowNotification(NotificationType.Error, ex);
            }
        }
コード例 #16
0
ファイル: NetHandler.cs プロジェクト: direwolf420/Pings
        private static void RegisterPackets()
        {
            Type mpPacketType = typeof(MPPacket);
            IEnumerable <Type> mpPacketTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => !t.IsAbstract && t.IsSubclassOf(mpPacketType));

            foreach (var type in mpPacketTypes)
            {
                MPPacket packet = (MPPacket)Activator.CreateInstance(type);

                int count = Packets.Count;

                Packets.Add(packet);
                if (count > byte.MaxValue)
                {
                    throw new Exception($"Packet limit of {byte.MaxValue} reached!");
                }

                byte id = (byte)count;
                ID[type] = id;
            }
        }
コード例 #17
0
        public FLVFile(Stream stream)
        {
            sourceStream = stream;
            Size         = stream.Length;
            DataStream ds = new DataStream(stream);

            ds.BigEndian = true;
            ds.Unsecure  = true;

            Header = new FLVHeader(ds);
            while (stream.Position < stream.Length)
            {
                BasePacket packet = PacketFactory.ReadPacket(ds);

                if (packet.PacketType == 0 && packet.PayloadSize == 0)
                {
                    if (stream.Position < stream.Length)
                    {
                        Console.WriteLine("Zero data detected at {0}. Integrity is unrecoverable. Dropping the rest of stream ({1} bytes remains).", stream.Position, stream.Length - stream.Position);
                    }

                    break;
                }

                if (packet is MetadataPacket metadataPacket)
                {
                    if (Metadata != null)
                    {
                        Console.WriteLine("Discarding duplicate metadata packet at: {0}", metadataPacket.Offset);
                        continue;
                    }

                    Metadata = metadataPacket;
                }

                Packets.Add(packet);
            }
        }
コード例 #18
0
ファイル: TDSMessage.cs プロジェクト: catmanjan/TDSBridge
        public void BuildMessage(HeaderType messageType, byte[] lPayLoad)
        {
            var packet_size = 4096 - 8;

            Packets.Clear();

            for (var lower = 0; lower < lPayLoad.Length; lower += packet_size)
            {
                var payloadSize = lPayLoad.Length - lower;
                if (payloadSize > packet_size)
                {
                    payloadSize = packet_size;
                }

                // Create new TDS header
                var header = new TDSHeader();
                header.Type = messageType;
                if (lPayLoad.Length - lower <= packet_size)
                {
                    header.StatusBitMask = StatusBitMask.END_OF_MESSAGE;
                }
                else
                {
                    header.StatusBitMask = StatusBitMask.NORMAL;
                }
                header.PayloadSize = payloadSize;

                var payload = new byte[payloadSize];
                Array.Copy(lPayLoad, lower, payload, 0, payloadSize);

                // Create new TDS packet with new TDS header and payload
                var newPacket = new TDSPacket(header.Data, payload, payloadSize);

                // Add packet into message
                Packets.Add(newPacket);
            }
        }
コード例 #19
0
 public PESStream(MPEGTS.Packet pkt)
 {
     Continuity = pkt.Continuity;
     Packets.Add(pkt);
 }
コード例 #20
0
ファイル: DeviceVm.cs プロジェクト: JohanLarsson/WindowBox
 public DeviceVm(Device device)
 {
     Device = device;
     Device.SnoopedPacket += (sender, packet) => Application.Current.Dispatcher.Invoke(() => Packets.Add(packet));
 }
コード例 #21
0
ファイル: TDSMessage.cs プロジェクト: catmanjan/TDSBridge
 public TDSMessage(TDSPacket firtsPacket)
 {
     Packets.Add(firtsPacket);
 }
コード例 #22
0
 public Packet()
 {
     Packets.Add(this);
 }
コード例 #23
0
 public void AddHistory(Packet history)
 {
     Packets.Add(history);
 }
コード例 #24
0
 public Packet(string Name)
 {
     Packets.Add(this);
     name = Name;
 }