Esempio n. 1
0
        //private delegate void AddToListDelegate(CapturePacket o);


        private void device_OnPacketArrival(object sender, CaptureEventArgs e)
        {
            _capturedData += e.Packet.Data.Length;
            var raw           = new Raw(e.Packet.Timeval.Date, e.Packet.Data, (LinkLayerType)e.Packet.LinkLayerType);
            var capturePacket = new CapturePacket(raw);

            capturePacket.No = _seed++;
            packetListView1.Add(capturePacket);

            //_pcapWriter.WritePacket(raw.RawData, raw.TimeStamp);
        }
Esempio n. 2
0
        public static ParsedDataSet ExtractParsedData(CapturePacket packet, out List <Tuple <string, object> > displayfields, bool extensive)
        {
            displayfields = new List <Tuple <string, object> >();

            if (packet.Packet.PayloadPacket is IPv4Packet)
            {
                var ipv4 = (IPv4Packet)packet.Packet.PayloadPacket;

                if (ipv4.Protocol == PacketDotNet.ProtocolType.Udp)
                {
                    var udp = (UdpPacket)ipv4.PayloadPacket;

                    // protect against corrupted data with a try read
                    try
                    {
                        var throwaway = udp.DestinationPort + udp.SourcePort + udp.Length + udp.Checksum;
                    }
                    catch (Exception e)
                    {
                        return(null);
                    }

                    if (packet.Protocol == ProtocolType.NTP)
                    {
                        var data = NTP.NTPDataSet.Parse(udp.PayloadData);

                        var refTime = (UInt32)data.ParsedFields.First(f => f.Name == "Ref Timestamp Integer")
                                      .Value;
                        var refFrac = (UInt32)data.ParsedFields.First(f => f.Name == "Ref Timestamp Fraction")
                                      .Value;

                        var OrgTime = (UInt32)data.ParsedFields.First(f => f.Name == "Origin Timestamp Integer")
                                      .Value;
                        var OrgFrac = (UInt32)data.ParsedFields.First(f => f.Name == "Origin Timestamp Fraction")
                                      .Value;

                        var RecTime = (UInt32)data.ParsedFields.First(f => f.Name == "Receive Timestamp Integer")
                                      .Value;
                        var RecFrac = (UInt32)data.ParsedFields.First(f => f.Name == "Receive Timestamp Fraction")
                                      .Value;

                        var transmitTime = (UInt32)data.ParsedFields
                                           .First(f => f.Name == "Transmit Timestamp Integer").Value;
                        var transmitFrac = (UInt32)data.ParsedFields
                                           .First(f => f.Name == "Transmit Timestamp Fraction").Value;

                        var list = new List <ParsedField>();

                        if (refTime != 0)
                        {
                            list.Add(
                                ParsedField.Create("Reference Time", ParseNTPDate(refTime, refFrac).ToString()));
                        }
                        if (OrgTime != 0)
                        {
                            list.Add(ParsedField.Create("Origin Time", ParseNTPDate(OrgTime, OrgFrac).ToString()));
                        }
                        if (RecTime != 0)
                        {
                            list.Add(ParsedField.Create("Receive Time", ParseNTPDate(RecTime, RecFrac).ToString()));
                        }
                        if (transmitTime != 0)
                        {
                            list.Add(ParsedField.Create("Transmit Time",
                                                        ParseNTPDate(transmitTime, transmitFrac).ToString()));
                        }

                        if (OrgTime != 0 && RecTime != 0)
                        {
                            var rec      = TimeSpan.FromSeconds(RecTime);
                            var org      = TimeSpan.FromSeconds(OrgTime);
                            var timeSpan = rec.Subtract(org);
                            list.Add(ParsedField.Create("Seconds difference", timeSpan.ToString()));
                        }

                        foreach (var parsedField in list)
                        {
                            data.ParsedFields.Add(parsedField);
                            displayfields.Add(new Tuple <string, object>(parsedField.Name, parsedField.Value));
                        }

                        return(data);
                    }
                    else if (packet.Protocol == ProtocolType.IPTWP)
                    {
                        return(MainForm.ParseIPTWPData(packet.IPTWPPacket, udp, extensive));
                    }
                }
            }

            return(null);
        }
Esempio n. 3
0
 public static ParsedDataSet ExtractParsedData(CapturePacket packet,
                                               out List <Tuple <string, object> > displayfields)
 {
     return(ExtractParsedData(packet, out displayfields, false));
 }