//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); }
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); }
public static ParsedDataSet ExtractParsedData(CapturePacket packet, out List <Tuple <string, object> > displayfields) { return(ExtractParsedData(packet, out displayfields, false)); }