private L7Conversation[] ReassembleL7Conversations(String pcapFileName) { var frames = this.GetFramesFromPcap(pcapFileName); var enumerable = frames as Frame[] ?? frames.ToArray(); var originatorFrame = enumerable.First(); var tcpReassembler = new TcpConversationTracker(originatorFrame.SourceEndPoint, originatorFrame.DestinationEndPoint); foreach (var frame in enumerable) { tcpReassembler.ProcessFrame(frame); } var l7Conversations = tcpReassembler.Complete().ToArray(); return(l7Conversations); }
private L7ConversationTrackerBase GetOrCreateL7ReassemblerForFrame(Dictionary <L3L4ConversationKey, L7ConversationTrackerBase> trackers, Frame frame) { var conversationKey = new L3L4ConversationKey(frame); if (!trackers.TryGetValue(conversationKey, out var tracker)) { switch (frame.IpProtocol) { case IPProtocolType.TCP: tracker = new TcpConversationTracker(frame.SourceEndPoint, frame.DestinationEndPoint); break; case IPProtocolType.UDP: tracker = new UdpConversationTracker(frame.SourceEndPoint, frame.DestinationEndPoint); break; default: return(null); } trackers.Add(conversationKey, tracker); } return(tracker); }