/// <summary> /// Returns a list of flows /// </summary> /// <param name="packets"></param> /// <returns></returns> /* public static List<Flow2> GenerateFlows(IEnumerable<Packet> packets) * { * SortedList<ConnectionPair, Flow2> flows = new SortedList<ConnectionPair, Flow2>(); * * int id = 0; * * foreach (Packet pkt in packets) * { * ConnectionPair conn = new ConnectionPair(pkt); * ConnectionPair revConn = conn.BackwardDirection; // the reverse direction of the flow * * if (!flows.ContainsKey(conn)) * { * if (!flows.ContainsKey(revConn)) * flows.Add(conn, new Flow2(id++, conn)); * else * conn = revConn; * } * * flows[conn].AddPacket(pkt); * } * * return flows.Values.ToList(); * } */ /// <summary> /// Returns a list of conversations /// was created by hossein /// </summary> /// <param name="packets"></param> /// <returns></returns> public static List <Conversationflow2> GenerateConversations(IEnumerable <Flow2> flows) { SortedList <ConversationPair, Conversationflow2> conversationflows = new SortedList <ConversationPair, Conversationflow2>(); int id = 0; foreach (Flow2 flw in flows) { ConversationPair conn = new ConversationPair(flw); ConversationPair revConn = conn.BackwardDirection; // the reverse direction of the flow if (!conversationflows.ContainsKey(conn)) { if (!conversationflows.ContainsKey(revConn)) { conversationflows.Add(conn, new Conversationflow2(id++, conn)); } else { conn = revConn; } } conversationflows[conn].AddFlow(flw); } return(conversationflows.Values.ToList()); }
/// <summary> /// /// </summary> /// <param name="obj"></param> /// <returns></returns> public int CompareTo(object obj) { if (obj is ConversationPair) { ConversationPair cp = (ConversationPair)obj; if (this.Equals(cp)) { return(0); } else { if (cp.Protocol == this.Protocol) { if (Protocol != Packet.Protocol.UDP) { return(1); } } else { return(this.Protocol == Packet.Protocol.TCP ? 1 : -1); } } } return(-1); }
public Conversationflow2(int id, ConversationPair connection) { this._id = id; this._flows = new List <Flow2>(); this._conn = connection; this.ProcessName = default(string); }
public Conversationflow2(int id, ConversationPair connection, IEnumerable <Flow2> flwList) { this._id = id; this._conn = connection; this._flows = new List <Flow2>(); this._flows.AddRange(flwList); this.ProcessName = default(string); }
public override bool Equals(object obj) { if (!(obj is ConversationPair)) { return(false); } ConversationPair cpObj = (ConversationPair)obj; if (cpObj.SrcIP.AddressFamily.Equals(this.SrcIP.AddressFamily)) { if (cpObj.SrcIP.Equals(this.SrcIP) && cpObj.DestIP.Equals(this.DestIP) && (cpObj.Protocol == this.Protocol)) { return(true); } } return(false); }
public void Dispose() { this._conn = null; // this._pktList.Clear(); // this._pktList = null; }