Esempio n. 1
0
        private void Item_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
        {
            if (seletedItem != null)
            {
                seletedItem.Selected = false;
            }
            seletedItem = (PacketListItem)sender;
            detailContainer.Children.Clear();
            if (seletedItem.Packet.Data[0] == 0xCA) // Pv Packet
            {
                foreach (var pvPacket in PvPacket.Split(seletedItem.Packet.Data))
                {
                    detailContainer.Children.Add(new PvDetails
                    {
                        Source      = seletedItem.Packet.Source,
                        Destination = seletedItem.Packet.Destination,
                        Command     = $"0x{(int)pvPacket.Command:X2} {pvPacket.Command.ToString()}",
                        Flags       = pvPacket.Flag.ToString(),
                        PayloadSize = pvPacket.Data.Length - 8
                    });
                    detailContainer.Children.Add(new HexViewer {
                        Data = pvPacket.Data
                    });
                }
            }
            else
            {
                detailContainer.Children.Add(new HexViewer {
                    Data = seletedItem.Packet.Data
                });
            }

            seletedItem.Selected = true;
        }
Esempio n. 2
0
        private void Sniffer_ReceivedPacket(NetworkSniffer sniffer, PCapPacket packet)
        {
            if (DataPackets == null)
            {
                DataPackets = new List <PCapPacket>();
            }
            if (packet.PacketType != PCapPacketType.Other && !(packet.IsBaseIpProtocol ||
                                                               (packet.PortSource == 0 && packet.PortDestination == 0) ||
                                                               packet.Data == null ||
                                                               packet.Data.Length == 0))
            {
                lock (DataPacketsLock)
                {
                    DataPackets.Add(packet);
                }

                if (SearchStats.IsSearchPacket(packet))
                {
                    searchStats.Add(packet);
                }

                // Does the new packet match the filter?
                var filter = txtFilter.Text?.ToLower() ?? "";
                if (packet.Source.Contains(filter) ||
                    packet.Destination.Contains(filter) ||
                    packet.PacketType.ToString().ToLower().Contains(filter) ||
                    packet.PacketNumber.ToString().Contains(filter))
                {
                    Avalonia.Threading.Dispatcher.UIThread.Post(() =>
                    {
                        var item = new PacketListItem
                        {
                            PacketNumber      = packet.PacketNumber,
                            PacketSource      = packet.Source,
                            PacketDestination = packet.Destination,
                            PacketProtocol    = packet.PacketType.ToString(),
                            PacketLength      = packet.Data.Length,
                            Packet            = packet,
                            Foreground        = Colorize(packet.Data)
                        };
                        item.Click += Item_Click;
                        scrollPanel.Children.Add(item);
                    });
                }
            }
        }